Prerequisite – CPU Scheduling
You will discover the distinction between preemptive and non-preemptive scheduling in this article. But first, you need to understand preemptive and non-preemptive scheduling before going over the differences.
Preemptive scheduling is used when a process switches from the running state to the ready state or from the waiting state to the ready state. The resources (mainly CPU cycles) are allocated to the process for a limited amount of time and then taken away, and the process is again placed back in the ready queue if that process still has CPU burst time remaining. That process stays in the ready queue till it gets its next chance to execute.
Algorithms based on preemptive scheduling are Round Robin (RR), Shortest Remaining Time First (SRTF), Priority (preemptive version), etc.
Preemptive scheduling has a number of advantages and disadvantages. The following are non-preemptive scheduling’s benefits and drawbacks:
- Because a process may not monopolize the processor, it is a more reliable method.
- Each occurrence prevents the completion of ongoing tasks.
- The average response time is improved.
- Utilizing this method in a multi-programming environment is more advantageous.
- The operating system makes sure that every process using the CPU is using the same amount of CPU time.
- Limited computational resources must be used.
- Suspending the running process, change the context, and dispatch the new incoming process all take more time.
- The low-priority process would have to wait if multiple high-priority processes arrived at the same time.
Non-preemptive Scheduling is used when a process terminates, or a process switches from running to the waiting state. In this scheduling, once the resources (CPU cycles) are allocated to a process, the process holds the CPU till it gets terminated or reaches a waiting state. In the case of non-preemptive scheduling does not interrupt a process running CPU in the middle of the execution. Instead, it waits till the process completes its CPU burst time, and then it can allocate the CPU to another process.
Algorithms based on non-preemptive scheduling are: Shortest Job First (SJF basically non preemptive) and Priority (nonpreemptive version), etc.
Non-preemptive scheduling has both advantages and disadvantages. The following are non-preemptive scheduling’s benefits and drawbacks:
- It has a minimal scheduling burden.
- It is a very easy procedure.
- Less computational resources are used.
- It has a high throughput rate.
- Its response time to the process is super.
- Bugs can cause a computer to freeze up.
Key Differences Between Preemptive and Non-Preemptive Scheduling
- In preemptive scheduling, the CPU is allocated to the processes for a limited time whereas, in Non-preemptive scheduling, the CPU is allocated to the process till it terminates or switches to the waiting state.
- The executing process in preemptive scheduling is interrupted in the middle of execution when a higher priority one comes whereas, the executing process in non-preemptive scheduling is not interrupted in the middle of execution and waits till its execution.
- In Preemptive Scheduling, there is the overhead of switching the process from the ready state to the running state, vise-verse, and maintaining the ready queue. Whereas in the case of non-preemptive scheduling has no overhead of switching the process from running state to ready state.
- In preemptive scheduling, if a high-priorThe process The process non-preemptive low-priority process frequently arrives in the ready queue then the process with low priority has to wait for a long, and it may have to starve. , in non-preemptive scheduling, if CPU is allocated to the process having a larger burst time then the processes with a small burst time may have to starve.
- Preemptive scheduling attains flexibility by allowing the critical processes to access the CPU as they arrive in the ready queue, no matter what process is executing currently. Non-preemptive scheduling is called rigid as even if a critical process enters the ready queue the process running CPU is not disturbed.
- Preemptive Scheduling has to maintain the integrity of shared data that’s why it is cost associative which is not the case with Non-preemptive Scheduling.
|Parameter ||PREEMPTIVE SCHEDULING||NON-PREEMPTIVE SCHEDULING|
|Basic||In this resources(CPU Cycle) are allocated to a process for a limited time.||Once resources(CPU Cycle) are allocated to a process, the process holds it till it completes its burst time or switches to waiting state.|
|Interrupt||Process can be interrupted in between.||Process can not be interrupted until it terminates itself or its time is up.|
|Starvation||If a process having high priority frequently arrives in the ready queue, a low priority process may starve.||If a process with a long burst time is running CPU, then later coming process with less CPU burst time may starve.|
|Overhead||It has overheads of scheduling the processes.||It does not have overheads.|
|Cost||cost associated||no cost associated|
|CPU Utilization||In preemptive scheduling, CPU utilization is high.||It is low in non preemptive scheduling.|
|Waiting Time||Preemptive scheduling waiting time is less.||Non-preemptive scheduling waiting time is high.|
|Response Time||Preemptive scheduling response time is less.||Non-preemptive scheduling response time is high.|
|Decision making ||Decisions are made by the scheduler and are based on priority and time slice allocation ||Decisions are made by the process itself and the OS just follows the process’s instructions|
|Process control ||The OS has greater control over the scheduling of processes ||The OS has less control over the scheduling of processes|
|Overhead ||Higher overhead due to frequent context switching ||Lower overhead since context switching is less frequent|
|Examples||Examples of preemptive scheduling are Round Robin and Shortest Remaining Time First.||Examples of non-preemptive scheduling are First Come First Serve and Shortest Job First.|
Preemptive scheduling is not better than non-preemptive scheduling, and vice versa. It all depends on how a scheduling algorithm increases CPU utilization while decreasing average process waiting time.
Frequently Asked Questions
Q.1: How is priority determined in preemptive scheduling?
Preemptive scheduling systems often assign priority levels to tasks or processes. The priority can be determined based on factors like the nature of the task, its importance, or its deadline. Higher-priority tasks are given precedence and are allowed to execute before lower-priority tasks.
Q.2: What happens in non-preemptive scheduling if a task does not yield the CPU?
In non-preemptive scheduling, if a task does not voluntarily yield the CPU, it can lead to a situation called a “starvation” or “deadlock” where other tasks are unable to execute. To avoid such scenarios, it’s important to ensure that tasks have mechanisms to release the CPU when necessary, such as waiting for I/O operations or setting maximum execution times.