1.磁盘调度算法
1.1先来先服务调度算法(FCFS)
按请求访问者的先后顺序启动磁盘驱动器,而不考虑他们要访问的物理位置。简单来说,就是谁先请求,就先访问谁。
例如:有一个磁盘队列,其IO对各个柱面上快的请求顺序为98,183,37,122,14,124,65,67.如果磁头开始位于53,那么FCFS调度算法将从53移到98,接着再到183,37,122,14,124,65,67,总得磁头移动为640(45+85+146+85+108+110+59+2)个柱面,如图5.34所示,平均寻道时间为640/8=80
1.2最短寻道时间优先(SSTF)
当离磁道最近的请求访问者启动磁盘驱动器,即让查找时间最短的那个作业先执行,而不考虑请求访问者到来的先后顺序,这样就克服了先来先服务调度算法中磁头移动过大的问题。简单点说,就是谁离的近就访问谁。
例如:有一个磁盘队列,其IO对各个柱面上快的请求顺序为98,183,37,122,14,124,65,67.如果磁头开始位于53,那么SSTF调度算法。与开始磁头位置(53)最近的请求是位于柱面65.当位于柱面65,下一个最近请求位置位于柱面67.从柱面67,由于37比98还要近,所以下次处理37。如此继续下去,会继续处理14,接着处理98,122,124,最后处理183上的请求。总得磁头移动为236(12+2+30+23+84+24+2+59)个柱面,如图5.53所示。平均寻道长度为263/8=29.5
1.3扫描算法(SCAN)或电梯调度算法
总是从磁头当前位置开始,沿磁头移动方向去选择离当前磁头最近的那个柱面的请求。如果沿磁头的方向无请求访问时,就改变磁头移动的方向。在这种调度方法下磁头的移动就类似于电梯的调度,所以它也称为电梯调度算法。简单点说,想想电梯怎么移动的就是扫描算法的移动方式。
例如:有一个磁盘队列,其IO对各个柱面上快的请求顺序为98,183,37,122,14,124,65,67.如果磁头开始位于53,那么采用SCAN调度算法时,不但要知道磁头的当前位置,还要知道磁头的移动方向。如果磁头朝0方向移动,那么磁头会先处理服务37,再处理14.此时朝0方向再无请求,磁头会调转方向,朝磁头的另一端移动,并处理位于柱面65,67,98,122,124和183上的请求。总的磁头移动为208(16+23+51+2+31+24+2+59)个柱面,如图5.36所示,平均寻道长度为208/8=26
1.4循环扫描算法(CSCAN)单向扫描算法
循环扫描调度算法是在扫描算法的基础上改进的。为了减小延迟,规定磁头单向移动,例如,只是自里向外移动,从当前位置开始沿磁头的移动方向去选择离当前磁头最近的那个柱面访问,如果沿磁头的方向无请求访问时,磁头立即返回到最里面的欲访问的柱面,再亦即将最小柱面号紧接着最大柱面构成循环,进行循环扫描。简单点说,就是首先选择距离当前磁头最近的柱面访问,然后沿着这个方向访问到头,然后在返回到开头,进行向里扫描。
例如:有一个磁盘队列,其IO对各个柱面上快的请求顺序为98,183,37,122,14,124,65,67.如果磁头开始位于53,那么采用SCAN调度算法时,假设磁头移动方向是从柱面0到柱面199方向,先处理服务65,再处理67,98,122,124,183上的请求。总得磁头移动为322(12+2+31+24+2+59+169+23)个柱面,如图5.37所示,平均寻道长度为322/8=40.25
习题:
假设磁盘臂位于15号柱面上,进程的请求序列如下表所示,如果采用最短移臂调度算法,那么系统的响应序列为:
分析:这一道题采用的是最短移臂调度算法,即最短寻道时间优先算法
① ②
⑤ ④ ③ ⑥
12 19 23 28
首先磁头位于15号柱面,首先访问距离磁头最近的柱面号12,即首先访问①和⑤(他俩不分先后顺序),在访问19,即②④(也不分先后顺序),最后访问③和⑥,答案选择B,如果答案是①⑤④②③⑥答案也对。