A process is an active program i.e a program that is under execution. It is more than the program code as it includes the program counter, process stack, registers, program code etc. Compared to this, the program code is only the text section.
A program is not a process by itself as the program is a passive entity, such as file contents, while the process is an active entity containing program counter, resources etc.
A process changes its state as it executes. This state partially depends on the current activity of a process. The different states that a process is in during its execution are explained using the following diagram −
The following are the states −
A process control block is associated with each of the processes. It contains important information about the process it is associated with. Some of this information is as follows −
The following comes under PCB −
There are many scheduling queues that are used to handle processes. When the processes enter the system, they are put into the job queue. The processes that are ready to execute in the main memory are kept in the ready queue. The processes that are waiting for the I/O device are kept in the device queue.
A diagram that represents process scheduling is as follows −
The different schedulers that are used for process scheduling are −
The job scheduler or long-term scheduler selects processes from the storage pool and loads them into memory for execution. The job scheduler must select a careful mixture of I/O bound and CPU bound processes to yield optimum system throughput. If it selects too many CPU bound processes then the I/O devices are idle and if it selects too many I/O bound processes then the processor has nothing to do.
The short-term scheduler selects one of the processes from the ready queue and schedules them for execution. The short-term scheduler executes much more frequently than the long-term scheduler as a process may execute only for a few milliseconds.
The medium-term scheduler swaps out a process from main memory. It can again swap in the process later from the point it stopped executing. This is helpful in reducing the degree of multiprogramming. Swapping is also useful to improve the mix of I/O bound and CPU bound processes in the memory.
Removing a process from the CPU and scheduling another process requires saving the state of the old process and loading the state of the new process. This is known as context switching. The context of a process is stored in the Process Control Block (PCB) and contains the process register information, process state, and memory information.
The dispatcher is responsible for context switching. It saves the context of the old process and gives control of the CPU to the process chosen by the short-term scheduler.