常见的磁盘调度算法

版权声明:本文为博主原创文章,若转载请注明出处且不得删改。(如有错误请提出指正,部分文章会参考其他文章,已经表明参考出处,如有侵权请联系删除) https://blog.csdn.net/qq_34902437/article/details/83592055

早期的磁盘调度算法

先来先服务

顾名思义,先来先服务就是按照请求访问磁道的顺序来访问磁道。

我们来看一个实例
在这里插入图片描述

从 100 开始,按照请求的顺序,依次访问 55,58 … 等磁道。
移动距离是上一个磁道到下一个磁道的距离。

  1. 优点:公平,避免饥饿现象发生
  2. 缺点:寻道时间长

最短寻道时间优先(SSTF)

SSTF 的原理是访问的下一个磁道是距离现在这个磁道最近的那一个磁道。

在这里插入图片描述

可以看到 90 这个磁道是距离 100 这个磁道距离最近的磁道,所以先访问。
而 58 这个磁道是距离 90 这个磁道距离最近的,所以是接下来访问。

  1. 优点:比先来先算法性能更好

  2. 缺点:容易造成饥饿现象

    为什么会造成饥饿现象
    

因为磁道的请求时动态的,随时都会有新的磁道请求加入,如果,一段时间内,所请求的磁道数都是在当前磁道数附近,那么早期请求但是距离当前磁道远的磁道将长时间得不到满足,造成饥饿现象。

基于扫描的磁盘调度算法

扫描算法(电梯调度算法)

我们看到 SSTF 算法虽然性能好,但是容易造成饥饿现象,本质上就是磁头一直处在当前
磁道的小范围内。所以扫描算法就是用来解决这个问题的。

扫描算法的解决方式是,让磁头按照一定方向一直移动(先选择距离当前磁道最近的方向
,从里到外,在从外到里)

在这里插入图片描述

循环扫描算法

扫描算法也同样存在问题,那就是,如果我按照向外的方向,刚走过假设是 100 的磁道,
此时新请求是 99 磁道,但是因为需要继续向外,所以不能访问 99 磁道,这就造成了一定
的开销。

而循环扫描算法就是按照下一个最近的磁道方向(如,向外扫描,到最外层后,重新从内
向外扫描)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_34902437/article/details/83592055