磁盘调度(FCFS/SSTF/SCAN/CSCAN/LOOK/CLOOK)

磁盘访问时间组成与常见调度算法对比,含原子笔记链接与手算例题。

#resource / operating-system #type / synthesis #status / evergreen

[!info] related notes

磁盘调度(FCFS/SSTF/SCAN/CSCAN/LOOK/CLOOK)

速记结论(背就够用)

  • 寻道时间通常是磁盘访问的主要开销
  • SCAN 像电梯;CSCAN 更公平
  • SSTF 平均寻道短,但可能饥饿
  • LOOK/CLOOK 是 SCAN/CSCAN 的改进,不走到边界
  • FCFS 最简单但效率最低

1) 访问时间组成

  • 寻道时间(通常影响最大)
  • 旋转延迟
  • 传输时间

2) 调度算法速查

算法特点优点缺点
[[fcfs-disk-schedulingFCFS]]按请求到达顺序服务公平,无饥饿
[[sstf-disk-schedulingSSTF]]选择最近请求服务平均寻道短
[[scan-disk-schedulingSCAN]]电梯算法,到边界反向无饥饿,效率较高
[[cscan-disk-schedulingCSCAN]]单向扫描,快速回起点更公平的等待时间
[[look-disk-schedulingLOOK]]到最远请求就反向比 SCAN 高效
[[clook-disk-schedulingCLOOK]]到最远请求后跳回最实用,效率高

3) 手算题怎么做

题目一般给:初始磁道、请求序列、磁头初始移动方向(有时给)。

按算法生成服务顺序,然后把相邻两次服务的磁道距离相加:

total = sum(abs(pos[i] - pos[i-1]))

常见坑:

  • SCAN/CSCAN 到不到”边界”:SCAN/CSCAN 往往会走到端点;LOOK/CLOOK 只走到最远请求
  • CSCAN/CLOOK 到头后”回到起点”的那段移动通常也计入寻道距离(按题目要求)

4) 统一例题(对比所有算法)

题目条件

  • 磁头初始位置:53
  • 请求序列:98, 183, 37, 122, 14, 124, 65, 67
  • 磁道范围:0-199
  • 初始方向:向磁道号增大方向(向右)

FCFS

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

总寻道距离:45+85+146+85+108+110+59+2 = 640

SSTF

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

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

SCAN(边界=199)

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

总寻道距离:12+2+31+24+2+59+16+162+23 = 331

CSCAN(边界=199)

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

总寻道距离:12+2+31+24+2+59+16+199+14+23 = 382

LOOK

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

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

CLOOK

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

总寻道距离:12+2+31+24+2+59+169+23 = 322

5) 算法对比总结

算法总寻道距离公平性实用性
FCFS640
SSTF299
SCAN331
CSCAN382
LOOK299
CLOOK322最高
创建于 2026/3/16 更新于 2026/5/27