"Linux is a very dynamic system with constantly
changing computing needs. The representation of the computational
needs of Linux centers around the common abstraction of the
process. Processes can be short-lived (a command executed from the
command line) or long-lived (a network service). For this reason,
the general management of processes and their scheduling is very
important.
"From user-space, processes are represented by process
identifiers (PIDs). From the user's perspective, a PID is a numeric
value that uniquely identifies the process. A PID doesn't change
during the life of a process, but PIDs can be reused after a
process dies, so it's not always ideal to cache them.
"In user-space, you can create processes in any of several ways.
You can execute a program (which results in the creation of a new
process) or, within a program, you can invoke a fork or exec system
call. The fork call results in the creation of a child process,
while an exec call replaces the current process context with the
new program. I discuss each of these methods to understand how they
work."