操作系统原理之磁盘调度

首先介绍主要的的四种磁头调度算法

(一)先来先服务算法(FCFS)

1、算法思想:按访问请求到达的先后次序服务。

2、优点:简单,公平。

3、缺点:效率不高,相邻两次请求可能会造成最内到最外的柱面寻道,使磁头反复移动,增加了服务时间,对机械也不利。

4、例子:

假设磁盘访问序列:98,183,37,122,14,124,65,67。读写头起始位置:53。求:磁头服务序列和磁头移动总距离(道数)。

由题意和先来先服务算法的思想,得到下图所示的磁头移动轨迹。由此:

磁头服务序列为:98,183,37,122,14,124,65,67

磁头移动总距离=(98-53)+(183-98)+|37-183|+(122-37)+|14-122|+(124-14)+|65-124|+(67-65)=640(磁道)

(二)最短寻道时间优先算法(SSTF)

1、算法思想:优先选择距当前磁头最近的访问请求进行服务,主要考虑寻道优先。

2、优点:改善了磁盘平均服务时间。

3、缺点:造成某些访问请求长期等待得不到服务。

4、例子:对上例的磁盘访问序列,可得磁头移动的轨迹如下图。请同学自己给出磁头服务序列并计算磁头移动总距离。

(三) 扫描算法(电梯算法)(SCAN)

1、算法思想:当设备无访问请求时,磁头不动;当有访问请求时,磁头按一个方向移动,在移动过程中对遇到的访问请求进行服务,然后判断该方向上是否还有访问请求,如果有则继续扫描;否则改变移动方向,并为经过的访问请求服务,如此反复。如下图所示:

扫描算法(电梯算法)的磁头移动轨迹

2、优点:克服了最短寻道优先的缺点,既考虑了距离,同时又考虑了方向。

3、例子:下图是一个示例。请同学自己写出一个可能的磁盘访问序列,并计算磁头移动总距离。

 

扫描算法图例

 

(四)单向扫描调度算法(CSCAN)

算法思想:

1、总是从0号柱面开始向里扫描。

2、按照各自所要访问的柱面位置的次序去选择访问者。

3、移动臂到达最后一个柱面后,立即带动读写磁头快速返回到0号柱面。

4、返回时不为任何的等待访问者服务。

5、返回后可再次进行扫描。

 

 

下面是作业题目及解法:

1. 若干个等待访问磁盘者依次要访问的柱面为 20,44,40,4,80,12,76,假设每移动一个柱面需要3ms时间,移动臂当前位于40号柱面,磁头正向磁道好增加的方向移动,

请按 FCFS, SSTF, SCAN 算法分别计算为完成上述访问总共花费的寻找时间。

 

(1)FCFS算法:

 

移动臂的移动次序为

 

40 → 20 → 44 → 40 → 4 → 80 → 12 → 76  

 

移动的柱面数 = 20 +24+4+36+76+68+64=292

 

共花费 3×292=876毫秒   

 

(2)SSTF算法:

 

移动臂的移动次序为

 

40 → 44 → 20 → 12 → 4 → 76 → 80  

 

移动的柱面数 = 4+24+8+8+72+4=120

 

共花费 3×120=360毫秒  

 

(3)SCAN算法:

 

移动臂的移动次序为

 

40 → 44 → 76 → 80 → 20 → 12 → 4  

 

移动的柱面数 = 4+32+4+60+8+8=116

 

共花费 3×116=348毫秒 

 

2.假设计算机系统采用CSCAN(循环扫描)磁盘调度策略,使用2KB的内存空间记录16384个磁盘的空闲状态 
⑴请说明在上述条件如何进行磁盘块空闲状态的管理。
⑵设某单面磁盘的旋转速度为每分钟6000转,每个磁道有100个扇区,相临磁道间的平均移动的时间为1ms。若在某时刻,磁头位于100号磁道处,并沿着磁道号增大的方向移动,磁道号的请求队列为50,90,30,120对请求队列中的每个磁道需读取1个随机分布的扇区,则读完这个扇区点共需要多少时间?需要给出计算过程。

(3)如果将磁盘替换为随机访问的 Flash 半导体存储器(如 U 盘、 SSD 等),是否有比 CSCAN 更高效的磁盘调度策略?若有,给出磁盘调度策略的名称并 说明理由;若无,说明理由。


(1). 2KB = 2*1024*8bit = 16384bit。因此可以使用位图法进行磁盘块空闲状态管理,每1bit表示一个磁盘块是否空闲。 
(2). 每分钟6000转,转一圈的时间为0.01s,通过一个扇区的时间为0.0001s。 则平均旋转延迟时间为0.01/2 = 5ms, 平均平均读取时间为0.1ms。

根据CSCAN算法,被访问的磁道号顺序为100 ,120 , 30, 50 , 90,因此,寻道用去的总时间为:(20 + 90 + 20 + 40)* 1ms = 170ms
总共要随机读取四个扇区,用去的时间为:(0.01*0.5 + 0.0001)*4 = 0.0204s = 20.4ms
所以,读完这个扇区点共需要 170ms + 20.4ms = 190.4ms。

(3)采用FCFS调度策略更高效。随机访问的FLASH半导体存储器的物理结构不需要考虑寻道时间和旋转时间延时,可直接按请求的先后顺序执行。

 

posted @ 2015-11-28 22:48  马列神教  阅读(14047)  评论(1编辑  收藏  举报