磁盘移臂调度算法
磁盘移臂调度算法
磁盘移臂调度算法是一种操作系统中用于优化磁盘访问的方法。它的目的是减少磁头移动的距离和时间,从而提高磁盘的性能。
根据不同的优化策略,有不同的磁盘移臂调度算法,例如:
先来先服务(FCFS):按照请求到达的先后顺序依次服务,简单公平,但效率不高。
最短寻道时间优先(SSTF):选择离当前磁头最近的请求服务,减少了平均寻道时间,但可能导致某些请求长时间等待。
扫描(SCAN):磁头按一个方向移动,沿途服务该方向上的所有请求,到达边界后改变方向,类似电梯调度,简单实用且高效,但有时有的请求等待时间可能很长。
循环扫描(CSCAN):磁头按一个方向移动,沿途服务该方向上的所有请求,到达边界后直接跳到另一边界,继续同样的方向移动,避免了扫描算法中改变方向时的等待时间。
N步扫描(N-Step SCAN):将请求队列分成长度为N的子队列,按FCFS算法依次处理这些子队列,而每处理一个队列时又是按SCAN算法,避免了SSTF算法中的粘着现象。
FSCAN:将请求队列分成两个子队列,一是当前所有请求的进程形成的队列,按SCAN算法处理;另一个是在扫描期间新出现的所有请求的进程形成的队列,等待下一次扫描。
假设有以下的磁盘请求序列:
98, 183, 37, 122, 14, 124, 65, 67
假设当前磁头位置为53,移动方向为向外,磁盘柱面数为200。那么不同的算法会有不同的服务顺序和总寻道长度,如下:
FCFS:53 -> 98 -> 183 -> 37 -> 122 -> 14 -> 124 -> 65 -> 67,总寻道长度为640。
SSTF:53 -> 65 -> 67 -> 37 -> 14 -> 98 -> 122 -> 124 -> 183,总寻道长度为236。
SCAN:53 -> 65 -> 67 -> 98 -> 122 -> 124 -> 183 -> 199 -> 37 -> 14,总寻道长度为382。
CSCAN:53 -> 65 -> 67 -> 98 -> 122 -> 124 -> 183 -> 199 -> 0 -> 14 -> 37,总寻道长度为408。
N-Step SCAN(N=4):53 -> (65,67,98,122) -> (124,183,199) -> (37,14) ,总寻道长度为382。
FSCAN:53 -> (65,67,98,122) | (183,37,14,124) ,总寻道长度为304。