第六十章:多级反馈队列(进阶)
复习
- 时间片和优先级改善响应,却不知道每个任务的真实长度。
TL;DR
- 多级反馈队列依据任务近期行为动态调整优先级。
- 它倾向先服务短小、交互频繁的任务,也必须避免长期任务被饿死。
正文
多级反馈队列准备多个优先级队列。新任务常从高优先级开始;若它很快因等待输入而让出 CPU,说明可能是交互任务,可以继续保持较高优先级;若它反复用完时间片,则逐步下调,给短任务更多机会。
这不是预先知道任务长度,而是根据观察不断修正判断。为了不让计算密集型任务永久沉底,系统会周期性提升等待很久的任务,或限制高优先级任务的连续占用。
一个 CPU 已经能轮流服务很多任务。现代机器通常有多个核心,轮流之外又多了分配问题。
思考题
任务频繁等待输入,为什么常被视为值得优先响应的信号?
小结
- 反馈队列用运行行为近似推测任务类型。
- 防饥饿仍是设计中的必要约束。
思考题答案(仅供参考)
这类任务往往直接对应人的操作;尽快继续运行能减少可感知的等待。
协议
本文采用 CC BY-NC-SA 4.0 协议发布。