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:

  1. Preemptive Priority Scheduling.
  2. 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:

  1. Priority scheduling is simple to understand.
  2. Priority scheduling is a user-friendly algorithm.
  3. Based on priority, processes are executed. So, the process which has the highest priority does not need to wait for more time
  4. 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:

  1. When the multiple processes have the same priorities, then we have to apply another scheduling algorithm.
  2. In priority scheduling, if the system is crashed, then all low-priority processes that are not yet completed will also get lost.
  3. 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

Priority Scheduling in OS

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 

Priority Scheduling in OS

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

Pin It on Pinterest

Share This