CPU调度策略
1. MLFQ(Multi-Level Feedback Queue)
- 系统中存在多个就绪队列,每个队列有不同的优先级,高优先级队列中的进程会优先获得 CPU 执行。
- 进程在队列之间可以移动,根据其行为(如 CPU 占用时间、I/O 操作等)动态调整优先级。
1.1. 规则
1.1.1. 优先规则
- 如果进程A的优先级高于进程B,则A先运行
- 如果进程A和进程B的优先级相同,则采用round-robin
1.1.2. 初始队队列
- 新创建的进程进入最高优先级队列
1.1.3. 降级规则
- 每个进程在某个优先级队列中的配额是固定的,如果一个进程用完了其在当前队列中的时间配额,则降低其优先级,移入下一个低优先级队列。
降级规则是为了防止长任务一直占用 CPU,让短任务和交互式任务也有机会运行。
1.1.4. 升级规则
- 如果一个进程在等待 I/O 完成后回到就绪队列,可以将其优先级提高。
- 如果一个进程长时间没有获得 CPU 时间,可以将其优先级提高。
升级规则的目的是为了提高交互式任务的响应速度,并避免长任务被“饿死”。