Linux教程

操作系统-磁盘调度算法

本文主要是介绍操作系统-磁盘调度算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、一次磁盘读写所需要的的时间

以机械硬盘为例,一次磁盘读写所需要的的时间由三部分组成:寻道时间、延迟时间、传输时间。

  • 寻道时间:磁头移动到数据所在磁道所需的时间。每个磁道耗时m,总共需要跨越的磁道数n,耗时为Ts = s + m*n.(s为机械臂启动时间)
  • 延迟时间:旋转磁头定位到数据所在扇区的时间。设r为磁盘转速,则延迟平均时间为 (1/r)*(1/2)
  • 传输时间:从磁盘读出或者写入磁盘所需的时间。设每个磁道上的字节数为N.则所花时间为(1/r)*(b/N)
    在这里插入图片描述

二、磁盘调度算法

传输时间和延迟时间都与磁盘的转速有关,所以我们无法优化这两个值。不同的磁盘调度算法的寻道时间有很大差异,也就决定了各个磁盘调度算法的优劣。所以磁盘调度算法优化的是寻道时间。

主要有以下几种算法:

2.1 先来先服务(FCFS)
根据服务请求的先后顺序调度
在这里插入图片描述
2.2 最短寻找时间优先(SSTF)
优先处理与磁头接近位置的磁道,可以保证每次寻道时间最短,但整体不一定(类似贪心算法,只选择眼前最优解,不考虑整体)
在这里插入图片描述
2.3 扫描算法
SSTF算法存在饥饿现象。为了解决这个问题,规定磁头只有移动到最外侧磁道,才可以往内侧移动。这就是扫描算法,也叫电梯算法
在这里插入图片描述
2.4 LOOK算法
扫描算法需要到最边上才返回。LOOK算法是为了解决这个问题。如果磁头移动方向上已经没有别的磁道了,可以立即返回。(边移动,边观察)
在这里插入图片描述
2.5 循环扫描算法(C-SCAN)
SCAN算法对于磁道各个位置的响应不平均,C-SCAN规定只有磁头朝某个方向移动才处理请求。而返回时直接快速移动到起始端而不进行任何处理请求。
在这里插入图片描述
2.6 C-LOOK算法
解决循环扫描算法必须到边上才返回的问题。C-LOOK算法规定如果某个方向上没有要处理的磁道,立即返回另一端的第一个需要被访问的磁道。
在这里插入图片描述

这篇关于操作系统-磁盘调度算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!