20期PHP线上班
首页 >常见问题 > 正文

磁盘调度算法有什么

原创2022-07-21 15:27:14735 关注公众号:每天精选资源文章推送

磁盘调度算法有:1、先来先服务算法,根据进程请求访问磁盘的先后顺序进行调度;2、最短寻找时间优先算法,选择调度处理的磁道是与当前磁头所在磁道距离最近的磁道,以使每次的寻找时间最短;3、扫描算法,在磁头当前移动方向上选择与当前磁头所在磁道距离最近的请求作为下一次服务的对象;4、循环扫描算法,在扫描算法的基础上规定磁头单向移动来提供服务,回返时直接快速移动至起始端而不服务任何请求。

本教程操作环境:windows7系统、Dell G3电脑。

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

常用磁盘调度算法

先来先服务算法

FCFS算法根据进程请求访问磁盘的先后顺序进行调度,这是一种最简单的调度算法。该算法的优点是具有公平性。如果只有少量进程需要访问,且大部分请求都是访问簇聚的文件扇区,则有望达到较好的性能;但如果有大量进程竞争使用磁盘,那么这种算法在性能上往往接近于随机调度。所以,实际磁盘调度中考虑一些更为复杂的调度算法。

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

  • 优点:简单,公平。

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

最短寻找时间优先算法

SSTF算法选择调度处理的磁道是与当前磁头所在磁道距离最近的磁道,以使每次的寻找时间最短。当然,总是选择最小寻找时间并不能保证平均寻找时间最小,但是能提供比FCFS算法更好的性能。这种算法会产生“饥饿”现象。

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

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

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

扫描算法(又称电梯算法)

SCAN算法在磁头当前移动方向上选择与当前磁头所在磁道距离最近的请求作为下一次服务的对象。由于磁头移动规律与电梯运行相似,故又称为电梯调度算法。SCAN算法对最近扫描过的区域不公平,因此,它在访问局部性方面不如FCFS算法和SSTF算法好。

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

1.png

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

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

循环扫描算法

在扫描算法的基础上规定磁头单向移动来提供服务,回返时直接快速移动至起始端而不服务任何请求。由于SCAN算法偏向于处理那些接近最里或最外的磁道的访问请求,所以使用改进型的C-SCAN算法来避免这个问题。

釆用SCAN算法和C-SCAN算法时磁头总是严格地遵循从盘面的一端到另一端,显然,在实际使用时还可以改进,即磁头移动只需要到达最远端的一个请求即可返回,不需要到达磁盘端点。这种形式的SCAN算法和C-SCAN算法称为LOOK和C-LOOK调度。这是因为它们在朝一个给定方向移动前会查看是否有请求。注意,若无特别说明,也可以默认SCAN算法和C-SCAN算法为LOOK和C-LOOK调度。

补:各算法的比较


优点
缺点
FCFS算法
公平、简单
平均寻道距离大,仅应用在磁盘I/O较少的场合
SSTF算法
性能比“先来先服务”好
不能保证平均寻道时间最短,可能出现“饥饿”现象
SCAN算法
寻道性能较好,可避免“饥饿”现象
不利于远离磁头一端的访问请求
C-SCAN算法
消除了对两端磁道请求的不公平
--

更多相关知识,请访问常见问题栏目!

以上就是磁盘调度算法有什么的详细内容,更多请关注php中文网其它相关文章!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

  • 相关标签:磁盘调度算法
  • 推荐:PHP从基础到实战教程视频

    相关文章

    相关视频


    专题推荐

    视频教程分类