磁盘调度算法
2020 M12 21
概念和分类
磁盘调度在多道程序设计的计算机系统中,各个进程可能会不断提出不同的对磁盘进行读/写操作的请求。
由于有时候这些进程的发送请求的速度比磁盘响应的还要快,因此我们有必要为每个磁盘设备建立一个等待队列。
常用的磁盘调度算法有四种:先来先服务算法FCFS,最短寻道时间优先算法SSTF,扫描算法SCAN(电梯算法),循环扫描算法CSCAN
由于有时候这些进程的发送请求的速度比磁盘响应的还要快,因此我们有必要为每个磁盘设备建立一个等待队列。
常用的磁盘调度算法有四种:先来先服务算法FCFS,最短寻道时间优先算法SSTF,扫描算法SCAN(电梯算法),循环扫描算法CSCAN
先来先服务算法FCFS
FCFS算法根据进程请求访问磁盘的先后顺序进行调度,这是一种最简单的调度算法。 如果只有少量进程需要访问,且大部分请求都是访问簇聚的文件扇区,则有望达到较好的性能。 但如果有大量进程竞争使用磁盘,那么这种算法在性能上往往接近于随机调度。
算法思想:按访问请求到达的先后次序服务。 优点:简单,公平。 缺点:效率不高,相邻两次请求可能会造成最内到最外的柱面寻道,使磁头反复移动,增加了服务时间,对机械也不利。
最短寻道时间优先算法SSTF
SSTF算法选择调度处理的磁道是与当前磁头所在磁道距离最近的磁道,以使每次的寻找时间最短。 当然,总是选择最小寻找时间并不能保证平均寻找时间最小,但是能提供比FCFS算法更好的性能。 这种算法会产生远端任务饥饿现象。
算法思想:优先选择距当前磁头最近的访问请求进行服务,主要考虑寻道优先。 优点:改善了磁盘平均服务时间。 缺点:不能保证平均寻找时间最小,造成某些访问请求长期等待得不到服务(饥饿)。
扫描算法SCAN,电梯算法
SCAN算法在磁头当前移动方向上选择与当前磁头所在磁道距离最近的请求作为下一次服务的对象。 由于磁头移动规律与电梯运行相似,故又称为电梯调度算法。 SCAN算法对最近扫描过的区域不公平,因此,它在访问局部性方面不如FCFS算法和SSTF算法好。
当设备无访问请求时,磁头不动; 当有访问请求时,磁头按一个方向移动,在移动过程中对遇到的访问请求进行服务 然后判断该方向上是否还有访问请求,如果有则继续扫描; 否则改变移动方向,并为经过的访问请求服务,如此反复
优点:克服了最短寻道优先的缺点,既考虑了距离,同时又考虑了方向,可避免饥饿现象 缺点:不利于远离磁头一端的访问请求
循环扫描算法CSCAN
在扫描算法的基础上规定磁头单向移动来提供服务,回返时直接快速移动至起始端而不服务任何请求。