磁盘寻道调度问题

常用的磁盘调度算法有四种:

     1. 先来先服务 (**FCFS**-first come first service)
     2. 最短寻道时间优先算法(**FSST**-shorest seek time first)
     3. 扫描算法(SCAN)也称为电梯调度
     4. 循环扫描算法(CSCAN)

先来先服务算法:
按照请求访问磁盘的先后顺序进行调度,最简单的一种调度算法。
优点:简单、公平
缺点:效率较低,存在磁头反复移动问题,增加服务时间,有损机械。

最短寻道时间优先算法
每次寻找与当前磁道距离最近的磁道,使得每次寻道时间最短。算法有较好的吞吐量,但是不能保证平均寻道时间最短。
优点:改善磁道平均服务时间。
缺点:访问不均匀,造成某些访问请求长期无法响应。

扫描算法
先考虑当前移动方向(自里向外/自外向里),再考虑与当前磁道距离最近的。
自里向外:下一磁道在当前磁道外侧,且距离最近,依次类推,直到最外侧磁道才将磁臂换向为自外向里。移动原则同前一致。
自外向里:下一磁道在当前磁道内侧且距离最近,依次类推,到最内侧将磁臂换向为自里向外,再按上述原则移动。
优点:克服最短寻道优先的缺点,同时考虑方向和距离,吞吐量较大,平均响应时间较少。
缺点:由于是摆动式的扫描方法,两侧磁道被访问的频率仍低于中间磁道。

循环扫描算法
循环扫描算法是对扫描算法的改进。
自里向外扫描,则寻道为当前磁道外侧且距离最近磁道,直到最外侧磁道;再返回剩余等待服务的最内侧磁道,自里向外扫描。
自外向里扫描,则寻道为当前磁道内侧且距离最近磁道,直到最内侧磁道;再返回剩余等待服务的最外侧磁道,自外向里扫描。

实例:
1、假设移动头磁盘有200个磁道(从0号到199号)。目前正在处理125号磁道上的请求,而刚刚处理结束的请求是143号,如果下面给出的顺序是按FIFO排成的等待服务队列顺序:
86,147,91,177,94,150,102,175,130

(1)先来先服务算法
(125),86,147,91,177,94,150,102,175,130
移动距离=(125-86)+(147-86)+(147-91)+(177-91)+(177-94)+(150-94)+(150-102)+(175-102)+(175-130)=547
(2)最短寻道时间优先算法
(125),130,147,150,175,177,102,94,91,86
移动距离=130-125+147-130+150-147+175-150+177-175+177-102+102-94+94-91+91-86=143
(3)扫描算法
由于刚结束磁道是143,目前是125,因此磁道方向是减小方向,到最小;再从剩余中最小到最大
(125),102,94,91,86,130,147,150,175,177

移动距离=125-102+102-94+94-86+130-86+147-130+150-147+175-150+177-175=130

(4)循环扫描算法
由于刚结束磁道是143,目前是125,因此磁道方向是减小方向,到最小;再从剩余中最大到最小。
(125),102,94,91,86,177,175,150,147,130
移动距离=125-102+102-94+94-91+91-86+177-86+177-175+175-150+150-147+147-130=177

2、当前磁道100号,正向磁道增加方向移动(右外向里),请求队列:23,376,205,132,61,190,29,4,40.若用SCAN算法,则磁道移动顺序和距离分别为:
移动顺序:(100),132,190,205,376,61,40,29,23,4
举动距离:648

猜你喜欢

转载自blog.csdn.net/weixin_42044037/article/details/81836340