首页/操作系统/02-process/调度算法对比 🔗 在 Obsidian 中打开
操作系统 · 02-process

调度算法对比

重要度 ★★★★★ FCFSSJF时间片轮转优先级调度多级反馈队列
速查
调度算法对比是进程管理的考试核心:CPU利用率 = CPU忙碌时间 / 总时间。三大调度层次(高级/中级/低级)对应不同频率与对象,常见算法在抢占性、饥饿、响应时间上各有取舍。

速查

项目
核心概念调度算法对比
关键公式/性质CPU利用率 = CPU忙碌时间 / 总时间
考试频率⭐⭐⭐⭐⭐

核心概念

一、调度层次

层次调度对象频率功能
高级调度(作业调度)作业低(分钟级)外存→内存
中级调度(内存调度)进程内存↔外存(挂起)
低级调度(进程调度)进程/线程高(毫秒级)CPU分配

二、评价指标

  • CPU利用率 = CPU忙碌时间 / 总时间
  • 系统吞吐量 = 完成作业数 / 总时间
  • 周转时间 = 完成时刻 − 到达时刻
  • 等待时间 = 周转时间 − 执行时间
  • 响应时间 = 首次获得CPU时刻 − 到达时刻

三、各调度算法要点

  • FCFS(先来先服务):按到达顺序执行,非抢占式;存在护航效应(短作业排长作业后等很久)。
  • SJF(短作业优先):选执行时间最短者;非抢占(SJF)/抢占(SRTF);平均等待最优,但长作业可能饥饿。
  • RR(时间片轮转):每个进程获固定时间片,用完切换;适合交互式系统。
  • 优先级调度:按优先级选进程;可分静态/动态;低优先级可能饥饿,可用老化(Aging)解决。
  • MFQ(多级反馈队列):多个就绪队列,优先级递减、时间片递增;综合FCFS/SJF/RR优点,UNIX/Windows广泛采用。

九、实时调度算法

  • EDF(最早截止时间优先):选截止时间最近的实时任务。
  • LLF(最低松弛度优先):松弛度 = 截止时间 − 剩余执行时间 − 当前时间,选松弛度最小者。

关键性质

八、算法综合对比

算法抢占饥饿吞吐量响应时间公平性复杂度
FCFS公平
SJF可能不公
SRTF可能最高最短不公
RR公平
优先级可选可能不公
MFQ可能较公
时间片大小的影响
  • 太大 → 退化为 FCFS,响应时间长
  • 太小 → 上下文切换频繁,CPU开销大
  • 适中 → 响应时间与吞吐量平衡(经验值 10~100ms,切换开销 <1ms)

常见考法

考法解题套路
算法对比从抢占/饥饿/吞吐量/响应时间/公平性/复杂度六维比较
FCFS 护航效应短作业排在长作业后,等待时间极长
SJF 最优性平均等待时间最小(理论上),但长作业饥饿
RR 时间片太大→FCFS;太小→频繁切换
优先级饥饿用老化(Aging)随等待时间提高优先级
MFQ 规则新进程进最高队列;未完成降级;高优先级空才调度低的

易错点

注意
  • SJF 的"最短"指执行时间,不是到达时间
  • SRTF 比非抢占 SJF 平均等待时间更短,但饥饿更严重
  • SJF 主要困难是需要预知执行时间,实际系统多用指数移动平均估算
  • MFQ 中"反馈"指进程未完成则降级到低优先级队列
  • RR 中仅当进程用完时间片或阻塞才切换,短作业可提前完成

核心结论

必背
  1. FCFS 简单公平但护航效应明显;SJF 平均等待最优但长作业饥饿
  2. RR 公平且响应快,时间片选择是关键;SRTF 抢占版等待最优
  3. 优先级调度灵活但可能饥饿,老化技术可缓解
  4. MFQ 综合多种算法优点,且无需预知执行时间,是工业界主流
  5. 评价指标中 CPU利用率、吞吐量、周转/等待/响应时间是计算题常客

记忆卡片

FCFS 和 SJF 的典型问题?
FCFS 有护航效应(短作业排长作业后等很久);SJF 可能饥饿(长作业永远等不到)。
时间片太大或太小的问题?
太大退化为 FCFS 响应长;太小上下文切换频繁,CPU开销大。
MFQ 如何兼顾长短作业?
短作业在高优先级队列用小时间片快速完成;长作业逐级降入低优先级队列用大时间片,减少切换。
如何解决优先级调度的饥饿?
使用老化(Aging):随等待时间增长逐步提升进程优先级。
SJF 的最优性限定?
在所有非抢占算法中平均等待时间最小;SRTF 在所有算法中最小。

交互动画 · 三级调度流水线

频率:低级 > 中级 > 高级 高级调度作业→内存 中级调度挂起/激活 低级调度分配CPU 作业
点击三个层级按钮,观察"作业"在不同频率的调度间流转
高级调度最低频(分钟级),低级调度最高频(毫秒级),直接决定系统性能
三级调度的频率:低级 > 中级 > 高级;粒度(每次调度开销)则相反。

相关知识点

process-and-thread process-synchronization-semaphore

↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。