磁盘存储器是计算机系统中最重要的存储设备,其中存放了大量的文件。对文件的读,写操作都涉及到了对磁盘的访问。
在了解磁盘的调度算法之前需要了解一下磁盘的访问时间。
读写一个磁盘块的时间的影响因素有: 旋转时间(主轴转动盘面,使得磁头移动到适当的扇区上)寻道时间(制动手臂移动,使得磁头移动到适当的磁道上)实际的数据传输时间 寻道时间Ts:这是指把磁臂(磁头)移动到指定的磁道上所经历的时间。该时间是启动磁臂的时间s与磁头移动n条磁道所花费的时间之和。Ts = m * n +s m是1个常数,与磁盘驱动速度有关。对一般的磁盘,m = 0.2;对高速磁盘,m <= 0.1 磁臂启动时间约为2ms.
磁盘调度的目标就是使磁盘的平均寻道时间最少。
FCFS, First Come First Served
按照磁盘请求的顺序进行调度。 优点是公平和简单。缺点也很明显,因为未对寻道做任何优化,使平均寻道时间可能较长。
SSTF, Shortest Seek Time First
优先调度与当前磁头所在磁道距离最近的磁道。 虽然平均寻道时间比较低,但是不够公平。如果新到达的磁道请求总是比一个在等待的磁道请求近,那么在等待的磁道请求会一直等待下去,也就是出现饥饿现象。具体来说,两端的磁道请求更容易出现饥饿现象。
SCAN,又称电梯算法。
该算法优先考虑磁头当前移动的方向。如果此时磁头正向外面移动,它会优先考虑进行外面的的磁道访问。这个算法依旧参考当前磁道和欲访问磁道间的距离。当一个磁头自里向外进行移动时,首先考虑外面的磁道访问,并且考虑当前磁道和欲访问磁道间的距离,当外面的磁道没有访问请求时,才开始考虑向里移动。这样做就能避免SSTF算法的饥饿情况。 这样向外(内)就一直先向外(内)直到没有向外(内)的请求,类似于电梯的运行,因此也叫做电梯算法。