磁盘读写的时间花费和调度算法(操作系统)
Posted 青城博雅教育科技
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了磁盘读写的时间花费和调度算法(操作系统)相关的知识,希望对你有一定的参考价值。
今天复习了一下计算机组成原理,重新温习了一下磁盘,发现有许多知识点不记得了,于是写个笔记增强一下记忆。
磁盘的基本参数有:
磁头(head)磁头固定在可移动的机械臂上,用于读写数据。现代硬盘都是双面可读写,因此磁头数量等于盘片数的 2 倍。磁头数(Heads)表示硬盘总共有几个磁头,也就是有几面盘片, 最大为 255 (用 8 个二进制位存储);
磁道(track) 每个盘面都有 n 个同心圆组成,每个同心圆称之为一个磁道。由外向内分为 0 磁道到 n 磁道。
柱面(cylinder) n 个盘面的相同磁道 (位置相同) 共同组成一个柱面。柱面数(Cylinders) 表示硬盘每一面盘片上有几条磁道,最大为 1023(用 10 个二进制位存储);
扇区(sector)从磁盘中心向外画直线,可以将磁道划分为若干个弧段。每个磁道上一个弧段被称之为一个扇区。扇区是硬盘的最小组成单元,通常是 512 字节。磁道上的扇区数最大为 63 (6 个二进制位)。
硬盘的存储容量公式:
存储容量 = 磁头数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节数
因此,结合此公式和上面的数据可知磁盘最大容量为:
255 * 1023 * 63 * 512 / 1048576 = 8024 GB ( 1M =1048576 Bytes )或硬盘厂商常用的单位:
255 * 1023 * 63 * 512 / 1000000 = 8414 GB ( 1M =1000000 Bytes )
在 CHS 寻址方式中, 磁头, 柱面, 扇区的取值范围分别为 0到 Heads - 1,0 到 Cylinders - 1, 1 到
Sectors (注意是从 1 开始).
磁盘读写数据所花费的时间
读写数据过程:现代硬盘寻道都是采用CHS(Cylinder Head Sector)的方式,硬盘读取数据时,读写磁头沿径向移动,移到要读取的扇区所在磁道的上方,这段时间称为寻道时间(seek time)。因读写磁头的起始位置与目标位置之间的距离不同,寻道时间也不同。磁头到达指定磁道后,然后通过盘片的旋转,使得要读取的扇区转到读写磁头的下方,这段时间称为旋转延迟时间(rotational latencytime)。然后再读写数据,读写数据也需要时间。
从磁盘的基本结构以及数据读写过程我们可以看出,磁盘上数据读取和写入所花费的时间可以分为寻道时间、旋转延迟、传输时间三个部分。
1.寻道时间
所谓寻道时间,其实就是磁臂移动到指定磁道所需要的时间,这部分时间又可以分为两部分:
寻道时间=启动磁臂的时间+常数*所需移动的磁道数,其中常数和驱动器的的硬件相关,启动磁臂的时间也和驱动器的硬件相关。
2.旋转延迟
旋转延迟指的是把扇区移动到磁头下面的时间。这个时间和驱动器的转数有关,我们通常所说的7200转的硬盘的转就是这个。
平均旋转延迟=1/(2*转数每秒),比如7200转的硬盘的平均旋转延迟等于1/2*120≈4.17ms。旋转延迟只和硬件有关。
3.传输时间
传输时间指的是从磁盘读出或将数据写入磁盘的时间。传输时间=所需要读写的字节数/每秒转速*每扇区的字节数。
磁盘调度算法
通过上面硬盘读写数据所分的三部分时间不难看出,大部分参数是和硬件相关的,操作系统无力优化。只有所需移动的磁道数是可以通过操作系统来进行控制的,所以减少所需移动的磁道数是减少整个硬盘的读写时间的唯一办法。
因为操作系统内可能会有很多进程需要调用磁盘进行读写,因此合理的安排磁头的移动以减少寻道时间就是磁盘调度算法的目的所在,几种常见的磁盘调度算法如下。
1.最短寻道时间算法(SSFT)
这种算法优先执行所需读写的磁道离当前磁头最近的请求。这保证了平均寻道时间的最短,但缺点显而易见:离当前磁头比较远的寻道请求有可能一直得不到执行,这也就是所谓的“饥饿现象”。
2.先来先服务算法(FCFS)
这种算法将对磁盘的IO请求进行排队,按照先后顺序依次调度磁头。此算法的优点是公平、简单,且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况。但由于此算法未对寻道进行优化,在对磁盘的访问请求比较多的情况下,此算法将降低设备服务的吞吐量,致使平均寻道时间可能较长,但各进程得到服务的响应时间的变化幅度较小。
适用场景: 由于长作业会长时间占据处理机,该算法比较有利于长作业,而不利于短作业。即有利于CPU繁忙的作业,而不利于I/O繁忙的作业。
3.循环扫描算法(CSCAN)
也就是俗称的电梯算法,这种算法是对最短寻道时间算法的改进。这种算法就像电梯一样,只能从1楼上到15楼,然后再从15楼下到1楼。这种算法的磁头调度也是如此,磁头只能从最里磁道到磁盘最外层磁道。然后再由最外层磁道移动到最里层磁道,磁头是单向移动的,在此基础上,才执行和最短寻道时间算法一样的,离当前磁头最近的寻道请求。这种算法改善了SCAN算法,消除了对两端磁道请求的不公平。
4.扫描算法(SCAN)
优点:扫描算法不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移动方向。这种算法在磁头的移动方向上选择离当前磁头所在磁道最近的请求作为下一次服务对象,这种改进有效避免了饥饿现象(饥饿:当一个进程一直无法得到自己的资源而一直无法进行后续的操作时(不一定是阻塞),我们称这个进程会饥饿而死。),并且减少了寻道时间。
缺点:不利于最远一端的磁道访问请求。
以上是关于磁盘读写的时间花费和调度算法(操作系统)的主要内容,如果未能解决你的问题,请参考以下文章