• 技术文章 >常见问题

    磁盘调度算法有什么

    青灯夜游青灯夜游2022-07-21 15:27:14原创183

    磁盘调度算法有: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核实处理。
    专题推荐:磁盘调度算法
    上一篇:在word中表格的行和列交叉的部分称为什么 下一篇:人员控制系统的控制对象是什么
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 用PHP实现自己的sha-256哈希算法!• 简单了解JavaScript数据结构与算法之栈• Python详细解析之二分查找算法• java的10种排序算法实例• 深入了解Vue中的双端diff 算法
    1/1

    PHP中文网