ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【操作系统】磁盘调度算法

2021-05-27 21:59:23  阅读:235  来源: 互联网

标签:操作系统 调度 算法 磁道 磁头 磁盘 移动


一次磁盘读写操作的时间由寻找(寻道)时间、延迟时间和传输时间决定:

  • 1、寻找时间 T s T_s Ts​:活动头磁盘在读写信息前,将磁头移动到指定磁道所需要的时间。这个时间除跨越n条磁道的时间外,还包括启动磁臂的时间s,即: T s = m ∗ n + s T_s = m * n + s Ts​=m∗n+s。式中, m m m是与磁盘驱动器速度有关的常数,约为0.2ms,磁臂的启动时间约为2ms。

  • 2、延迟时间 T r T_r Tr​:磁头定位到某一磁道的扇区(块号)所需要的时间,设磁盘的旋转速度为r,则: T r = 1 / ( 2 ∗ r ) T_r = 1 / (2 * r) Tr​=1/(2∗r)。对于硬盘,典型的旋转速度为5400r/m,相当于一周11.1ms,则Tr为5.55ms;对于软盘,其旋转速度在300~600r/m之间,则 T r T_r Tr​为 50~100ms。

  • 3、传输时间 T t T_t Tt​:从磁盘读出或向磁盘写入数据所经历的时间,这个时间取决于每次所读/写的字节数b和磁盘的旋转速度: T t = b / ( r ∗ N ) T_t = b / (r * N) Tt​=b/(r∗N)。式中,r为磁盘每秒钟的转数;N为一个磁道上的字节数。

在磁盘存取时间的计算中,寻道时间与磁盘调度算法相关,下面将会介绍分析几种算法,而延迟时间和传输时间都与磁盘旋转速度相关,且为线性相关,所以在硬件上,转速是磁盘性能的一个非常重要的参数。

总平均存取时间Ta可以表示为: T a = T s + T r + T t T_a = T_s + T_r + T_t Ta​=Ts​+Tr​+Tt​

注意:在实际的磁盘I/O操作中,存取时间与磁盘调度算法密切相关。调度算法直接决定寻道时间,从而决定总的存取时间。

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

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

看个栗子:

假设磁盘访问序列:98,183,37,122,14,124,65,67。读写头起始位置:53。求:磁头服务序列和磁头移动总距离(道数)。
由题意和先来先服务算法的思想,得到下图所示的磁头移动轨迹。由此:
磁头服务序列为:98,183,37,122,14,124,65,67
磁头移动总距离=(98-53)+(183-98)+|37-183|+(122-37)+|14-122|+(124-14)+|65-124|+(67-65)=640(磁道)
在这里插入图片描述

(2)最短寻道时间优先(Shortest Seek Time First,SSTF)
  SSTF算法选择调度处理的磁道是与当前磁头所在磁道距离最近的磁道,以使每次的寻找时间最短。当然,总是选择最小寻找时间并不能保证平均寻找时间最小,但是能提供比FCFS算法更好的性能。这种算法会产生“饥饿”现象。
算法思想:优先选择距当前磁头最近的访问请求进行服务,主要考虑寻道优先。

看个栗子:
下面栗子中,磁头当前位于53位置,则:
磁头服务序列为:65,67,37,14,98,122,124,183
磁头移动总距离=12 + 2 + 30 +23 + 84 + 24 + 2 + 59 = 236 (磁道)
在这里插入图片描述

(3)扫描算法(SCAN)或电梯调度算法
  SCAN算法在磁头当前移动方向上选择与当前磁头所在磁道距离最近的请求作为下一次服务的对象。由于磁头移动规律与电梯运行相似,故又称为电梯调度算法。SCAN算法对最近扫描过的区域不公平,因此,它在访问局部性方面不如FCFS算法和SSTF算法好。
算法思想:当设备无访问请求时,磁头不动;当有访问请求时,磁头按一个方向移动,在移动过程中对遇到的访问请求进行服务,然后判断该方向上是否还有访问请求,如果有则继续扫描;否则改变移动方向,并为经过的访问请求服务,如此反复。

看个栗子:
下面栗子中,假设磁头当前在53的位置,现在朝0方向移动则:
磁头服务序列为:37,14,65,67,98,122,124,183
磁头移动总距离=16 + 23 + 51 + 2 + 31 + 24 + 2 + 59 = 208 (磁道)
在这里插入图片描述
(4)循环扫描算法(Circular SCAN,CSCAN)
  CSCAN调度算法是在扫描算法的基础上改进的,为了减少延迟,规定磁头单向移动,例如,只是自里向外移动,从当前位置开始沿磁头的移动方向去选择离当前磁头最近的那个柱面访问,如果沿磁头的方向无请求时,磁头立即返回到最里面的欲访问的柱面,再亦即将最小柱面号紧接着最大柱面号构成循环。

看个栗子:
下面栗子中,假设磁头移动的方向是从柱面0到柱面199方向。
磁头服务序列为:65,67,98,122,124,183,14,37
磁头移动总距离=12 + 2 + 31 + 24 + 2 + 59 + 169 + 23= 322 (磁道)

在这里插入图片描述


磁盘调度算法比较

优点缺点
FCFS(先来先服务)公平、简单平均寻道距离大,仅应用在磁盘I/O较少的场合
SSTF(最短寻道时间优先)性能比“先来先服务”好不能保证平均寻道时间最短,可能出现“饥饿”现象
FCFS(扫描/电梯算法)寻道性能较好,可避免“饥饿”现象不利于远离磁头一端的访问请求
FCFS(循环扫描算法)消除了对两端磁道请求的不公平兼顾较好的寻道性能和防止饥饿现象,同时减少一个请求可能等待的最长时间。

参考文献:
1、磁盘调度算法
2、其余出自《王道操作系统2019版》

标签:操作系统,调度,算法,磁道,磁头,磁盘,移动
来源: https://blog.csdn.net/dl962454/article/details/117338450

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有