抢占式调度与分抢占式调度的区别

底层原理

CPU 定期接受定时器中断,调用由操作系统指定的中断处理函数,操作系统根据策略调度运行进程。

区别

抢占式调度

抢占式调度是一种调度方法,在该方法中,每个任务都分配有优先级。 一种简单的调度策略是完全按照优先级调度,高优先级任务会抢占低优先级任务的 CPU 时间。 即使较低优先级的任务仍在运行,若有等待中的任务比正在运行的任务优先级高,操作系统会中断低优先级任务,让高优先级任务运行。

什么是非抢占式调度

在这种调度方法中,操作系统不会主动打断进程运行。只有在当前进程终止或者主动让出 CPU 时间,操作系统才会进行任务调度。 这是可用于各种硬件平台的唯一方法。这是因为它不需要抢先式调度之类的专用硬件(例如计时器)。

总结

抢占式调度有一个由定时器中断周期性调用的调度器。它强制当前进程暂停并切换到最高优先级的进程执行。 非抢占式调度并不强迫进程切换。进程必须自愿放弃对内核的控制,以允许其他进程执行。

例子

在非抢占式SJF调度中,一旦将CPU周期分配给进程,进程便将其保持到达到等待状态或终止为止。

考虑以下五个过程,每个过程都有自己独特的突发时间和到达时间。

处理队列 爆发时间 到达时间
P1 6 2
P2 2 5
P3 8 1
P4 3 0
P5 4 4

步骤0)在时间=0时,P4到达并开始执行。

步骤1)在时间=1,过程P3到达。但是,P4仍需要2个执行单元才能完成。它将继续执行。

步骤2)在时间=2,过程P1到达并添加到等待队列中。P4将继续执行。

步骤3)在时间=3,过程P4将完成其执行。比较P3和P1的突发时间。执行过程P1是因为其突发时间比P3少。

步骤4)在时间=4,过程P5到达并添加到等待队列中。P1将继续执行。

步骤5)在时间=5,过程P2到达并添加到等待队列中。P1将继续执行。

步骤6)在时间=9,进程P1将完成其执行。比较P3,P5和P2的突发时间。执行过程P2是因为其突发时间最短。

步骤7)在时间=10,P2正在执行,P3和P5在等待队列中。

步骤8)在时间=11,过程P2将完成其执行。比较P3和P5的突发时间。执行处理P5是因为其突发时间较短。

步骤9)在时间=15,过程P5将完成其执行。

步骤10)在时间=23,过程P3将完成其执行。

优缺点

抢占式调度

优势

  • 抢占式调度方法更加健壮,可以使一个进程无法独占 CPU
  • 每次中断后都重新考虑运行任务的选择
  • 每个事件都会导致正在运行的任务中断
  • 操作系统确保所有正在运行的进程的 CPU 使用率相同。
  • 在这种情况下,CPU 的使用是相同的,即所有正在运行的进程将平均使用 CPU
  • 改善了平均响应时间
  • 将其用于并行环境时,抢占式调度将非常有用

缺陷

  • 有调度开销
  • 调度程序需要更长的时间来挂起正在运行的任务,切换上下文并调度新的传入任务
  • 如果某些高优先级进程连续到达,则低优先级进程需要等待更长的时间

非抢占式调度的优势

优势

  • 提供低调度成本
  • 倾向于提供高吞吐量
  • 概念非常简单
  • 调度所需的计算资源更少

缺陷

  • 错误可能导致机器冻结
  • 实时和优先级调度困难

抢占式调度与分抢占式调度的区别

https://gesrua.xyz/archives/preemptive-scheduling

作者

Gesrua

发布于

2021-11-23

更新于

2021-11-23

许可协议