文件系统笔记四、磁盘调度算法
引言:在多道程序设计的计算机系统中,各个进程可能会不断对磁盘提出读/写请求。有时候进程发送请求的速度比磁盘响应的还要快,因此我们有必要为每个磁盘设备建立一个等待队列,合理进行磁盘调度。本文将回顾影响磁盘读写时间的三个因素,并介绍几种常见的调度算法(FCFS、STF、SSF、 ES、ESLA、OWES)。
一、影响磁盘读写时间的主要因素
影响磁盘读写时间的主要因素有寻道时间、旋转延迟和传输时间。总平均存取时间Ta可以表示为:Ta = Ts + Tr + Tt。
- 1)、 寻找时间Ts :指的是把读写磁头移动到要求的磁道位置所需要的时间。实际的寻道时间,依赖于收到读写请求时读写磁头所处的位置和磁头需要移动的距离。这个时间除跨越n条磁道的时间外,还包括启动磁臂的时间s,即:Ts = m * n + s。式中,m是与磁盘驱动器速度有关的常数,约为0.2ms,磁臂的启动时间约为2ms。
平均寻道时间 :由于没有办法在收到访问要求前获取读写磁头所处的位置和磁头需要移动的距离,因此我们常使用平均寻道时间这个概念。平均寻道时间数值依赖于磁盘驱动器组件的物理尺寸和磁头进行加速和减速的快慢程度。通常在8ms ~ 20ms之间,并且近年来并没有多大变化
2)、旋转延迟Tr :指的是在磁头到达所要求的磁道位置后,等待所要求的扇面旋转到磁头下方的平均时间。若平均来讲,所需要的扇面距磁头半圈远的距离,旋转延迟通常为旋转时间的一半。当前磁盘驱动器旋转速度所处的范围为每分钟3500转到10000转,因此旋转延迟的范围在3ms ~ 8.7ms内。 (以1w转为例,1w转耗时6wms, 1转耗时3ms, 其旋转延迟为3ms)
3) 传输时间Tt :从磁盘读出或向磁盘写入数据所经历的时间,这个时间取决于每次所读/写的字节数b和磁盘的旋转速度:Tt = b / (r * N)。式中,r为磁盘每秒钟的转数;N为一个磁道上的字节数。
虽然这里给出了平均存取时间的公式,但是这个平均值是没有太大实际意义的。因为在上述3个因素中,寻道时间居于支配地位,且其为软件开发人员可控因素。为了提高磁盘的读写效率,需要降低磁盘的寻道时间,实现的手段则是磁盘调度。磁盘调度算法主要有以下几种:FCFS、STF、SSF、 ES、ESLA、OWES。
在《操作系统之哲学原理》这本书中,讲寻道时间、旋转延迟、数据传输这三个影响磁盘I/O操作的因素中,寻道耗费时间居于支配地位,故提高磁盘的读写效率,需要降低寻道时间,相关的磁盘调度算法也是围绕