Skip to content

优先级调度

考情分析

优先级调度在 408 真题中常以选择题形式考查静态/动态优先级、抢占/非抢占的区别。属于 🔥🔥🔥 高频考点。

现实中不是所有任务都同等重要。急诊病人插队优先看病,这谁都能理解。优先级调度就是给每个进程贴上"紧急程度"标签,让更重要的任务先执行。

算法规则

优先级调度:从就绪队列中选择优先级最高的进程分配 CPU。

维度分类
抢占性抢占式 / 非抢占式
优先级变化静态优先级 / 动态优先级

静态优先级 vs 动态优先级

类型说明优缺点
静态优先级进程创建时确定,运行期间不变实现简单,但不灵活
动态优先级运行期间根据情况动态调整灵活,可避免饥饿,但开销大

动态优先级的调整策略:

  • 等待时间越长 → 优先级越高(防止饥饿)
  • 已占用 CPU 时间越长 → 优先级越低

优先级设置的一般原则:

  • 系统进程 > 用户进程
  • 交互型进程 > 非交互型进程
  • I/O 密集型 > CPU 密集型(提高 I/O 设备利用率)

调度示例(非抢占式)

进程到达时间服务时间优先级(数字越小越高)
P1073
P2241
P3414
P4542
时间: 0           7   11  12      16
      ├───────────┤───┤───┤───────┤
           P1      P2  P4    P3

非抢占式:P1 先到先执行,P1 完成后选优先级最高的 P2(优先级1)。

交互可视化

加载可视化中...

优先级反转问题

优先级反转(Priority Inversion):高优先级进程被低优先级进程间接阻塞。

场景:P_L 持有锁 → P_H 到达但需要锁被阻塞 → P_M 到达,优先级高于 P_L,抢占 P_L → P_L 无法释放锁 → P_H 被 P_M 间接阻塞。

解决方案

方案说明
优先级继承P_L 临时继承 P_H 的高优先级,避免被 P_M 抢占
优先级天花板将锁的优先级设为可能访问它的最高优先级

缺点

缺点说明
饥饿低优先级进程可能永远等不到(静态优先级下)
优先级反转上述问题

考研高频考点

  • 🔥🔥🔥 静态优先级 vs 动态优先级的区别
  • 🔥🔥🔥 优先级反转的概念和解决方案
  • 🔥🔥 抢占式 vs 非抢占式优先级调度
  • 🔥 I/O 密集型优先级应高于 CPU 密集型的原因

优先级调度可能饿死低优先级进程。有没有办法兼顾短作业和长等待?下一篇看 HRRN 如何在两者之间找平衡。

真题练习

相关真题(9题)

2026Q45综合题10分

综合题:优先级+时间片轮转调度算法的计算与分析

2025Q26选择题2分

优先级队列:有序链表插入O(n)找位置,选出O(1)取队头

2024Q25选择题2分

抢占式优先级调度:计算调度总次数

2023Q29选择题2分

抢占式优先级调度:计算三个进程的平均周转时间

2020Q26选择题2分

动态优先级:时间片用完降低优先级,防止CPU密集型进程垄断

2018Q24选择题2分

非抢占式优先级调度:含系统开销的平均周转时间计算

2016Q46综合题6分

综合题:动态优先级调度的饥饿问题分析与优先数计算设计

2013Q31选择题2分

I/O密集型优先:I/O比例高的进程优先级应更高

2009Q26选择题2分

动态优先级:时间片用完降低优先级防止垄断CPU