| 项目 | 值 |
|---|---|
| 全称 | Shortest Job First(短作业优先) |
| 非抢占版本 | SJF:选择执行时间最短的就绪进程 |
| 抢占版本 | SRTF(最短剩余时间优先):新进程到达时比较剩余时间 |
| 最优性 | 在所有非抢占算法中,SJF 的平均等待时间最小 |
SJF(短作业优先)选择执行时间(服务时间)最短的就绪进程优先执行。
两种版本:
核心性质:
问题:
| 对比项 | 非抢占式SJF | 抢占式SRTF |
|---|---|---|
| 选择标准 | 就绪队列中最短执行时间 | 最短剩余时间 |
| 抢占时机 | 无(运行到完成) | 新进程到达时 |
| 平均等待时间 | 非抢占中最优 | 所有算法中最优 |
| 饥饿问题 | 有(长作业饥饿) | 有(更严重) |
| 实现难度 | 需预知执行时间 | 需预知+动态比较 |
| 考法 | 解题套路 |
|---|---|
| 计算 SJF | 列出就绪队列,每次选执行时间最短的 |
| 计算 SRTF | 新进程到达时比较剩余时间,可能抢占当前进程 |
| SJF vs FCFS | SJF 平均等待时间更短,但可能饥饿 |
| 饥饿问题 | SJF/SRTF 可能导致长作业永远得不到执行 |
| 估算执行时间 | 指数移动平均:$τ(n+1) = α\cdot t(n) + (1-α)\cdotτ(n)$ |
↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。