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

服务顺序推导

  1. 当前位置 53,剩余请求:98, 183, 37, 122, 14, 124, 65, 67

    • 最近的是 65(距离 12)→ 服务 65
  2. 当前位置 65,剩余请求:98, 183, 37, 122, 14, 124, 67

    • 最近的是 67(距离 2)→ 服务 67
  3. 当前位置 67,剩余请求:98, 183, 37, 122, 14, 124

    • 最近的是 98(距离 31)→ 服务 98
  4. 当前位置 98,剩余请求:183, 37, 122, 14, 124

    • 最近的是 122(距离 24)→ 服务 122
  5. 当前位置 122,剩余请求:183, 37, 14, 124

    • 最近的是 124(距离 2)→ 服务 124
  6. 当前位置 124,剩余请求:183, 37, 14

    • 最近的是 183(距离 59)→ 服务 183
  7. 当前位置 183,剩余请求:37, 14

    • 最近的是 37(距离 146)→ 服务 37
  8. 当前位置 37,剩余请求:14

    • 最近的是 14(距离 23)→ 服务 14

服务顺序:53 → 65 → 67 → 98 → 122 → 124 → 183 → 37 → 14

计算过程

步骤当前位置目标位置移动距离
15365
26567
36798
498122
5122124
6124183
718337
83714

总寻道距离 = 12 + 2 + 31 + 24 + 2 + 59 + 146 + 23 = 299

平均寻道距离 = 299 / 8 = 37.375

边界与易混淆点

  • SSTF 比 FCFS 效率高,但不公平
  • 饥饿问题:远离磁头的请求可能长期等待
  • 与 SCAN 对比:SCAN 通过单向扫描避免饥饿
  • SSTF 是贪心算法,不一定全局最优
创建于 2026/3/21 更新于 2026/5/27