Process Management
and Scheduling
All modern operating systems are able to run several processes at the same time — at least, this
is the impression users get. If a system has only one processor, only one program can run on it at
a given time. In multiprocessor systems, the number of processes that can truly run in parallel is
determined by the number of physical CPUs.
The kernel and the processor create the illusion ofmultitasking— the ability to perform several
operations in parallel — by switching repeatedly between the different applications running on the
system at very rapid intervals. Because the switching intervals are so short, users do not notice the
intervening brief periods of inactivity and gain the impression that the computer is actually doing
several things at once.
This kind of system management gives rise to several issues that the kernel must resolve, the most
important of which are listed below.
❑ Applications must not interfere with each other unless this is expressly desired. For
example, an error in application A must not be propagated to application B. Because Linux
is a multiuser system, it must also be ensured that programs are not able to read or modify
the memory contents of other programs — otherwise, it would be extremely easy to access
the private data of other users.
❑ CPU time must be shared as fairly as possible between the various applications, whereby
some programs are regarded as more important than others.
I deal with the first requirement — memory protection — in Chapter 3. In the present chapter,
I focus my attention on the methods employed by the kernel to share CPU time and to switch
between processes. This twofold task is split into two parts that are performed relatively indepen-
dently of each other.