多级反馈队列MLFQ

483 阅读1分钟

多级反馈队列的提出是为了优化周转时间和减少响应时间。 但我们通常对进程的完成时间,IO行为一无所知,如何才能运用SJF,轮询等算法呢?MLFQ就此出现。

组成

MLFQ中有许多独立的队列(queue),每个队列有不同的优先级(priority level)。任何时刻,一个工作只能存在于一个队列中。MLFQ总是优先执行优先级高的工作。当同一优先级中有多个工作时,会采用轮询调度。

规则

  1. 如果A优先级>B优先级,运行A(不运行B)
  2. A优先级=B优先级,轮转运行
  3. 工作进入系统时,放在最高优先级
  4. 一旦工作用完了其在某一层中的时间配额(无论中间主动放弃了多少次cpu),就降低其优先级
  5. 经过一段时间S,就将系统中所有工作重新加入最高优先级队列