操作系统理论 第六章(输入输出系统)—第八节(磁盘存储器的性能和调度)

写在前面:

  1. 本系列笔记主要以《计算机操作系统(汤小丹…)》为参考,大部分内容出于此书,笔者的工作主要是挑其重点展示,另外配合下方视频链接的教程展开思路,在笔记中一些比较难懂的地方加以自己的一点点理解(重点基本都会有标注,没有任何标注的难懂文字应该是笔者因为强迫症而加进来的,可选择性地忽略)。
  2. 视频链接:操作系统(汤小丹等第四版)_哔哩哔哩_bilibili

一、磁盘性能简述

1、数据的组织

        磁盘设备可包括一个或多个物理盘片,每个磁盘片分一个或两个存储面,每个盘面上有若干个磁道,磁道之间留有必要的间隙。

        为使处理简单起见,在每条磁道上可存储相同数目的二进制位,这样,磁盘密度即每英寸中所存储的位数,显然是内层磁道的密度较外层磁道的密度高。

        每条磁道又被从逻辑上划分成若干个扇区,一个扇区称为一个盘块(或数据块),各扇区之间保留一定的间隙。软盘大约为8至32个扇区,硬盘则可多达数百个,下右图显示了一个磁道分成8个扇区的布局情况。

        一个物理记录存储在一个扇区上,磁盘上能存储的物理记录块数目是由扇区数、磁道数以及磁盘面数所决定的,例如一个10GB容量的磁盘,有8个双面可存储盘片,共16个存储面(盘面),每面有16383个磁道(也称柱面),63个扇区。

        关于磁盘的更多内容在《计算机组成原理》中有介绍,这里不再赘述。

2、磁盘的类型

        对于磁盘,可以从不同的角度进行分类,最常见的有:将磁盘分成硬盘和软盘、单片盘和多片盘、固定头磁盘和活动头(移动头)磁盘等。

        关于磁盘的更多内容在《计算机组成原理》中有介绍,这里不再赘述。

二、早期的磁盘调度算法

1、先来先服务(FCFS)

(1)先来先服务算法是根据进程请求访问磁盘的先后次序进行调度

(2)先来先服务算法的优点是公平、简单,且每个进程的请求都能依次地得到处理,不会出现某一进程的请求长期得不到满足的情况,但此算法由于未对寻道进行优化,致使平均寻道时间可能较长。

2、最短寻道时间优先(SSTF)

(1)该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,但这种算法不能保证平均寻道时间最短。

(2)SSTF算法平均每次磁头移动的距离明显低于FCFS算法的距离,因而SSTF较之FCFS有更好的寻道性能。

(3)采用SSTF算法,只要不断有所要访问的磁道与磁头当前所在磁道的距离较近的新进程到达,就会出现“老进程饥饿”现象。

三、基于扫描的磁盘调度算法

1、扫描算法(SCAN)

(1)SCAN算法中磁头移动的规律似电梯的运行,又称为电梯调度算法,该算法既能获得较好的寻道性能,又能防止进程饥饿,被广泛用于大、中、小型机和网络中的磁盘调度。

(2)例如,当磁头正在自里向外移动时,SCAN算法所考虑的下一个访问对象应是其欲访问的磁道既在当前磁道之外,又是距离最近的,这样自里向外地访问,直至再无更外的磁道需要访问时,才将磁臂换向为自外向里移动;这时,同样也是每次选择这样的进程来调度,即要访问的磁道在当前位置内为距离最近者,这样,磁头又逐步地从外向里移动,直至再无更里面的磁道要访问,从而避免了出现“饥饿”现象

(3)SCAN算法也存在缺陷,当磁头刚从里向外移动过某一磁道时,恰有一进程请求访问此磁道,这时该进程必须等待,待磁头从里向外,然后再从外向里扫描完所有要访问的磁道后,才处理该进程的请求,致使该进程的请求被严重地推迟。

2、循环扫描算法(CSCAN)

(1)为了减少请求进程的延迟,CSCAN算法规定磁头单向移动。若规定只自里向外移动,当磁头移到最外的被访问磁道时,磁头立即返回到最里的欲访磁道,即将最小磁道号紧接着最大磁道号构成循环,进行扫描

(2)采用循环扫描方式后,上述请求进程的请求延迟将从原来的2T(采用SCAN算法)减为T+Smax,其中T为由里向外(或相反)扫描完所有要访问的磁道所需的寻道时间,而Smax是将磁头从最外面被访问的磁道直接移到最里边欲访问的磁道所需的寻道时间。

3、NStepSCAN算法和FSCAN算法

(1)NStepSCAN算法:

①在SSTF、SCAN及CSCAN几种调度算法中,都可能出现磁臂停留在某处不动的情况,例如有一个或几个进程对某一磁道有较高的访问频率,即这个(些)进程反复请求对某一磁道的I/O操作,从而垄断了整个磁盘设备,这一现象称为“磁臂粘着”,在高密度磁盘上容易出现此情况。

②N步SCAN算法是将磁盘请求队列分成若干个长度为的子队列,磁盘调度将按FCFS算法依次处理这些子队列,而每处理一个队列时又是按SCAN算法,对一个队列处理完后,再处理其它队列。当正在处理某子队列时,如果又出现新的磁盘I/O请求,便将新请求进程放入其它队列,这样就可避免出现粘着现象。

③当N值取得很大时,会使N步扫描法的性能接近于SCAN算法的性能;当N=1时,N步SCAN算法便蜕化为FCFS算法。

(2)FSCAN算法:

        FSCAN算法实质上是N步SCAN算法的简化,即FSCAN只将磁盘请求队列分成两个子队列,一个是由当前所有请求磁盘I/O的进程形成的队列,由磁盘调度按SCAN算法进行处理,另一个是在扫描期间将新出现的所有请求磁盘I/O的进程放入等待处理的请求队列,这样,所有的新请求都将被推迟到下一次扫描时处理。

  • 22
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zevalin爱灰灰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值