- Early computer
systems allowed only one program to be executed at a time.
- This program had
complete control of the system and had access to all the system's resources.
- In contrast,
current-day computer systems allow multiple programs to be loaded into memory
and executed concurrently.
- This evolution
required firmer control and more compartmentalization of the various programs;
and these needs resulted in the notion of a process/ which is a program in
- A process is the
unit of work in a modern time-sharing system.
- The more complex the
operating system is, the more it is expected to do on behalf of its users.
Although its main concern is the execution of user programs, it also needs to
take care of various system tasks that are better left outside the kernel
- A system therefore
consists of a collection of processes: operating system processes executing
system code and user processes executing user code.
- Potentially, all these
processes can execute concurrently, with the CPU (or CPUs) multiplexed among
- By switching the CPU
between processes, the operating system can make the computer more productive.
- A question that arises
in discussing operating systems involves what to call all the CPU activities.
- A batch system executes
jobs, whereas a time-shared system has user-programs, or tasks.
- Even on a single-user
system such as Microsoft Windows, a user may be able to run several programs at
one time: a word processor, a Web browser, and an e-mail package.
- And even if the user
can execute only one program at a time, the operating system may need to
support its own internal programmed activities, such as memory management.
- In many respects, all
these activities are similar, so we call all of them processes.
- The term job and process are used almost interchangeably in this text.
- Although we personally prefer the term process, much of
operating-system theory and terminology was developed during a time when the
major activity of operating systems was job processing.
- It would be misleading to avoid the use of commonly accepted terms that include the word job (such as job scheduling) simply because process has superseded job.
- Informally, as
mentioned earlier, a process is a program in execution. A process is more than
the program code, which is sometimes known as the text section.
- It also includes the
current activity, as represented by the value of the program counter and the
contents of the processor's registers.
- A process generally
also includes the process stack, which contains temporary data (such as
function parameters, return addresses, and local variables), and a data
section, which contains global variables.
- A process may also
include a heap, which is memory that is dynamically allocated during process
- The structure of a process in memory is shown in Figure 2.1
Figure 2.1 Process in memory
- We emphasize that a
program by itself is not a process; a program is a passive entity, such
as a file containing a list of instructions stored on disk (often called an
executable file), whereas a process is an active entity, with a program
counter specifying the next instruction to execute and a set of associated
- A program becomes a
process when an executable file is loaded into memory.
- Two common techniques
for loading executable files are double-clicking an icon representing the
executable file and entering the name of the executable file on the command
line (as in prog. exe or a. out.)
- Although two processes may be associated with the same program, they are nevertheless considered two separate execution sequences.
- For instance, several users may be running different copies of the mail program, or the same user may invoke many copies of the Web browser program.
Figure 2.2 Diagram of process state
- Each of these is a
separate process; and although the text sections are equivalent, the data,
heap, and stack sections vary.
- It is also common to
have a process that spawns many processes as it runs.
2.1.2 Process State
- As a process executes,
it changes state. The state of a process is defined in part by the current
activity of that process.
- Each process may be in
one of the following states:
The process is being created.
Instructions are being executed.
The process is waiting for some event to occur (such as an I/0 completion or
reception of a signal).
The process is waiting to be assigned to a processor.
The process has finished execution.
- These names are
arbitrary, and they vary across operating systems.
- The states that they
represent are found on all systems, however.
- Certain operating systems
also more finely delineate process states. It is important to realize that only
one process can be running on any processor at any instant.
- Many processes may be ready and waiting, however. The state diagram corresponding to these states is presented in Figure 2.2.
Figure 2.3 Process Control Block (PCB)
- Each process is
represented in the operating system by a process control block (PCB) -also called a task control block.
- A PCB is shown in
figure 2.3. It contains many pieces of information associated with a specific
process, including these:
- Process state. The state may be new, ready, running, waiting, halted, and so on.
- Program counter. The counter indicates the address of the next instruction to be executed for this process.
Figure 2.4 Diagram showing CPU switch from process to process.
- CPU registers. The registers vary in number and type, depending on the computer architecture.
- They include accumulators, index registers, stack pointers, and general-purpose registers, plus any condition-code information. Along with the program counter, this state information must be saved when an interrupt occurs, to allow the process to be continued correctly afterward (Figure 2.4).
- CPU-scheduling information. This information includes a process priority pointers to scheduling queues, and any other scheduling parameters.
- Memory-management information. This information may include such information as the value of the base and limit registers, the page tables, or the segment tables, depending on the memory system used by the operating system.
- Accounting information. This information includes the amount of CPU and real time used, time limits, account numbers, job or process numbers, and so on.
- I/O status information. This information includes the list of I/O devices allocated to the process, a list of open files, and so on.
- In brief the PCB simply
serves as the repository for any information that may vary from process to
- The process model
discussed so far has implied that a process is a program that performs a single
thread of execution.
- For example, when a
process is running a word-processor program, a single thread of instructions is
- This single thread of
control allows the process to perform only one task at one time.
- The user cannot
simultaneously type in characters and run the spell checker within the same
process, for example.
- Many modern operating
systems have extended the process concept to allow a process to have multiple threads
of execution and thus to perform more than one task at a time.
- On a system that
supports threads, the PCB is expanded to include information for each thread.
- Other changes
throughout the system are also needed to support threads.
- MODERN OPERATING SYSTEMS by Andrew S. Tanenbaum, Second Edition
- The Operating System Concepts by Silberschatz, Galvin, Gagne, 8th Edition
Last modified: Sunday, 19 November 2017, 11:29 AM