Operating System
Operating System
PROCESS SCHEDULING IN
OPERATING SYSTEM
Process scheduling is an essential part of a Multiprogramming operating systems. Such operating systems allow more than one
process to be loaded into the executable memory at a time and the loaded process shares the CPU using time multiplexing.
● Job queue − This queue keeps all the processes in the system.
● Ready queue − This queue keeps a set of all processes residing in main memory, ready and waiting to
execute. A new process is always put in this queue.
● Device queues − The processes which are blocked due to unavailability of an I/O device constitute this queue.
Schedulers
Schedulers are special system software which handle process scheduling in various ways. Their main task is to select the jobs to be submitted into the system
and to decide which process to run. Schedulers are of three types −
● Long-Term Scheduler
● Short-Term Scheduler
● Medium-Term Scheduler
The primary objective of the job scheduler is to provide a balanced mix of jobs, such as I/O bound and processor bound. It also controls the degree of
multiprogramming. If the degree of multiprogramming is stable, then the average rate of process creation must be equal to the average departure rate of
processes leaving the system.
On some systems, the long-term scheduler may not be available or minimal. Time-sharing operating systems have no long term scheduler. When a process
changes the state from new to ready, then there is use of long-term scheduler.
Short Term Scheduler
It is also called as CPU scheduler. Its main objective is to increase system performance in accordance with the chosen set of criteria.
It is the change of ready state to running state of the process. CPU scheduler selects a process among the processes that are ready
to execute and allocates CPU to one of them.
Short-term schedulers, also known as dispatchers, make the decision of which process to execute next. Short-term schedulers are
faster than long-term schedulers.
A running process may become suspended if it makes an I/O request. A suspended processes cannot make any progress towards
completion. In this condition, to remove the process from memory and make space for other processes, the suspended process is
moved to the secondary storage. This process is called swapping, and the process is said to be swapped out or rolled out. Swapping
may be necessary to improve the process mix.
Context Switch
A context switch is the mechanism to store and restore the state or context of a CPU in Process Control block so that a
process execution can be resumed from the same point at a later time. Using this technique, a context switcher enables
multiple processes to share a single CPU. Context switching is an essential part of a multitasking operating system
features.
When the scheduler switches the CPU from executing one process to execute another, the state from the current running
process is stored into the process control block. After this, the state for the process to run next is loaded from its own PCB
and used to set the PC, registers, etc. At that point, the second process can start executing.
First Come First Serve (FCFS)
● Jobs are executed on first come, first serve basis.
● It is a non-preemptive, pre-emptive scheduling algorithm.
● Easy to understand and implement.
● Its implementation is based on FIFO queue.
● Poor in performance as average wait time is high.
● Program Counter
● Scheduling information
● Base and limit register value
● Currently used register
● Changed State
● I/O State information
● Accounting information
A Process Scheduler schedules different processes to be assigned to the CPU based on particular scheduling algorithms.
There are six popular process scheduling algorithms which we are going to discuss in this chapter −
These algorithms are either non-preemptive or preemptive. Non-preemptive algorithms are designed so that once a
process enters the running state, it cannot be preempted until it completes its allotted time, whereas the preemptive
scheduling is based on priority where a scheduler may preempt a low priority running process anytime when a high
priority process enters into a ready state.
Priority Based Scheduling
● Priority scheduling is a non-preemptive algorithm and one of the most common scheduling algorithms in batch systems.
● Each process is assigned a priority. Process with highest priority is to be executed first and so on.
● Processes with same priority are executed on first come first served basis.
● Priority can be decided based on memory requirements, time requirements or any other resource requirement.