Appearance
调度算法对比模拟器
学了这么多调度算法,各自的优劣光看文字不够直观。这一篇把所有算法放在一起,用同一组数据跑一遍,直接看差异。
调度算法全景对比
| 算法 | 抢占 | 饥饿 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|---|
| FCFS | 非抢占 | 不会 | 简单公平 | 护航效应 | 批处理 |
| SJF | 非抢占 | 会 | 平均等待最优 | 无法预知服务时间 | 短作业为主 |
| SRTF | 抢占 | 会 | 平均周转最优 | 频繁抢占 | — |
| RR | 抢占 | 不会 | 响应快、公平 | 切换开销 | 分时/交互 |
| 优先级 | 两者皆可 | 会(静态) | 灵活 | 优先级反转 | 通用 |
| HRRN | 非抢占 | 不会 | 兼顾长短作业 | 计算开销 | 批处理 |
| MLQ | 两者皆可 | 可能 | 分类管理 | 不够灵活 | — |
| MLFQ | 抢占 | 通常不会 | 综合最优 | 实现复杂 | 通用 |
关键结论速查
- 平均等待时间最短:SJF(非抢占式中)
- 不会饥饿的算法:FCFS、RR、HRRN
- 可能饥饿的算法:SJF、SRTF、优先级调度(静态)
- 适合交互系统:RR、MLFQ
- 需要预知服务时间:SJF、SRTF、HRRN
- 不需要预知服务时间:FCFS、RR、优先级调度、MLFQ
交互模拟器
在下方模拟器中,输入一组进程数据,同时运行多种调度算法并对比结果:
考研高频考点
- 🔥🔥🔥 各算法是否可能导致饥饿
- 🔥🔥🔥 各算法是抢占式还是非抢占式
- 🔥🔥 给定同一组进程数据,不同算法的调度结果对比
- 🔥 各算法的适用场景
前面的调度讨论都假设单个 CPU。当系统有多个处理器时,调度会出现新的问题。下一篇看多处理机调度。