This post is a personal “pot-pourri” of some researches I have made on main memory (RAM) and OS initialization steps …
Most CPUs (Intel) start in “real mode”.
This mode can address 20 bits of memory.
Thus, a total of 1MB is available: from 00000H to FFFFFH.
This 1 MB is also known as “conventional memory” (it was considered as a large amount back at that time).
Memory is accessed by putting the right values in the right registers:
This blog post follows the previous one on the Central Processing Unit (CPU).
“CPU, cores, tasks, hyperthreading, multithreading, user threads, multi-cores”
A lot of vocabulary exists when it comes to parallelism in CPUs / OS.
Moreover, we don’t know exactly what is responsible for what:
Hardware ? CPU ? Assembly ? OS kernel code ? User code ?
I tried to get a better understanding and made some illustrations.
A first and naive representation of a CPU could be the following:
The Central Processing Unit (CPU) is the brain / heart of a computer as it executes instructions.
Instructions are coded in a language called “assembly” which is the only one spoken by the CPU.
Each CPU manufacturer has its own version of assembly language.
That’s the reason why one needs to select a specific CPU architecture in order to download the Debian operating system (Figure 1).
‘VPN’ has become a catch-all term nowadays.
What does VPN mean ?
→ A software used to insure privacy on the internet ?
→ A way to connect 2 distant private networks together ?
→ An encryption mechanism ?
→ A tunneling protocol ?
→ A type of router / firewall ?
→ A layer 2 / 3 / 4 protocol ?
I’ll try to shed light on everything above.
In computer networks, a tunneling protocol is a communications protocol that…
This blog post aims to create a big picture of cryptography in the IT world.
In the last blog post, we studied the Internet Protocol and how computers can transmit packets between them.
Now let’s understand two most commonly used upper-layer protocols: UDP and TCP.
UDP is very close to the lower protocol (IP) as it doesn’t add much features / complexity.
It is made to send IP packets without caring if the destination host receives the packets or not; a packet sent with UDP could never be received at all.
Thus one benefit of UDP is the transmission speed; useful for certain cases such as video or audio streaming. …
This blog post aims to create a big picture of the Internet protocol (IP) and the internetwork infrastructure allowing the transmission of IP packets.
The Internet protocol allows two physically distant hosts to exchange (send and receive) data through networks composed of routers.
Exchanged data are encapsulated in “IP packets” which add meta-data in a header field.
The IP is a connectionless (no state between packets) and…
Studying network programming, I understood how to use Linux sockets in order to communicate with other systems/computers. I also studied a lot of higher level technologies built on top of sockets such as http, ssh, ftp.
I wrote this blog post while improving my understanding of Linux kernel networking features, from a socket to a NIC.
I) The Network Interface Controller (NIC)
II) The Network Interface
III) From socket to NIC
IV) Network interface functions
According to Wikipedia; a NIC is a hardware component connecting a computer to a computer network.
Images are at the source of nearly every media. Therefore, I think it is interesting to get a glimpse of how images are stored on a computer. I have decided to get a tour of the most famous image format : jpg (or “jpeg”, as you may prefer).
Before diving deeper into jpeg, let’s first understand how image values are stored. An image is a set of pixels; a pixel is the smallest unit composing our image.
Each pixel carries :
I write my own computer science “cheatsheets” and “big pictures” as posts here. I mainly do it for myself but it may benefit others