Linux components

 Each computer system includes a basic set of programs called the operating system.

The most important program in the set is called the kernel. It is loaded into RAM
when the system boots and contains many critical procedures that are needed for the
system to operate. The other programs are less crucial utilities; they can provide a
wide variety of interactive experiences for the user—as well as doing all the jobs the
user bought the computer for—but the essential shape and capabilities of the system
are determined by the kernel. The kernel provides key facilities to everything else on
the system and determines many of the characteristics of higher software. Hence, we
often use the term “operating system” as a synonym for “kernel.”
The operating system must fulfill two main objectives:
• Interact with the hardware components, servicing all low-level programmable
elements included in the hardware platform.
• Provide an execution environment to the applications that run on the computer
system (the so-called user programs).
Some operating systems allow all user programs to directly play with the hardware
components (a typical example is MS-DOS). In contrast, a Unix-like operating sys-
tem hides all low-level details concerning the physical organization of the computer
from applications run by the user. When a program wants to use a hardware
resource, it must issue a request to the operating system. The kernel evaluates the
request and, if it chooses to grant the resource, interacts with the proper hardware
components on behalf of the user program.
To enforce this mechanism, modern operating systems rely on the availability of spe-
cific hardware features that forbid user programs to directly interact with low-level
hardware components or to access arbitrary memory locations. In particular, the
hardware introduces at least two different execution modes for the CPU: a nonprivi-
leged mode for user programs and a privileged mode for the kernel. Unix calls these
User Mode and Kernel Mode, respectively.
In the rest of this chapter, we introduce the basic concepts that have motivated the
design of Unix over the past two decades, as well as Linux and other operating sys-
tems. While the concepts are probably familiar to you as a Linux user, these sections
try to delve into them a bit more deeply than usual to explain the requirements they
place on an operating system kernel. These broad considerations refer to virtually all

Popular Posts