在磁盘调度和sstf算法中,为什么说总是选择最小寻道时间不能保证最小平均寻道时间?

FCFS算法是最简单的调度算法,它根据进程请求访问磁盘的顺序进行调度。这个算法的优点是公平性。如果只有少数进程需要访问,而大部分请求都是访问集群文件扇区,则有望获得更好的性能;但是,如果大量进程竞争使用磁盘,这种算法的性能往往接近随机调度。因此,在实际的磁盘调度中要考虑一些更复杂的调度算法。

1.算法思想:按照访问请求到达的顺序进行服务。

2.优点:简单公平。

3.缺点:效率不高。两个相邻的请求可能引起最里面到最外面的柱面寻道,使磁头反复移动,增加使用时间,对机器也是不利的。

4.示例:

假设磁盘访问顺序是98,183,37,122,14,124,65,67。头部起始位置:53。找出磁头的维修顺序和磁头移动的总距离(磁道数)。

根据问题的意思和先到先得算法的思想,得出下图所示的头部运动轨迹。因此:

磁头的服役顺序是:98,183,37,122,14,124,65,67。

总移动距离SSTF磁头=(98-53)+(183-98)+| 37-183 |+(122-37)+| 14-122 |+(65438)当然,总是选择最小的搜索时间并不能保证最小的平均搜索时间,但可以提供比FCFS算法更好的性能。这种算法会产生“饥饿”现象。

1.算法思路:优先考虑最接近当前头的接入请求进行服务,主要考虑寻求优先级。

2.优点:提高了磁盘的平均使用时间。

3.缺点:有些访问请求长时间得不到服务。

4.示例:对于上面示例的磁盘访问序列,可以如下所示获得磁头移动的轨迹。扫描算法选择在磁头的当前移动方向上最接近当前磁头所在磁道的请求作为下一个服务的对象。因为磁头的运动规律和电梯的运动规律类似,所以也叫电梯调度算法。扫描算法对最近扫描的区域不公平,所以在访问局部性上不如FCFS算法和SSTF算法。

算法思想:当设备没有访问请求时,磁头不动;当有访问请求时,磁头向一个方向移动,服务于移动过程中遇到的访问请求,然后判断该方向是否有访问请求,如果有,继续扫描;否则,改变移动方向,服务于通过的访问请求,以此类推。如下图所示:

扫描算法(电梯算法)的磁头移动轨迹

2.优点:克服了以最短寻优为主的缺点,兼顾了距离和方向。在扫描算法的基础上,规定头部向一个方向移动提供服务,返回时直接快速移动到起始端,不服务任何请求。因为扫描算法倾向于处理靠近最内部或最外部磁道的访问请求,所以使用改进的C-扫描算法来避免这个问题。

当使用扫描算法和C扫描算法时,磁头总是严格地从磁盘表面的一端跟随到另一端。显然在实际使用中是可以改进的,即磁头只需要一个请求就可以返回到最远端,而不需要到达磁盘端点。这种形式的扫描算法和C-扫描算法称为LOOK和C-LOOK调度。这是因为它们在朝着给定的方向前进之前会寻找请求。请注意,除非另有说明,否则默认情况下,扫描算法和C扫描算法也可以安排为LOOK和C-LOOK。