SSTF 磁盘调度
SSTF 选择距离当前磁头位置最近的请求服务,平均寻道时间短但可能导致饥饿。
#type / concept
#status / evergreen
#resource / operating-system
[!info] related notes
SSTF 磁盘调度
一句话定义
SSTF(Shortest Seek Time First,最短寻道时间优先)选择距离当前磁头位置最近的磁道请求进行服务,类似于 CPU 调度中的 SJF。
核心机制
- 贪心策略:每次选择距离最近的请求
- 平均寻道时间比 FCFS 显著减少
- 可能导致饥饿:远离磁头的请求可能长期得不到服务
- 不保证公平性
计算公式
总寻道距离 = Σ|当前位置 - 最近请求位置|
例题
题目:
- 磁头初始位置:53
- 请求序列:98, 183, 37, 122, 14, 124, 65, 67
- 磁道范围:0-199
服务顺序推导:
-
当前位置 53,剩余请求:98, 183, 37, 122, 14, 124, 65, 67
- 最近的是 65(距离 12)→ 服务 65
-
当前位置 65,剩余请求:98, 183, 37, 122, 14, 124, 67
- 最近的是 67(距离 2)→ 服务 67
-
当前位置 67,剩余请求:98, 183, 37, 122, 14, 124
- 最近的是 98(距离 31)→ 服务 98
-
当前位置 98,剩余请求:183, 37, 122, 14, 124
- 最近的是 122(距离 24)→ 服务 122
-
当前位置 122,剩余请求:183, 37, 14, 124
- 最近的是 124(距离 2)→ 服务 124
-
当前位置 124,剩余请求:183, 37, 14
- 最近的是 183(距离 59)→ 服务 183
-
当前位置 183,剩余请求:37, 14
- 最近的是 37(距离 146)→ 服务 37
-
当前位置 37,剩余请求:14
- 最近的是 14(距离 23)→ 服务 14
服务顺序:53 → 65 → 67 → 98 → 122 → 124 → 183 → 37 → 14
计算过程:
| 步骤 | 当前位置 | 目标位置 | 移动距离 |
|---|---|---|---|
| 1 | 53 | 65 | |
| 2 | 65 | 67 | |
| 3 | 67 | 98 | |
| 4 | 98 | 122 | |
| 5 | 122 | 124 | |
| 6 | 124 | 183 | |
| 7 | 183 | 37 | |
| 8 | 37 | 14 |
总寻道距离 = 12 + 2 + 31 + 24 + 2 + 59 + 146 + 23 = 299
平均寻道距离 = 299 / 8 = 37.375
边界与易混淆点
- SSTF 比 FCFS 效率高,但不公平
- 饥饿问题:远离磁头的请求可能长期等待
- 与 SCAN 对比:SCAN 通过单向扫描避免饥饿
- SSTF 是贪心算法,不一定全局最优