The process model introduced in Chapter 4 assumed that a process was an executing
program with a single thread of control. Many modern operating systems now provide
features enabling a process to contain multiple threads of control. This chapter
introduces many concepts associated with multithreaded computer systems, including a
discussion of the Pthreads API and Java threads. We look at many issues related to
multithreaded programming and how it affects the design of operating systems. Finally,
we explore how several modern operating systems support threads at the kernel level.
A thread is a basic unit of CPU utilization; it comprises a thread ID, a program counter,
a register set, and a stack. It shares with other threads belonging to the same process
its code section, data section, and other operating-system resources, such as open files
and signals. A traditional (or heavyweight) process has a single thread of control. If
the process has multiple threads of control, it can do more than one task at a time.