操作系统——磁盘存储器的性能与调度

空扰寡人 提交于 2019-12-20 00:06:26

【概述】

磁盘存储器是计算机系统中最重要的存储设备,其中存放了大量的文件。

对文件的读写操作都涉及到对磁盘的访问,磁盘 I/O 速度高低和磁盘系统可靠性,直接影响到系统的性能。

磁盘设备包含一到多个物理盘片,每个盘片分一或两个存储面,每个盘面上有若干磁道,每条磁道由从逻辑上划分了若干扇区(盘块)

为方便处理,每条磁道存储容量相同,由于磁盘密度规定为单位英寸上存储的位数,因此内层磁道的密度较外层磁道的密度要高。

对于固定磁头磁盘来说,每磁道具有一磁头;对于移动磁头来说,每磁盘具有一磁头。
在这里插入图片描述

【磁盘访问时间】

磁盘设备在工作时以恒定速率旋转,为了读写,磁头必须能移动到所指定的磁道上,并等待所指定扇区的开始位置旋转到磁头下,然后再开始读写数据。

因此,可将对磁盘的访问时间分为以下三部分:

寻道时间 TsT_s:将磁头移动到指定磁道上所经历的时间,该事件是启动磁臂的时间 s 与磁头移动 n 条磁道时间的总和。

Ts=mn+sT_s = m * n +s

其中,m 是一常数,与磁盘驱动器的速度有关,对于一般磁盘,m=0.2m=0.2,对于高速磁盘,m0.1m \leq 0.1

旋转延迟时间 TτT_{\tau}:指定扇区移动到磁头下所经历的时间。

不同的磁盘类型旋转速度不同,软盘为 300r/min300r/min,硬盘为 7200r/min15000r/min7200r/min - 15000r/min,对于旋转延迟时间而言,硬盘的 Tτ2msT_{\tau}≈2ms,软盘的 Tτ50msT_{\tau}≈50ms

传输时间 TtT_t:从磁盘读写数据所经历的时间,其大小于每次读写的字节数 b 和旋转速度有关。

Tt=brNT_t = \frac{b}{rN}

其中,r 为磁盘每秒的转数,N 为一条磁道上的字节数。

当一次读写的字节数相当于半条磁道上的字节数时,Tτ=TtT_{\tau} = T_t

综上,访问时间 Ta=Ts+12r+brNT_a = T_s + \frac{1}{2r} + \frac{b}{rN}

【磁盘调度算法】

为减少对文件的访问时间,应采取一种最佳的磁盘调度算法,以使得各进程对磁盘的平均访问时间最小。

1.先来先服务

先来先服务(First Come First Service,FCFS)算法,是最简单的调度算法,其根据进程请求访问磁盘的先后次序进行调度

该算法公平、简单,每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况。

但此算法未对寻到进行优化,使得平均寻到时间可能较长。

2.最短寻道时间优先

最短寻道时间优先(Shortest Seek Time First,SSTF)算法,每次选择访问磁道与当前磁头所在磁道最近的进程,这样使得每次寻道时间最短,但无法保证平均寻道时间最短。

该算法对中间磁道有利,但可能会使得低优先级进程长期处于饥饿状态。

3.扫描算法

扫描(Scan)算法是在 SSTF 算法的基础上修改得来的,其可以防止低优先级进程出现饥饿现象。

该算法规定磁头移动方向,每次要访问的对象应在磁道之外,又是距离最近的,这样从里向外地访问,直到无更外的磁道需要访问时,才将磁臂自外向里移动。

4.循环扫描算法

循环扫描(Cycle Scan,CSCAN)算法,是在 SCAN 算法的基础上修改得来的。

对于 SCAN 算法来说,其具有较好的寻道功能,且可以防止饥饿现象,但当磁头刚从里向外移动越过了某磁道时,恰有一进程要访问该磁道,此时进程必须等待,待磁头继续从从里向外扫描完后再返回来,才能处理该进程的要求,使得该进程的请求被大大地推迟。

为减少上述的延迟,CSCAN 规定磁头单向移动,即当有里向外访问再无更外的磁道时,返回最里的磁道,再次有里向外访问

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!