赞
踩
读写一个磁盘块时,影响其访问的时间因素主要有三个方面:
①寻道时间:磁头移动到指定磁道所需时间。
②旋转延迟时间:等待指定扇区到达磁头下的旋转时间。
③数据传输时间:数据在磁盘与内存之间的传输时间。
寻道时间占主导地位,所以减少平均寻道时间是改善系统性能的重要途径。
当多个磁盘I/O请求到来时,磁盘驱动程序需要安排I/O请求的处理顺序,这称为磁盘调度或移臂调度。
先来先服务算法根据磁道访问请求到来的先后顺序完成请求。
例:
假如系统先后到来对柱面12,80,5,60,95,20,86,35,72,55的访问请求,按照FCFS调度算法处理该请求序列。
柱面访问序列:12,80,5,60,95,20,86,35,72,55
磁头总共移动:80-12+80-5+95-5+95-20+86-20+86-35+72-35+72-55=479个磁道距离
响应一个请求平均需要移动:479/10=47.9个磁道(平均寻找长度)
优点:公平,简单;如果请求访问的磁道比较集中的话,算法性能很好;
缺点:很难优化寻道时间;如果有大量进程竞争使用磁盘,请求访问的磁道很分散,则FCFS在性能上很差,寻道时间很长。
最短寻道时间优先算法总是优先满足距离磁头当前位置最近的访问请求。
例:
柱面访问请求到来顺序为:12,80,5,60,95,20,86,35,72,55的,假定磁头位置当前在60号柱面。按照SSTF调度算法处理该请求序列。
柱面访问序列:60,55,72,80,86,95,35,20,12,5
磁头总共移动:60-55+95-55+95-5=135个磁道距离
响应一个请求平均需要移动:135/10=13.5个磁道(平均寻找长度)
优点:性能较好,平均寻道时间短;
缺点:可能产生“饥饿”现象。本例中,如果在处理95号磁道的访问请求时又来一个86号磁道的访问请求,处理86号磁道的访问请求时又来一个95号磁道的访问请求.如果有源源不断的86号、95号磁道的访问请求到来的话,35、20、12、5号磁道的访问请求就永远得不到满足,从而产生“饥饿”现象。
SSTF算法会产生饥饿的原因在于:磁头有可能在一个小区域内来回来去地移动。为了防止这个问题,可以规定,只有磁头移动到最外侧磁道的时候才能往内移动,移动到最内侧磁道的时候才能往外移动。这就是扫描算法(SCAN)
的思想。由于磁头移动的方式很像电梯,因此也叫电梯算法。
对于先后到达的磁盘访问请求,电梯调度算法首先选择移臂方向,磁臂在该方向上移动的过程中依次处理途经的各个访问请求,直到该方向上再无请求时,改变移臂方向,依次处理相反方向上遇到的各个请求。如果同一柱面上有多个请求,还需进行旋转优化。
例:
柱面访问请求到来顺序为:12,80,5,60,95,20,86,35,72,55,假定磁头正从60号磁道开始,向磁道号增加方向移动。按照电梯调度算法处理该请求序列。
柱面访问序列:60,72,80,86,95,55,35,20,12,5
磁头总共移动:95-60+95-5=125个磁道距离
响应一个请求平均需要移动:125/10=12.5个磁道(平均寻找长度)
优点:性能较好,平均寻道时间较短,不会产生饥饿现象。
缺点:①只有到达最边上的磁道时才能改变磁头移动方向,事实上,处理了95号磁道的访问请求之后就不需要再往右移动磁头了。②SCAN算法对于各个位置磁道的响应频率不平均(如:假设此时磁头正在往右移动,且刚处理过55号磁道,那么下次处理55号磁道的请求就需要等磁头移动很长一段距离;而响应了95号磁道的请求之后,很快又可以再次响应95号磁道的请求了)
在该算法中,磁头仅在一个移动方向上提供访问服务。
磁臂从磁盘开始端柱面至结束端柱面移动的过程中依次处理途经请求,然后,直接返回开始端柱面重复进行,归途中并不响应请求。开始端与结束端柱面构成了一个循环。
例:
柱面访问请求到来顺序为:12,80,5,60,95,20,86,35,72,55,规定磁头向柱面号增加的方向移动时才访问磁道。柱面编号为0~100。
假定磁头正从60号柱面开始,向柱面号增加方向移动。按照循环扫描(C-SCAN)调度算法处理该请求序列。
柱面访问序列:60,72,80,86,95,100,0,5,12,20,35,55
磁头总共移动:100-60+55-0=95个磁道距离
响应一个请求平均需要移动:95/10=9.5个磁道(平均寻找长度)
优点:比起SCAN来,对于各个位置磁道的响应频率很平均。
缺点:只有到达最边上的磁道时才能改变磁头移动方向,事实上,处理了95号磁道的访问请求之后就不需要再往右移动磁头了;并且,磁头返回时其实只需要返回到5号磁道即可,不需要返回到最边缘的磁道。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。