操作系统-磁盘调度算法
先来先服务算法
最短寻找时间优先算法SSTF
扫描算法
循环扫描算法
磁盘调度是干什么?
就是有一个磁头,根据系统想要访问的内容,移动到相应的位置
应该怎么移动?移动的顺序是怎么样,就是磁盘调度需要解决的问题
先来先服务
按照进程访问的顺序,他是怎么访问的,就按照顺序来就行
没什么技术含量啊,顺着来就行了
最短寻找时间优先算法SSTF
- 优先处理离当前磁头最近的磁道
最开始,90号离100最近,所以先去90这里
然后去58,55
最后到18,然后折回来到150
- 缺点:产生饥饿现象
Eg:本例中,如果在处理18号磁道的访问请求时又来了一个38号磁道的访问请求,处理38号磁道的访问请求时又来了一个18号磁道的访问请求。如果有源源不断的18号、38号磁道的访问请求到来的话,150、160、184号磁道的访问请求就永远得不到满足,从而产生“饥饿”现象。
磁头只在一个小区域内来回移动,其他远的地方去不了了
下面的扫描算法解决了这个问题
扫描算法SCAN(电梯算法)
SSTF算法会产生饥饿的原因在于:磁头有可能在一个小区域内来回来去地移动。
为了防止这个问题,可以规定,只有磁头移动到最外侧磁道的时候才能往内移动,移动到最内侧磁道的时候才能往外移动。
这就是扫描算法(SCAN)的思想。由于磁头移动的方式很像电梯,因此也叫电梯算法。
就是到了最边上才开始调头,向相反的方向移动
LOOK调度算法
在扫描算法的基础上
如果磁头移动方向上已经没有别的请求,就可以立即改变磁头移动的方向
(边移动边惯观察,因此叫做LOOK)
到了184,后面没有什么要处理的,立马掉头到160
如果是扫描算法就要干到200再返回来
C-SCAN算法
C-LOOK算法
总结
- 先来先服务
按照提高的顺序,访问 - 最短寻找时间SSTF
先访问离得进的,但是可能会在一小个地方徘徊,造成饥饿 - 扫描算法SCAN
只有移动到边上,才能调头,不撞南墙不回头