Priority Scheduling in OS
Priority Scheduling is a type of CPU Scheduling algorithm which is used for process scheduling. In Priority Scheduling, we assign some priorities to each process. The process which has higher priority among all the processes is assigned with the CPU first.
The priority scheduling is of two types:
- Preemptive Priority Scheduling.
- Non-Preemptive Priority Scheduling.
The priority number, which is assigned to each process, can be different. If the number of priorities which is assigned to each process does not change itself, then such type of priority is known as static priority.
But if the number of priorities is changing itself, then this type of priority is known as Dynamic priority.
Advantages of Priority Scheduling
The advantages of Priority Scheduling are:
- Priority scheduling is simple to understand.
- Priority scheduling is a user-friendly algorithm.
- Based on priority, processes are executed. So, the process which has the highest priority does not need to wait for more time
- Priorities in the Priority scheduling are chosen on the basis of time requirements, memory requirements, and user preferences.
Disadvantages of Priority Scheduling
The disadvantages of Priority Scheduling are:
- When the multiple processes have the same priorities, then we have to apply another scheduling algorithm.
- In priority scheduling, if the system is crashed, then all low-priority processes that are not yet completed will also get lost.
- Another disadvantage of Priority Scheduling is starvation. The problem of starvation is a situation that arises when a process does not get the required resources like CPU because another process is holding the resources, and it waits for a long time for the CPU. ‘Aging’ is a technique that is used to remove the problem of starvation. In aging, the system automatically increases the priorities of the processes, waiting for a long time to complete its execution.
Non-Preemptive Priority Scheduling
In this, the processes are scheduled on the priority basis. Each process is assigned a priority. If the process is scheduled, then it will not leave the CPU until it completes the execution.
In Non-Preemptive Priority Scheduling, the process which has the highest priority is scheduled first, and if the processes have the same priority number, then it will be executed according to the First-Come-First-Serve manner. Priorities are assigned based on the resource requirements, time requirements, and Memory requirements.
Example of Non-Preemptive Priority Scheduling
In the following example, we have 7 processes with process ID P1, P2, P3, P4, P5, P6, and P7. The arrival time and burst time of the processes are given in the following table:
Process ID | Priority | Arrival Time | Burst Time | Completion time | Turnaround time | Waiting time | Response time |
P1 | 1 | 0 | 4 | 4 | 4 | 0 | 0 |
P2 | 5 | 3 | 6 | 23 | 20 | 14 | 17 |
P3 | 2 | 2 | 5 | 9 | 7 | 2 | 4 |
P4 | 4 | 5 | 3 | 17 | 12 | 9 | 14 |
P5 | 6 | 7 | 10 | 33 | 26 | 16 | 23 |
P6 | 3 | 6 | 5 | 14 | 8 | 3 | 9 |
P7 | 9 | 8 | 11 | 44 | 36 | 25 | 33 |
The waiting time and turnaround time are calculated with the help of the following formula:
Waiting Time = Turnaround time – Burst Time
Turnaround Time = Completion time – Arrival time
Process waiting time
P1=4-4=0
P2=20-3=17
P3=7-5=2
P4=12-3=9
P5=26-10=16
P6=8-5=3
P7=36-11=25
Average Waiting Time= 0+17+2+9+16+3+25/7
=72/7
=10.28
Process Turnaround Time
P1=4-0=4
P2=23-3=20
P3=9-2=7
P4=17-5=12
P5=33-7=26
P6=14-6=8
P7=44-8=36
Average Turnaround Time= 4+20+7+12+26+8+36/7
=113/7
= 16.14
Preemptive Priority Scheduling
Preemptive Priority Scheduling is a scheduling algorithm that is used when a process enters the ready queue first. We compare the priority of the process with other processes, present in the ready queue and, which the CPU is executing at that point of time. The process which has the highest priority among all other processes will be assigned with the CPU first.
In preemptive priority scheduling, if a new process enters into the ready queue, having a higher priority than the currently running process. In such a case, the CPU is preempted to the newly arrived process, i.e., the current process processing gets stopped, and the new incoming process begins its execution.
Example of Preemptive Priority Scheduling
In the following example, we have 4 processes with process ID P1, P2, P3, and P4. The arrival time and burst time of the processes are given in the following table. (In this example, we assume that higher the number, higher the priority).
Process ID | Priority | Arrival Time | Burst Time | Completion Time | Turnaround Time | Waiting Time |
P1 | 11 | 0 | 5 | 12 | 12 | 7 |
P2 | 22 | 1 | 4 | 8 | 7 | 3 |
P3 | 33 | 2 | 2 | 4 | 2 | 0 |
P4 | 44 | 4 | 1 | 5 | 1 | 0 |
The waiting time and turnaround time are calculated with the help of the following formula.
Waiting Time = Turnaround time – Burst Time
Turnaround Time = Completion time – Arrival time
At time 0, the process P1 arrived with burst time 5 and started its execution. But when the process P2 came with the priority higher than the P1 process. So, process P1 got preempted with P2. P2 began its execution then. This process continued until all the process finished their execution. In preemptive priority scheduling, CPU executes the process only for a single interval of time so that the higher priority process can never skip.
Process Turnaround Time
P1=12-0=12
P2=8-1=7
P3=4-2=2
P4=5-4=1
Average Turnaround Time= 12+7+2+1/4
=22/4
=5.5
Process Waiting Time
P1=12-5=7
P2=7-4=3
P3=2-2=0
P4=1-1=0
Average Waiting Time=7+3+0+0/4
=10/4
=2.5