📌  相关文章
📜  抢占式和非抢占式调度

📅  最后修改于: 2021-09-28 09:31:51             🧑  作者: Mango

先决条件 – CPU 调度

1.抢占式调度:
当进程从运行状态切换到就绪状态或从等待状态切换到就绪状态时使用抢占式调度。资源(主要是 CPU 周期)在有限的时间内分配给进程,然后被拿走,如果该进程仍有剩余的 CPU 突发时间,则该进程将再次放回就绪队列中。该进程保持在就绪队列中,直到它有下一次执行的机会。

基于抢占式调度的算法有:Round Robin(RR)、Shortest Remaining Time First(SRTF)、Priority(抢占版)等。

2. 非抢占式调度:
当进程终止或进程从运行状态切换到等待状态时使用非抢占式调度。在这种调度中,一旦将资源(CPU 周期)分配给进程,该进程就会持有 CPU,直到它被终止或达到等待状态。在非抢占式调度的情况下,不会在执行过程中中断运行 CPU 的进程。相反,它会等到进程完成其 CPU 突发时间,然后才能将 CPU 分配给另一个进程。

基于非抢占式调度的算法有:Shortest Job First(SJF基本非抢占式)和Priority(非抢占式版本)等。

抢占式和非抢占式调度之间的主要区别:

  1. 在抢占式调度中,CPU 在有限的时间内分配给进程,而在非抢占式调度中,CPU 分配给进程,直到它终止或切换到等待状态。
  2. 抢占式调度中的执行进程在执行过程中在较高优先级到来时被中断,而非抢占式调度中的执行进程在执行中途不中断,等待其执行。
  3. 在抢占式调度中,存在将进程从就绪状态切换到运行状态,反之亦然,以及维护就绪队列的开销。而在非抢占式调度的情况下,没有将进程从运行状态切换到就绪状态的开销。
  4. 在抢占式调度中,如果一个高优先级的进程频繁地到达就绪队列,那么低优先级的进程必须等待很长时间,它可能不得不饿死。另一方面,在非抢占式调度中,如果将CPU分配给突发时间较大的进程,那么突发时间小的进程可能会饿死。
  5. 抢占式调度通过允许关键进程在到达就绪队列时访问 CPU 来获得灵活性,无论当前正在执行什么进程。非抢占式调度称为刚性调度,因为即使关键进程进入就绪队列,运行 CPU 的进程也不会受到干扰。
  6. 抢占式调度必须维护共享数据的完整性,这就是为什么它具有成本关联性,而非抢占式调度并非如此。

对比图:

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, low priority process may starve. If a process with 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.
Flexibility flexible rigid
Cost cost associated no cost associated
CPU Utilization In preemptive scheduling, CPU utilization is high. It is low in non preemptive scheduling.
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.