磁盘调度算法

一、为什么需要磁盘调度?

磁盘调度在多道程序设计的计算机系统中,各个进程可能会不断提出不同的对磁盘进行读/写操作的请求。由于有时候这些进程的发送请求的速度比磁盘响应的还要快,因此我们有必要为每个磁盘设备建立一个等待队列。

二、分类

先来先服务(FCFS)、最短寻道时间优先(SSTF)、扫描调度算法(电梯调度法、SCAN)、循环扫描调度算法(循环扫描算法、CSCAN)。

三、实现方法

1、先来先服务FCFS

根据进程请求访问磁盘的先后顺序进行调度,不考虑它们要访问的物理位置。这是最简单的调度算法。

优点:简单,公平。

缺点:效率不高,相邻两次请求可能会造成最内到最外的柱面寻道,使磁头反复移动,增加了服务时间,对机械也不利。平均寻道距离大,仅应用在磁盘I/O较少的场合。

2、最短寻道时间优先SSTF

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

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

缺点:造成某些访问请求长期等待得不到服务。产生“饥饿”现象。

3、电梯调度法SCAN

不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移动方向。磁头移动规律与电梯运行相似,故又称为电梯调度算法。

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

优点:寻道性能较好,可避免“饥饿”现象。

缺点:当磁头刚从里向外移动过某一磁道时,恰有一进程请求访问此磁道,这时该进程必须等待,待磁头从里向外,然后再从外向里扫描完所有要访问的磁道后,才处理该进程的请求,致使该进程的请求被严重地推迟。对最近扫描过的区域不公平,因此,它在访问局部性方面不如FCFS算法和SSTF算法好。

4、循环扫描调度算法CSCAN

是对SCAN的改进。在SCAN基础上规定磁头单向移动来提供服务。

为了减少SCAN的延迟,CSCAN算法规定磁头只做单向移动。例如,磁头只自里向外移动,当磁头移到最外的被访问磁道时,磁头立即返回到最里的欲访磁道,即将最小磁道号紧接着最大磁道号构成循环,进行扫描。

原文地址:https://www.cnblogs.com/SQP51312/p/6018504.html