Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

第六十章:多级反馈队列(进阶)

复习

  • 时间片和优先级改善响应,却不知道每个任务的真实长度。

TL;DR

  • 多级反馈队列依据任务近期行为动态调整优先级。
  • 它倾向先服务短小、交互频繁的任务,也必须避免长期任务被饿死。

正文

  多级反馈队列准备多个优先级队列。新任务常从高优先级开始;若它很快因等待输入而让出 CPU,说明可能是交互任务,可以继续保持较高优先级;若它反复用完时间片,则逐步下调,给短任务更多机会。

  这不是预先知道任务长度,而是根据观察不断修正判断。为了不让计算密集型任务永久沉底,系统会周期性提升等待很久的任务,或限制高优先级任务的连续占用。

  一个 CPU 已经能轮流服务很多任务。现代机器通常有多个核心,轮流之外又多了分配问题。

思考题

任务频繁等待输入,为什么常被视为值得优先响应的信号?

小结

  • 反馈队列用运行行为近似推测任务类型。
  • 防饥饿仍是设计中的必要约束。

思考题答案(仅供参考)

  这类任务往往直接对应人的操作;尽快继续运行能减少可感知的等待。

协议

本文采用 CC BY-NC-SA 4.0 协议发布。