Open In App

Difference Between Preemptive and Non-Preemptive CPU Scheduling Algorithms

Last Updated : 22 Feb, 2024
Improve
Improve
Like Article
Like
Save
Share
Report

Preemptive scheduling permits a high-priority task to interrupt a running process, When a process transitions from the running to the ready or from the waiting to the ready states, preemptive scheduling is used. Whereas in non-preemptive scheduling, any new process must wait until the running process completes its CPU cycle. In this article, we will discuss what are preemptive and non-preemptive scheduling and their differences.

What is Preemptive Scheduling?

In this, a scheduler may preempt a low-priority running process anytime when a high-priority process enters into a ready state. When scheduling takes from either of the below circumstances it is preemptive scheduling

  • when a process enters the ready state after exiting the running state, as happens when an interrupt happens.
  • When a process enters the ready state of completion as opposed to the waiting state.

When a process transitions from the running to the ready or from the waiting to the ready states, preemptive scheduling is used. The process is given resources (mostly CPU cycles) for a set period before having them removed. If the process still has CPU burst time left, it is then added back to the ready queue. Until it has another opportunity to run, that process remains in the ready queue.

Example of Preemptive Scheduling: Consider there are four processes P0, P1, P2, and P3 uses the preemptive scheduling technique.

Process ID

Arrival Time

Burst Time

P0

3

2

P1

2

4

P2

0

6

P3

1

4

Preemptive Scheduling

Preemptive Scheduling

Advantages of Preemptive Scheduling

  • Because a process might not monopolize the CPU, this approach is more reliable.
  • Every occurrence results in a pause in the progress of ongoing tasks.
  • It raises the mean reaction time.
  • When you apply this technique in a multi-programming environment, the benefits increase.
  • The operating system makes sure that each active process uses an equal quantity of CPU power.

Disadvantages of Preemptive Scheduling

  • Utilising limited computational resources is necessary.
  • It takes longer to suspend the active process, modify the context, and launch the newly arrived process.
  • If more than one high-priority process came at the same time, the low-priority process would have to wait.

What is Non-Preemptive Scheduling?

In this, once a process enters the running state it cannot be preempted until it completes it’s allocation time. When scheduling takes place only under the below circumstances we say that the scheduling scheme is non-preemptive or cooperative.

  • When a process enters the waiting state (due to an I/O request or an attempt to call wait() to end a child process), it changes from the running state.
  • when a process comes to an end.

A process cannot be stopped under non-preemptive scheduling until it ends on its own or runs out of time. A process with a longer burst time on its CPU would cause a process with a shorter burst time to starve.

Example of Non-Preemptive Scheduling: Consider there are four processes P0, P1, P2, and P3 uses non-preemptive scheduling technique.

Process ID

Arival Time

Burst Time

P0

3

2

P1

2

4

P2

0

6

P3

1

4

Non-Preemptive

Non Preemptive Scheduling

Advantages of Non-Preemptive Scheduling

  • It has a minimal scheduling overhead.
  • It’s an extremely easy technique.
  • Less processing power is used.
  • It provides a high throughput.

Disadvantages of Non-Preemptive Scheduling

  • For the procedure, it responds slowly.
  • Errors can cause a machine to freeze.

Difference Between Preemptive and Non-Preemptive Scheduling

Preemptive Scheduling Non-Preemptive Scheduling
The CPU is allocated to the processes for a certain amount of time. The CPU is allocated to the process till it ends its the fewer execution or switches to waiting state.
The executing process here is interrupted in the middle of execution. The executing process here is not interrupted in the middle of execution.
It usually switches the process from the ready state to the running state, vice-versa, and maintains the ready queue. It does not switch the process from running state to a ready state.
Here, if a process with high priority frequently arrives in the ready queue then the process with low priority has to wait for long, and it may have to starve. Here, if CPU is allocated to the process with a larger burst time then the processes with a small burst time may have to starve.
It is quite flexible because the critical processes are allowed to access CPU as they arrive into the ready queue, no matter what process is executing currently. It is rigid as even if a critical process enters the ready queue the process running CPU is not disturbed.
This is cost associative as it has to maintain the integrity of shared data. This is not cost associative.
This scheduling leads to more context switches. This scheduling leads to less context switches compared to preemptive scheduling.
Preemptive scheduling allows a process to be interrupted in the midst of its execution, taking the CPU away and allocating it to another process. Non-preemptive scheduling ensures that a process relinquishes control of the CPU only when it finishes with its current CPU burst.
Preemptive scheduling incurs a cost associated with accessing shared data. Non-preemptive scheduling does not increase the cost.
It also affects the design of the operating system Kernel. It does not affect the design of the OS kernel.
Preemptive scheduling is more complex. Simple, but very inefficient.
Example: Round robin method. Example: First come first serve method.

Preemptive scheduling is better than non-preemptive scheduling or vice-versa can’t be said definitely. It depends on how scheduling minimizes the average waiting time of the processes and maximizes CPU utilization.

Frequently Asked Question on Preemptive and Non-Preemptive Scheduling – FAQs

How does the choice between preemptive and non-preemptive scheduling affect system performance?

When considering CPU utilisation, Non-Preemptive Scheduling is less effective. CPU use is less effective than with preemptive scheduling. There is reduced waiting and response time with proactive scheduling.

When is preemptive scheduling preferred over non-preemptive scheduling?

In real-time systems, preemptive scheduling is utilised. Typically, jobs are assigned varying priorities, with time-sensitive tasks receiving higher priority.

Is non-preemptive scheduling frequently used in a computer?

A computer centre will most likely not employ non-preemptive scheduling because it is essentially similar to a time-sharing system with several users.

What is preemptive priority?

Every time a process with a higher priority enters the waiting queue, the CPU cycle is transferred to the process with the highest priority using a preemptive priority scheduling method.