磁盘调度算法详解:FCFS、SSTF、SCAN、C-SCAN 与 LOOK
一、FCFS 调度(先来先服务)
先来先服务(First-Come, First-Served, FCFS)是最简单的磁盘调度算法,按照请求到达的顺序依次处理,公平但效率低下。
示例:
请求队列柱面序列为:
98, 183, 37, 122, 14, 124, 65, 67
磁头初始位置:53
磁头移动顺序为:
53 → 98 → 183 → 37 → 122 → 14 → 124 → 65 → 67
总磁道移动距离:640
从 122 到 14 再到 124 的大幅跳跃反映了 FCFS 的低效性。若能对请求合理排序,磁头移动将显著减少,性能也会提升。
⸻
二、SSTF 调度(最短寻道时间优先)
SSTF(Shortest Seek Time First)调度每次选择与当前磁头位置距离最近的请求,以最小化寻道时间。
调度顺序(初始位置 53):
最接近的是 65 → 67 → 37 → 14 → 98 → 122 → 124 → 183
总磁道移动距离:236
相比 FCFS,SSTF 显著减少了磁头移动,性能提升明显。但该算法可能导致饥饿现象,即远距离请求长期得不到服务,尤其当近距离请求持续到达时。
进一步优化的顺序(如:53 → 37 → 14 → 65 → 67 → 98 → 122 → 124 → 183)可将磁头移动总距离降至 208。
⸻
三、SCAN 调度(电梯算法)
SCAN 算法将磁臂从一端移动至另一端,在沿途处理所有请求,然后反向继续处理,如电梯般来回移动。
假设磁头初始位置为 53,方向向 0:
处理顺序:
53 → 37 → 14 → 0 → 65 → 67 → 98 → 122 → 124 → 183
优点是请求处理更加有序,但磁头方向反转后才会处理另一侧的请求,可能增加等待时间。
⸻
四、C-SCAN 调度(循环扫描)
C-SCAN(Circular SCAN)与 SCAN 类似,但在到达一端后不反向,而是直接返回起始端再开始新一轮扫描。
特点:
• 磁头始终按一个方向处理请求
• 保证请求的服务间隔更加均衡
C-SCAN 更适合服务分布较均匀的负载场景,减少远端请求等待时间。
⸻
五、LOOK 调度(按需扫描)
与 SCAN/C-SCAN 不同,LOOK 调度不会将磁头移动到磁盘两端,而是仅移动至当前方向上最远的请求位置再折返。
C-LOOK 则是 LOOK 的单向版本,只向一个方向处理请求,之后从最小请求重新开始。
LOOK 和 C-LOOK 避免了不必要的极端移动,进一步提高了磁头效率和调度性能。