CPU调度策略

1. MLFQ(Multi-Level Feedback Queue)

  • 系统中存在多个就绪队列,每个队列有不同的优先级,高优先级队列中的进程会优先获得 CPU 执行。
  • 进程在队列之间可以移动,根据其行为(如 CPU 占用时间、I/O 操作等)动态调整优先级。

1.1. 规则

1.1.1. 优先规则

  1. 如果进程A的优先级高于进程B,则A先运行
  2. 如果进程A和进程B的优先级相同,则采用round-robin

1.1.2. 初始队队列

  1. 新创建的进程进入最高优先级队列

1.1.3. 降级规则

  1. 每个进程在某个优先级队列中的配额是固定的,如果一个进程用完了其在当前队列中的时间配额,则降低其优先级,移入下一个低优先级队列。
    降级规则是为了防止长任务一直占用 CPU,让短任务和交互式任务也有机会运行。

1.1.4. 升级规则

  1. 如果一个进程在等待 I/O 完成后回到就绪队列,可以将其优先级提高。
  2. 如果一个进程长时间没有获得 CPU 时间,可以将其优先级提高。
    升级规则的目的是为了提高交互式任务的响应速度,并避免长任务被“饿死”。