1962 年,Corbato 首次提出多级反馈队列(Multi-level Feedback Queue, MLFQ),应用于兼容时分共享系统(CTSS)。
多级反馈队列需要解决两方面的问题:
- 优化周转时间,这通过先执行短工作来实现。
- 降低响应时间,像轮转这样的算法降低了响应时间,但周转时间很差。
以下是多级反馈队列(MLFQ)规则:
- 规则 1: 如果 A 的优先级 > B 的优先级,运行 A(不运行B)。
- 规则 2: 如果 A 的优先级 = B 的优先级,轮转运行 A 和 B。
- 规则 3: 工作进入系统时,放在最高优先级(最上层队列)。
- 规则 4: 一旦工作用完了其在某一层中的时间配额(无论中间主动放弃了多少次 CPU),就降低其优先级(移入低一级队列)。
- 规则 5: 经过一段时间 S,就将系统中所有工作重新加入最高优先级队列。