Motivation

Since I started learning about computing and computers, one thing always hit me "How this is even possible?". I mean, how do it coordinates all this process, memory, permissions and so on without blowing up? That is a question that isn't fully answered for me yet, but I'm closer than two years ago. One big step forward to answer this's understanding a little bit about how a kernel works, and nothing is better than use the ~~GNU/~~Linux kernel as a object of study. That said, I'm going to register all my research on this topic, using the Understanding the linux kernel book as a guide (as it covers the 2.6 kernel version, the upgrades and changes will be explicit compared) and the classic Modern Operating Systems. So, let's start!

Intro

So, what is a operating system? We can define as a huge software that manages the computer resources to provide a execution environment for another computer programs. The main component of this software is the kernel which is loaded into RAM when the system boots and contains many critical procedures that are needed for the system to operate. So, when a program wants to use a hardware resource, it must issue a request to the OS. The kernel evaluates the request and interacts with the proper hardware components on behalf of the user program.

To enforce this mechanism, the OS rely on the hardware features that forbid user programs to directly interact with low-level hardware, they achieve this introducing at least two execution modes for the CPU: User Mode (non-privileged) and Kernel Mode (privileged).

That's said, we can understand the basic of Unix process, on, you guessed: Processes the chapter.