操作系统-磁盘调度算法

先来先服务算法
最短寻找时间优先算法SSTF
扫描算法
循环扫描算法

磁盘调度是干什么?
就是有一个磁头,根据系统想要访问的内容,移动到相应的位置
应该怎么移动?移动的顺序是怎么样,就是磁盘调度需要解决的问题

先来先服务

按照进程访问的顺序,他是怎么访问的,就按照顺序来就行

没什么技术含量啊,顺着来就行了

最短寻找时间优先算法SSTF

  • 优先处理离当前磁头最近的磁道
    image

最开始,90号离100最近,所以先去90这里

然后去58,55

最后到18,然后折回来到150


  • 缺点:产生饥饿现象
    Eg:本例中,如果在处理18号磁道的访问请求时又来了一个38号磁道的访问请求,处理38号磁道的访问请求时又来了一个18号磁道的访问请求。如果有源源不断的18号、38号磁道的访问请求到来的话,150、160、184号磁道的访问请求就永远得不到满足,从而产生“饥饿”现象。

磁头只在一个小区域内来回移动,其他远的地方去不了了

下面的扫描算法解决了这个问题

扫描算法SCAN(电梯算法)

SSTF算法会产生饥饿的原因在于:磁头有可能在一个小区域内来回来去地移动。

为了防止这个问题,可以规定,只有磁头移动到最外侧磁道的时候才能往内移动,移动到最内侧磁道的时候才能往外移动

这就是扫描算法(SCAN)的思想。由于磁头移动的方式很像电梯,因此也叫电梯算法。


image

就是到了最边上才开始调头,向相反的方向移动

LOOK调度算法

在扫描算法的基础上

如果磁头移动方向上已经没有别的请求,就可以立即改变磁头移动的方向

(边移动边惯观察,因此叫做LOOK)


image

到了184,后面没有什么要处理的,立马掉头到160

如果是扫描算法就要干到200再返回来

C-SCAN算法

image

C-LOOK算法

image

总结

  1. 先来先服务
    按照提高的顺序,访问
  2. 最短寻找时间SSTF
    先访问离得进的,但是可能会在一小个地方徘徊,造成饥饿
  3. 扫描算法SCAN
    只有移动到边上,才能调头,不撞南墙不回头
posted @ 2022-06-28 14:44  yangstar  阅读(260)  评论(0编辑  收藏  举报