优先级调度算法:抢占式、非抢占式示例

什么是优先级调度?

优先级调度是一种基于优先级的进程调度方法。在此算法中,调度程序根据优先级选择要执行的任务。

具有较高优先级的进程应首先执行,而具有相同优先级的作业则按轮转或先来先服务(FCFS)进行。优先级取决于内存需求、时间需求等。

优先级调度的类型

优先级调度分为两种主要类型

抢占式调度

在抢占式调度中,任务通常会分配其优先级。有时,即使较低优先级的任务仍在运行,也必须在较低优先级任务之前运行具有较高优先级的任务。较低优先级的任务会暂停一段时间,并在较高优先级的任务完成执行后恢复。

非抢占式调度

在此类调度方法中,CPU 已分配给特定进程。保持 CPU 繁忙的进程要么通过上下文切换,要么通过终止来释放 CPU。这是唯一可用于各种硬件平台的用例。因为它不需要像抢占式调度那样需要特殊硬件(例如,计时器)。

优先级调度的特点

  • 一种根据优先级调度进程的 CPU 算法。
  • 它用于操作系统执行批处理作业。
  • 如果两个具有相同优先级的作业处于就绪状态,则它按先来先服务原则工作。
  • 在优先级调度中,为每个进程分配一个数字,表示其优先级级别。
  • 数字越小,优先级越高。
  • 在此类调度算法中,如果一个新进程到达,并且其优先级高于当前正在运行的进程,则当前正在运行的进程将被抢占。

优先级调度示例

考虑以下五个进程 P1 到 P5。每个进程都有其唯一的优先级、突发时间(burst time)和到达时间。

过程 优先级 执行时间 到达时间
P1 1 4 0
P2 2 3 0
P3 1 7 6
P4 3 4 11
P5 2 2 12

步骤 0) 在时间=0 时,进程 P1 和 P2 到达。P1 的优先级高于 P2。执行以进程 P1 开始,其突发时间为 4。

Priority Scheduling

步骤 1) 在时间=1 时,没有新进程到达。继续执行 P1。

Priority Scheduling

步骤 2) 在时间=2 时,没有新进程到达,因此您可以继续执行 P1。P2 位于等待队列中。

Priority Scheduling

步骤 3) 在时间=3 时,没有新进程到达,因此您可以继续执行 P1。P2 进程仍在等待队列中。

Priority Scheduling

步骤 4) 在时间=4 时,P1 已完成执行。P2 开始执行。

Priority Scheduling

步骤 5) 在时间=5 时,没有新进程到达,因此我们继续执行 P2。

Priority Scheduling

步骤 6) 在时间=6 时,P3 到达。P3 的优先级(1)高于 P2 的优先级(2)。P2 被抢占,P3 开始执行。

过程 优先级 执行时间 到达时间
P1 1 4 0
P2 2 3 个待处理中 1 个 0
P3 1 7 6
P4 3 4 11
P5 2 2 12

Priority Scheduling

步骤 7) 在时间=7 时,没有新进程到达,因此我们继续执行 P3。P2 位于等待队列中。

Priority Scheduling

步骤 8) 在时间=8 时,没有新进程到达,因此您可以继续执行 P3。

Priority Scheduling

步骤 9) 在时间=9 时,没有新进程到达,因此您可以继续执行 P3。

Priority Scheduling

步骤 10) 在时间间隔 10 时,没有新进程到达,因此我们继续执行 P3。

Priority Scheduling

步骤 11) 在时间=11 时,P4 到达,优先级为 4。P3 的优先级更高,因此继续执行。

过程 优先级 执行时间 到达时间
P1 1 4 0
P2 2 3 个待处理中 1 个 0
P3 1 7 个待处理中 2 个 6
P4 3 4 11
P5 2 2 12

Priority Scheduling

步骤 12) 在时间=12 时,P5 到达。P3 的优先级更高,因此继续执行。

Priority Scheduling

步骤 13) 在时间=13 时,P3 完成执行。就绪队列中有 P2、P4、P5。P2 和 P5 的优先级相同。P2 的到达时间早于 P5。因此 P2 开始执行。

过程 优先级 执行时间 到达时间
P1 1 4 0
P2 2 3 个待处理中 1 个 0
P3 1 7 6
P4 3 4 11
P5 2 2 12

Priority Scheduling

步骤 14) 在时间=14 时,P2 进程已完成执行。P4 和 P5 处于等待状态。P5 的优先级最高,开始执行。

Priority Scheduling

步骤 15) 在时间=15 时,P5 继续执行。

Priority Scheduling

步骤 16) 在时间=16 时,P5 完成执行。P4 是最后一个剩余进程。它开始执行。

Priority Scheduling

步骤 17) 在时间=20 时,P5 已完成执行,没有剩余进程。

Priority Scheduling

步骤 18) 让我们计算上述示例的平均等待时间。

等待时间 = 开始时间 - 到达时间 + 等待下一个突发的时间

P1 = o - o = o
P2 =4 - o + 7 =11	
P3= 6-6=0
P4= 16-11=5
Average Waiting time = (0+11+0+5+2)/5 = 18/5= 3.6

优先级调度的优点

以下是使用优先级调度方法的优点/好处。

  • 易于使用的调度方法
  • 进程根据优先级执行,因此高优先级无需等待太久,从而节省了时间。
  • 此方法提供了一种良好的机制,可以精确定义每个进程的相对重要性。
  • 适用于具有不断变化的时间和资源要求的应用程序。

优先级调度的缺点

以下是优先级调度的缺点/弊端。

  • 如果系统最终崩溃,所有低优先级进程都将丢失。
  • 如果高优先级进程占用大量 CPU 时间,则低优先级进程可能会饿死,并被无限期推迟。
  • 此调度算法可能会使某些低优先级进程无限期等待。
  • 当一个进程准备好运行时,但由于当前有其他进程正在运行而必须等待 CPU 时,该进程将被阻塞。
  • 如果新的更高优先级进程不断进入就绪队列,那么处于等待状态的进程可能需要等待很长时间。

摘要

  • 优先级调度是一种基于优先级的进程调度方法。在此算法中,调度程序根据优先级选择要执行的任务。
  • 在优先级抢占式调度中,任务通常会分配其优先级。
  • 在优先级非抢占式调度方法中,CPU 已分配给特定进程。
  • 进程根据优先级执行,因此高优先级无需等待太久,从而节省了时间。
  • 如果高优先级进程占用大量 CPU 时间,则低优先级进程可能会饿死,并被无限期推迟。