编程语言
首页 > 编程语言> > 磁盘调度算法

磁盘调度算法

作者:互联网

给定一个磁盘请求队列98,183,37,122,14,124,65,67(这些数字是柱面号),且已知当前柱面号为53,那么现在该选择哪个磁盘读写请求来处理呢?

先来先服务:FCFS

在这里插入图片描述
实际上,可以看出,磁壁在不断地“长途奔波”。具体来说,磁臂从柱面53到柱面98地过程中,完全可以将柱面65和67处的磁盘请求处理了。这样将来就不用再移动磁臂了,总寻找距离一定会减少。基于这样一个简单想法,可以设计出另一个磁盘调度算法——最短巡道时间优先

最短巡道时间优先

最短巡道时间优先(shortest seek time first,SSTF):每次选择离当前最近的柱面请求进行处理
在这里插入图片描述
SSFT是让巡道距离最短的离线算法吗?离线算法是指算法输入在执行之前已经全部出现,离线算法和在线算法想对应,在线算法的输入在执行过程中仍不断进入。
如图所示,磁头先向右移动去处理柱面65,67所产生的巡道是没有必要的,因为接下来向右移动处理柱面14以后会向右已知处理到柱面183,在这个移动过程中必然会经过65,64,所以SSTF不是产生最短巡道距离的离线算法,其核心原因是因为SSTF是一个贪心算法,该算法只考虑眼前利益,柱面65,67离当前柱面53最近,而没有考虑到当前的巡道会对未来巡道产生什么影响。另外,SSTF还会导致对用户请求的服务机会不均等,即公平性问题:当磁盘读写请求很多是,处于两端柱面的磁盘请求可能会被无线延迟,因为SSTF很可能会被无线延迟,这是因为SSTF很可能会在中间柱面来回摆动

磁盘调度扫描算法

磁盘调度扫描算法(SCAN算法):先向一个方向进行扫描,处理经过的所有磁盘请求,直到这个方向并不再有磁盘请求时,磁盘开始向另一个方向扫描,并处理经过的所有磁盘请求。
在这里插入图片描述
SCAN算法导致的磁臂移动总距离时208个磁道,比SSTF更少。同时SCAM算法也解决了位于两端柱面的磁盘请求饥饿问题。但是SCAN还有一个小缺点,那就是位于中间的柱面请求还时占了偏移,因为在磁臂摆动的过程中,中间的柱面请求要比位于两端的主柱面请求得到更快的处理。

循环扫描算法

循环扫描算法(CSCAN算法)可以解决SCAN对于中间柱面请求优先处理的公平性问题。解决办法很简单,不进行摆动扫描,而是采用复位扫描:首先向某个方向进行扫描,比如沿着柱面号小的方向扫描,处理经过的所有磁盘请求,直到这个方向不再磁盘请求时,磁盘迅速复位到另一个方向的最大请求位置,然后再沿着同样方向(柱面号小的方向)进行扫描,处理经过的所有磁盘请求,如此反复。
在这里插入图片描述
这个过程和日常生活的电梯工作激励是一样的,所以这个算法也有一个更加有名的名称——电梯调度算法。

标签:请求,扫描,调度,算法,柱面,磁盘,SSTF
来源: https://blog.csdn.net/weixin_43591948/article/details/119056952