磁盘调度算法 - wolai 笔记

1. 一次磁盘读写操作需要的时间

1.1寻道时间Ts

在读写数据前,将磁头移动到指定磁道所花的时间
  • 启动磁头臂是需要时间的。假设耗时为s;
  • 移动磁头也是需要时间的。假设磁头均匀移动,每跨越一个磁道耗时为m,总共跨越n条磁道。
则: Ts = s + m * n

1.2旋转延迟时间Tr

通过旋转磁盘,使磁头定位到目标扇区所需要的时间。设磁盘转速为r(单位:转/秒,或转/分),则平均所需的延迟时间为: Tr = (1/2)*(1/r) = 1/2r
  • 1/r就是转一圈需要的时间
  • 找到目标平均需要转半圈,因此乘以 1/2

1.3传输时间Tt

从磁盘读出或向磁盘写入数据所经历的时间,假设磁盘转速为r,此次读写字节数为b,每个磁道上的字节数为N,则传输时间:Tt = (1/r)*(b/N) = b/(rN)
  • 每个磁道要存N字节的数据,因此b字节的数据需要b/N个磁道才能存储
  • 读写一个磁道所需时间刚好是转一圈所需要的时间

1.4平均存取时间

Ta =Ts + 1/2r + b/(rN)
延迟时间和传输时间都与磁盘转速相关,且线性相关。而转速是硬件的固有属性,因此操作系统也无法优化延迟时间和传输时间;但操作系统的磁盘调度算法直接影响寻道时间。

2. 先来先服务算法(FCFS)

  • 按访问请求到达的先后顺序进行处理
  • 优点:公平;如果请求访问的磁道比较集中,算法性能还算过得去
  • 缺点:如果有大量进程竞争使用磁盘,请求分担,性能差,寻道时间长

3. 最短寻找时间优先(SSTF)

  • 每次都优先响应距离磁头最近的磁道访问请求
  • 贪心算法思想,能保证眼前最优,但无法保证总的寻道时间最短
  • 缺点:可能导致饥饿

4. 扫描算法(电梯算法、SCAN)

  • 只有磁头移动到最边缘的磁道时才可以改变磁头移动方向
  • 缺点
    • 只有到达最边上的磁道才能改变磁头移动方向
    • 对各个位置磁道的响应频率不均匀

5. LOOK调度算法

SCAN算法的改进,只要在磁头移动方向上不在有请求,就立即改变磁头方向

6. 循环扫描算法(C-SCAN)

只有磁头朝某个方向移动时才会响应请求,移动到边缘后立即让磁头返回起点,返回途中不响应任何请求

7. C-LOOK调度算法

C-SCAN算法的改进,只要在磁头移动方向上不在有请求,就立即让磁头返回

Comment