(闪电系列)操作系统期末闪学 | 处理机调度算法
💡导读:期末考试临近,还在为操作系统的处理机调度算法头秃?本文是「闪电系列」期末速成指南,涵盖三级调度层次、8大核心算法对比、必考计算公式及经典例题详解。内容精炼、表格清晰、计算过程完整,助你高效复习,稳拿高分!建议收藏+背诵,考前必看!
一、处理机三级调度层次
1. 高级调度(作业调度)
- 调度频率最低
- 适用:仅多道批处理系统,分时、实时系统无
- 功能:从外存后备队列中选择作业调入内存,创建进程、分配资源,放入就绪队列
- 核心问题:接纳多少作业?接纳哪些作业?
2. 低级调度(进程调度)
- 调度频率最高
- 适用:多道批处理、分时、实时系统
- 功能:从就绪队列中选择进程,将CPU分配给该进程
3. 中级调度(中程调度)
- 功能:将暂时无法运行的进程调至外存(挂起状态);进程具备运行条件且内存空闲时,重新调入内存转为就绪状态,挂入就绪队列
📌理解提示:高级调度决定“谁进内存”,中级调度决定“谁暂离内存”,低级调度决定“谁用CPU”。三者协同,实现系统资源的高效利用。
二、调度算法分类与适用场景
| 算法名称 | 核心特点 | 适用范围 |
|---|---|---|
| 先来先服务(FCFS) | 利于长进程,不利于短进程 | 作业调度、进程调度 |
| 短作业优先(SJF) | 优先调度运行时间短的进程 | 作业调度、进程调度 |
| 高优先权优先调度 | 支持动态优先权 | 作业调度、进程调度 |
| 高响应比优先(HRRN) | 兼顾短作业与等待时间 | 作业调度、进程调度 |
| 轮转调度算法(RR) | 按时间片轮流执行 | 分时系统 |
| 多级反馈队列算法 | 多队列分级调度 | 分时系统 |
| 最早截止时间优先(EDF) | 按截止时间先后调度 | 实时系统 |
| 最低松弛度优先(LLF) | 按松弛度大小调度 | 实时系统 |
背诵速记
- 三级调度:高级(作业)、中级、低级(进程)
- 分时系统:时间片轮转、多级反馈队列
- 实时系统:最早截止时间优先、最低松弛度优先
- 通用类(作业/进程均可用):先来先服务、短作业优先、高优先权优先、高响应比优先
✍️记忆口诀:“高作低进中挂起,分时轮转反馈队,实时截止松弛度,通用四法要牢记。”
三、核心计算公式
- 周转时间=完成时间−到达时间周转时间 = 完成时间 - 到达时间周转时间=完成时间−到达时间(进程从到达系统到完成的总时长)
- 带权周转时间=周转时间服务时间带权周转时间 = \frac{周转时间}{服务时间}带权周转时间=服务时间周转时间
- 平均周转时间=∑所有进程周转时间进程总数平均周转时间 = \frac{\sum 所有进程周转时间}{进程总数}平均周转时间=进程总数∑所有进程周转时间
- 平均带权周转时间=∑所有进程带权周转时间进程总数平均带权周转时间 = \frac{\sum 所有进程带权周转时间}{进程总数}平均带权周转时间=进程总数∑所有进程带权周转时间
- 高响应比=等待时间+服务时间服务时间=1+等待时间服务时间高响应比 = \frac{等待时间 + 服务时间}{服务时间} = 1 + \frac{等待时间}{服务时间}高响应比=服务时间等待时间+服务时间=1+服务时间等待时间
⚠️注意:带权周转时间反映调度公平性,值越接近1越理想;平均带权周转时间是评价算法性能的关键指标。
四、经典调度算法计算例题
已知条件:5个进程的到达时间与服务时间如下,忽略I/O与其他调度开销。
| 进程 | 到达时间 | 服务时间 |
|---|---|---|
| A | 0 | 3 |
| B | 2 | 6 |
| C | 4 | 4 |
| D | 6 | 5 |
| E | 8 | 2 |
1. 先来先服务(FCFS)
规则:最早进入就绪队列的进程优先执行
| 进程 | 到达时间 | 服务时间 | 开始执行 | 完成时间 | 周转时间 | 带权周转时间 |
|---|---|---|---|---|---|---|
| A | 0 | 3 | 0 | 3 | 3 | 1 |
| B | 2 | 6 | 3 | 9 | 7 | 1.17 |
| C | 4 | 4 | 9 | 13 | 9 | 2.25 |
| D | 6 | 5 | 13 | 18 | 12 | 2.4 |
| E | 8 | 2 | 18 | 20 | 12 | 6 |
平均周转时间=3+7+9+12+125=8.6平均周转时间 = \frac{3+7+9+12+12}{5} = 8.6平均周转时间=53+7+9+12+12=8.6
平均带权周转时间=1+1.17+2.25+2.4+65=2.56平均带权周转时间 = \frac{1+1.17+2.25+2.4+6}{5} = 2.56平均带权周转时间=51+1.17+2.25+2.4+6=2.56
2. 短作业优先(SJF)- 非抢占式
规则:每次选择当前就绪队列中运行时间最短的进程执行
| 进程 | 到达时间 | 服务时间 | 开始执行 | 完成时间 | 周转时间 | 带权周转时间 |
|---|---|---|---|---|---|---|
| A | 0 | 3 | 0 | 3 | 3 | 1 |
| B | 2 | 6 | 3 | 9 | 7 | 1.17 |
| C | 4 | 4 | 11 | 15 | 11 | 2.75 |
| D | 6 | 5 | 15 | 20 | 14 | 2.8 |
| E | 8 | 2 | 9 | 11 | 3 | 1.5 |
平均周转时间=3+7+11+14+35=7.6平均周转时间 = \frac{3+7+11+14+3}{5} = 7.6平均周转时间=53+7+11+14+3=7.6
平均带权周转时间=1+1.17+2.75+2.8+1.55=1.84平均带权周转时间 = \frac{1+1.17+2.75+2.8+1.5}{5} = 1.84平均带权周转时间=51+1.17+2.75+2.8+1.5=1.84
3. 短作业优先(SJF)- 抢占式(最短剩余时间优先)
规则:新就绪进程的剩余运行时间若短于当前运行进程的剩余时间,则抢占CPU
| 进程 | 到达时间 | 服务时间 | 开始执行 | 完成时间 | 周转时间 | 带权周转时间 |
|---|---|---|---|---|---|---|
| A | 0 | 3 | 0 | 3 | 3 | 1 |
| B | 2 | 6 | 3 | 15 | 13 | 2.17 |
| C | 4 | 4 | 4 | 8 | 4 | 1 |
| D | 6 | 5 | 15 | 20 | 14 | 2.8 |
| E | 8 | 2 | 8 | 10 | 2 | 1 |
平均周转时间=3+13+4+14+25=7.2平均周转时间 = \frac{3+13+4+14+2}{5} = 7.2平均周转时间=53+13+4+14+2=7.2
平均带权周转时间=1+2.17+1+2.8+15=1.59平均带权周转时间 = \frac{1+2.17+1+2.8+1}{5} = 1.59平均带权周转时间=51+2.17+1+2.8+1=1.59
4. 高响应比优先(HRRN)
规则:每次选择当前就绪队列中响应比最高的进程执行
| 进程 | 到达时间 | 服务时间 | 开始执行 | 完成时间 | 周转时间 | 带权周转时间 |
|---|---|---|---|---|---|---|
| A | 0 | 3 | 0 | 3 | 3 | 1 |
| B | 2 | 6 | 3 | 9 | 7 | 1.17 |
| C | 4 | 4 | 9 | 13 | 9 | 2.25 |
| D | 6 | 5 | 15 | 20 | 14 | 2.8 |
| E | 8 | 2 | 13 | 15 | 7 | 3.5 |
平均周转时间=3+7+9+14+75=8平均周转时间 = \frac{3+7+9+14+7}{5} = 8平均周转时间=53+7+9+14+7=8
平均带权周转时间=1+1.17+2.25+2.8+3.55=2.14平均带权周转时间 = \frac{1+1.17+2.25+2.8+3.5}{5} = 2.14平均带权周转时间=51+1.17+2.25+2.8+3.5=2.14
📝 总结与备考建议
| 算法 | 平均周转时间 | 平均带权周转时间 | 优势 | 劣势 |
|---|---|---|---|---|
| FCFS | 8.6 | 2.56 | 简单公平 | 对短作业极不友好 |
| SJF(非抢占) | 7.6 | 1.84 | 平均性能较好 | 可能饥饿长作业 |
| SJF(抢占) | 7.2 | 1.59 | 最优平均性能 | 实现复杂,频繁切换 |
| HRRN | 8.0 | 2.14 | 兼顾长短作业 | 需动态计算响应比 |
✅考试重点提醒:
- 务必掌握四种算法的手动推演过程,尤其是抢占式SJF的时间线划分;
- 高响应比的计算是高频考点,注意等待时间=当前时刻−到达时间等待时间 = 当前时刻 - 到达时间等待时间=当前时刻−到达时间;
- 区分“非抢占”与“抢占”SJF的执行顺序差异;
- 背诵速记部分可直接用于简答题或选择题。
🔥闪电系列·期末闪学| 用最少的字,拿最多的分!
如果这篇对你有帮助,欢迎点赞👍、收藏⭐、关注🔔三连支持!
更多操作系统速成内容,敬请期待《内存管理》《文件管理》《死锁》等后续篇章!
💬评论区互动:你在做调度算法题时最容易错在哪一步?欢迎留言交流,一起避坑!