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

SSTF问题描述:

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

优点

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

缺点

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

思想:

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

不是最优的例子:

若干个等待访问磁盘者依次要访问的磁道为 100,142,150,155,170,300,当前磁头位于 150 号柱面,若用最短寻道时间优先磁盘调度算法,则访问序列为 [ 150 , 155 , 142 , 170 , 100 , 300 ] [150,155,142,170,100,300] [150,155,142,170,100,300]


根据最短寻道时间优先磁盘调度算法,每次在寻找下一个磁道时,都要选择离自己最近的,所以当前磁头位于40号,下一道选择与40绝对值最小的,即40,再下一道选择43,差值为3,以此类推,最后的访问序列应该为, [ 150 , 155 , 142 , 170 , 100 , 300 ] [150,155,142,170,100,300] [150,155,142,170,100,300]

SSTF

[ 150 , 155 , 142 , 170 , 100 , 300 ] [150,155,142,170,100,300] [150,155,142,170,100,300]
磁头移动总距离为(磁道):
D = ∣ 150 − 150 ∣ + ∣ 155 − 150 ∣ + ∣ 142 − 155 ∣ + ∣ 170 − 142 ∣ + ∣ 100 − 170 ∣ + ∣ 300 − 100 ∣ = 316 D=|150-150|+|155-150|+|142-155|+|170-142|+|100-170|+|300-100|=316 D=∣150150∣+∣155150∣+∣142155∣+∣170142∣+∣100170∣+∣300100∣=316

更优的抉择

[ 150 , 142 , 100 , 155 , 170 , 300 ] [150,142,100,155,170,300] [150,142,100,155,170,300]
磁头移动总距离为(磁道):
D = ∣ 40 − 40 ∣ + ∣ 43 − 40 ∣ + ∣ 76 − 43 ∣ + ∣ 79 − 76 ∣ + ∣ 19 − 79 ∣ + ∣ 11 − 19 ∣ + ∣ 4 − 11 ∣ = 250 D=|40-40|+|43-40|+|76-43|+|79-76|+|19-79| +|11-19|+|4-11|=250 D=∣4040∣+∣4340∣+∣7643∣+∣7976∣+∣1979∣+∣1119∣+∣411∣=250

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

简单想:

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

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

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

  • 18
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值