| 项目 | 值 |
|---|---|
| 定义 | 多个就绪队列,各队列优先级和时间片不同 |
| 核心思想 | 让短作业优先执行,长作业逐级降低优先级 |
| 队列间规则 | 高优先级队列优先,同队列内用 FCFS+RR |
| 降级条件 | 进程在时间片内未完成,降到下一级队列 |
多级反馈队列(MLFQ)是最通用、最复杂的调度算法之一。它使用多个就绪队列,每个队列有不同的优先级和时间片大小。
规则:
典型配置(3 级队列):
| 队列 | 优先级 | 时间片 | 调度方式 |
|---|---|---|---|
| Q1 | 最高 | 最短(如 8ms) | RR |
| Q2 | 中等 | 中等(如 16ms) | RR |
| Q3 | 最低 | 最长(如 32ms) | FCFS |
| 性质 | 说明 |
|---|---|
| 短作业友好 | 短作业在高优先级队列完成,响应快 |
| 长作业公平 | 最终在最低队列用 FCFS,不会饿死 |
| I/O 密集型友好 | I/O 阻塞后回到高优先级队列 |
| 是否抢占 | 是(高优先级可抢占低优先级) |
| 是否饥饿 | 不会(最低队列有 FCFS 保底) |
| 考法 | 解题套路 |
|---|---|
| 队列降级 | 进程时间片用完 → 降到下一级队列 |
| 新进程去哪 | 新进程进入最高优先级队列 |
| I/O 阻塞后去哪 | I/O 完成后回到最高优先级队列(重新开始) |
| 是否饥饿 | 不会饥饿——最低队列用 FCFS 保底 |
| 与 SJF 的关系 | MLFQ 近似实现了 SJF 的效果(短作业在高优先级队列完成) |
↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。