最短寻道时间优先算法(SSTF)

SSTF问题描述:

SSTF算法选择调度处理的磁道是与当前磁头所在磁道距离最近的磁道,以使每次的寻找时间最短。当然,总是选择最小寻找时间并不能保证平均寻找时间最小,但是能提供比FCFS算法更好的性能。这种算法会产生“饥饿”现象。

优点

改善了磁盘平均服务时间。

缺点

优先级低的进程会发生“饥饿”现象。因为新进程请求到达,且其所要访问的磁道与磁头当前所在的磁道距离较近,必先优先满足。

思想:

本算法是对输入的磁道首先进行非递减排序,然后判断当前磁头所在的磁道是否在将要寻找的磁道中,分别进行最短寻道时间计算。(如下图示,表示SSTF示意图)

最短寻道时间优先算法(SSTF)

不是最优的例子:

假设磁盘访问序列:98,183,37,122,14,124,65,67。读写头起始位置:53。求:磁头服务序列和磁头移动总距离(道数)。


由题意和先来先服务算法的思想,得到下图所示的磁头移动轨迹。由此:
磁头服务序列为:98,183,37,122,14,124,65,67。


磁头移动总距离=(98-53)+(183-98)+|37-183|+(122-37)+|14-122| +(124-14)+|65-124|+(67-65)=640(磁道)


SSTF算法选择调度处理的磁道是与当前磁头所在磁道距离最近的磁道,以使每次的寻找时间最短。当然,总是选择最小寻找时间并不能保证平均寻找时间最小,但是能提供比FCFS算法更好的性能。这种算法会产生“饥饿”现象。

简单想:

可以想象这样一个序列,磁头目前在最中间。

  1. 第一次寻道,离磁头最近磁道的在中点的左边,磁头移动到该位置。
  2. 第二次寻道,离磁头最近磁道的在中点的右边,磁头移动到该位置。
  3. 第三次寻道,离磁头最近磁道的在中点的左边,磁头移动到该位置。

如此,磁头一直在中点往复,显然比寻完一侧的磁道再寻另一侧更优。

最短寻道时间优先算法(SSTF)