磁盘驱动调度的概念
磁盘是一种高速旋转的存储设备。磁头沿着磁盘片直径的方向移动,同时对指定磁道上的扇面中的数据进行读写操作。当多个访盘请求在等待时,系统采用一定的策略,对这些请求的服务顺序进行调整安排,使寻道时间和延迟时间都尽可能小的那个访问请求可以优先得到服务,并降低若干个访问者的总访问时间,增加磁盘单位时间内的操作次数。达到降低平均磁盘服务时间的目的,从而实现公平、高效的访盘请求。
磁盘调度考虑的问题
一次访盘时间=寻道时间+旋转延迟时间+传输时间; 磁盘驱动调度由“移臂调度”和“旋转调度”两部分组成:
移臂调度目的是尽可能减少寻找磁道时间; 旋转调度目的是尽可能减少寻找扇区时间。
调度算法
移臂调度
先来先服务调度算法(FCFS)
按照访问请求的次序为各个进程服务。
优点:简单,公平;
缺点:效率不高,相邻两次请求可能会造成最内到最外的柱面寻道,使磁头反复移动,增加了服务时间,对机械也不利。
最短寻道时间优先调度算法(SSTF)
优先选择距离当前磁头最近的访问请求进行服务,主要考虑寻道优先。
特点:改善了平均服务时间;
缺点:经常改变磁臂的移动方向,花费时间多又影响机械部件;还会导致“饥饿”现象,即较远距离的孤立访问可能很长时间不能获得访问磁盘的机会。
扫描算法(SCAN电梯算法)
它克服了SSTF算法的缺点,考虑了距离和方向。
特点:较好地解决了寻道性能,又防止了“饥饿”现象。
缺点:会出现刚访问过的柱面再次提出请求时,会等待较长的时间。
循环扫描算法(C-SCAN)
在SCAN的基础上改进的。磁臂改为单向移动,由外向里。
特点:较好地解决了寻道性能,又防止了“饥饿”现象。不会让刚访问过的磁道再次提出访问请求时等待较长的时间。
缺点:会出现磁臂的“黏着”现象。
旋转调度
根据延迟时间来决定执行次序的调度成为“旋转调度”。
实例分析
例题
若磁头的当前位置在100磁道上,磁头正向磁头号增加的方向移动。现有一磁盘读写请求队列:23、376、205、132、19、61、190、398、29、4、18、40. 采用FCFS、SSTF、SCAN算法,计算平局寻道长度各是多少。
结果
①FCFS; 磁头移动磁道总数为:
77+353+171+73+113+42+129+208+369+25+14+22=1596
平均移动磁道数为:
1596/12=133
②SSTF; 磁头移动磁道总数为:
32+58+15+144+21+11+6+4+1+14+372+22=700平均移动磁道数为:
700/12=58.3
③SCSN;
磁头移动磁道总数为:
32+58+171+22+337+21+11+6+4+1+14=692
平均移动磁道数为:
692/12=57.7