磁盘调度算法

简介: 磁盘调度算法

磁盘调度算法


为了减少对文件的访问时间,应采用一种最佳的磁盘调度算法,以使各进程对磁盘的平均访问时间最少。由于在访问磁盘时主要是寻道时间。因此,磁盘调度的目标是使磁盘的平均寻道时间最少。


1f3e86276153a402e4b213843f503b45_da1acc974319800b2767c9bfa0641a60.png


1.先来先服务(FCFS)


算法原则: 根据进程请求访问磁盘的先后顺序进行调度。


优点: 公平简单每个进程都能依次得到处理,不会出现某一进程长时间得不到满足的情况。


缺点: 平均寻道时间会有点长,适用于磁盘I/O进程数目较少的场合。


假设磁头的初始位置是100号磁道,有多个进程先后陆续地请求访问55、58、39、18、90、160、150、38、184号磁道。

按照FCFS的规则,按照请求到达的顺序,磁头需要依次移动到55、58、39、18、90、160、150、38、184号磁道。


5e8de03f07b782fbb91f9e1398048c4e_519a86938f1f63d37b3e72949e9f1fff.png


2.最短寻找时间优先(SSTF)


算法原则: SSTF算法会优先处理的磁道是与当前磁头最近的磁道。可以保证每次的寻道时间最短,但是并不能保证总的寻道时间最短。(其实就是贪心算法的思想,只是选择眼前最优,但是总体未必最优)。


优点: 性能较好,平均寻道时间短。


缺点: 可能产生“饥饿”现象(磁头长时间在某一区域内移动)。


假设磁头的初始位置是100号磁道,有多个进程先后陆续地请求访问55、58、39、18、90、160、150、38、184号磁道。


842e04a03b7a120f767dd4a08cd674a6_2808f00c93222c4a30abdcb5db9a15d9.png


3.扫描算法(SCAN)


算法原则: 为了防止SSTF算法的“饥饿”问题,可以规定,只有磁头移动到最外侧磁道的时候才能往内移动,移动到最内侧磁道的时候才能往外移动。这就是扫描算法(SCAN)的思想。由于磁头移动的方式很像电梯,因此也叫电梯算法。


优点: 性能较好,平均寻道时间较短,不会产生饥饿现象。


缺点:


①只有到达最边上的磁道时才能改变磁头移动方向,事实上,处理了184号磁道的访问请求之后就不需要再往右移动磁头了。

②SCAN算法对于各个位置磁道的响应频率不平均(如:假设此时磁头正在往右移动,且刚处理过90号磁道,那么下次处理9O号磁道的请求就需要等磁头移动很长一段距离;而响应了184号磁道的请求之后,很快又可以再次响应184号磁道的请求了)。


假设某磁盘的磁道为0~200号,磁头的初始位置是100号磁道,且此时磁头正在往磁道号增大的方向移动,有多个进程先后陆续地请求访问55、58、39、18、90、160、150、38、184号磁道。


3d4b738fa9d5d19f13077d2bc8f80e21_1a39266ea70188db6cf74e9b0c907ee1.png


4.LOOK调度算法


算法原则: 扫描算法(SCAN)中,只有到达最边上的磁道时才能改变磁头移动方向,事实上,处理了184号磁道的访问请求之后就不需要再往右移动磁头了。LOOK调度算法就是为了解决这个问题,如果在磁头移动方向上已经没有别的请求,就可以立即改变磁头移动方向(边移动边观察,因此叫LOOK)。


优点: 比起SCAN算法来,不需要每次都移动到最外侧或最内侧才改变磁头方向,使寻道时间进一步缩短。


假设某磁盘的磁道为0~200号,磁头的初始位置是100号磁道,且此时磁头正在往磁道号增大的方向移动,有多个进程先后陆续地请求访问55、58、39、18、90、160、150、38、184号磁道。


452247080337bdeca59b3942f2c682d5_98d8638b03da2652bad306e3249a0c5b.png


5.循环扫描算法(C-SCAN)


算法原则: SCAN算法对于各个位置磁道的响应频率不平均,而C-SCAN算法就是为了解决这个问题。规定只有磁头朝某个特定方向移动时才处理磁道访问请求,而返回时直接快速移动至起始端而不处理任何请求。


优点: 比起SCAN来,对于各个位置磁道的响应频率很平均。


缺点: 只有到达最边上的磁道时才能改变磁头移动方向,事实上,处理了184号磁道的访问请求之后就不需要再往右移动磁头了,并且磁头返回时其实只需要返回到18号磁道即可,不需要返回到最边缘的磁道。另外,比起SCAN算法来,平均寻道时间更长。


假设某磁盘的磁道为0~200号,磁头的初始位置是100号磁道,且此时磁头正在往磁道号增大的方向移动,有多个进程先后陆续地请求访问55、58、39、18、90、160、150、38、184号磁道。


a51ca2aa4a6f337f88a30f056a449ea0_9256515872dee5ec71a96a4f969f858e.png


6.C-LOOK调度算法


算法原则: C-SCAN算法的主要缺点是只有到达最边上的磁道时才能改变磁头移动方向,并且磁头返回时不一定需要返回到最边缘的磁道上。C-LOOK算法就是为了解决这个问题。如果磁头移动的方向上已经没有磁道访问请求了,就可以立即让磁头返回,并且磁头只需要返回到有磁道访问请求的位置即可。


优点: 比起C-SCAN算法来,不需要每次都移动到最外侧或最内侧才改变磁头方向,使寻道时间进一步缩短。


假设某磁盘的磁道为0~200号,磁头的初始位置是100号磁道,且此时磁头正在往磁道号增大的方向移动,有多个进程先后陆续地请求访问55、58、39、18、90、160、150、38、184号磁道。


47c84cbf710e72cbb3fc402e5eccf388_060cf4135c79a327966d674073b254a6.png

相关文章
|
1天前
|
算法 调度 UED
深入理解操作系统之进程调度算法
【9月更文挑战第9天】在操作系统的心脏跳动中,进程调度扮演着关键角色,就如同指挥家控制交响乐的节奏。本文将通过浅显易懂的语言和生动的比喻,带领读者走进进程调度的世界,探索不同调度算法背后的哲学与实践,以及它们如何影响系统的性能和用户体验。从最简单的先来先服务到复杂的多级队列和反馈循环,我们将一同见证操作系统如何在众多任务中做出选择,确保系统的高效与公平。
|
21天前
|
DataWorks 算法 调度
B端算法实践问题之配置脚本以支持blink批处理作业的调度如何解决
B端算法实践问题之配置脚本以支持blink批处理作业的调度如何解决
25 1
|
11天前
|
存储 算法 调度
深入理解操作系统:进程调度的算法与实现
【8月更文挑战第31天】在操作系统的核心,进程调度扮演着关键角色,它决定了哪个进程将获得CPU的使用权。本文不仅剖析了进程调度的重要性和基本概念,还通过实际代码示例,展示了如何实现一个简单的调度算法。我们将从理论到实践,一步步构建起对进程调度的理解,让读者能够把握操作系统中这一复杂而精妙的部分。
|
11天前
|
算法 调度 开发者
深入理解操作系统:进程管理与调度算法
在数字时代的心脏,操作系统扮演着至关重要的角色。它不仅是计算机硬件与软件之间的桥梁,更是确保多任务高效运行的守护者。本文将带你一探操作系统中进程管理的奥秘,并通过实际代码示例深入解析进程调度算法。无论你是编程新手还是资深开发者,了解这些基础概念都将有助于你更好地理解计算机工作原理,并提升你对系统性能调优的认识。准备好,让我们一起揭开操作系统的神秘面纱!【8月更文挑战第31天】
|
11天前
|
算法 调度
探索操作系统的心脏:进程调度算法揭秘
【8月更文挑战第31天】本文将带领读者深入理解操作系统中至关重要的一环——进程调度。通过浅显易懂的语言和逐步深入的内容安排,我们将从基础概念入手,探讨进程调度的目的和挑战,进而分析几种常见的调度算法。文中不仅提供了丰富的代码示例,还设计了互动问题,鼓励读者思考并应用所学知识。让我们一起揭开操作系统进程调度的神秘面纱,看看它是如何在幕后支撑着我们日常使用的电脑和移动设备的顺畅运行。
|
1月前
|
存储 算法 调度
基于和声搜索算法(Harmony Search,HS)的机器设备工作最优调度方案求解matlab仿真
通过和声搜索算法(HS)实现多机器并行工作调度,以最小化任务完成时间。在MATLAB2022a环境下,不仅输出了工作调度甘特图,还展示了算法适应度值的收敛曲线。HS算法模拟音乐家即兴创作过程,随机生成初始解(和声库),并通过选择、微调生成新解,不断迭代直至获得最优调度方案。参数包括和声库大小、记忆考虑率、音调微调率及带宽。编码策略将任务与设备分配映射为和声,目标是最小化完成时间,同时确保满足各种约束条件。
|
19天前
|
负载均衡 算法 Linux
在Linux中,LVS的负载调度算法是什么?
在Linux中,LVS的负载调度算法是什么?
|
2月前
|
缓存 负载均衡 算法
(四)网络编程之请求分发篇:负载均衡静态调度算法、平滑轮询加权、一致性哈希、最小活跃数算法实践!
先如今所有的技术栈中,只要一谈关于高可用、高并发处理相关的实现,必然会牵扯到集群这个话题,也就是部署多台服务器共同对外提供服务,从而做到提升系统吞吐量,优化系统的整体性能以及稳定性等目的。
|
2月前
|
算法 大数据 调度
探索操作系统的心脏:进程调度算法
【7月更文挑战第31天】在数字世界的复杂编织中,操作系统扮演着枢纽的角色,而进程调度则是其跳动的心脏。本文将深入探讨几种常见的进程调度算法,通过代码示例揭示它们对系统性能的影响,并讨论如何根据应用场景选择恰当的调度策略。
21 1
|
2月前
|
算法 调度 UED
深入理解操作系统之进程调度算法
【7月更文挑战第31天】在操作系统的设计中,进程调度是核心功能之一,它直接关系到系统性能和用户体验。本文将探讨几种常见的进程调度算法,并通过代码示例加深理解。我们将从理论到实践,一探究竟。
24 0