为什么先发制人SJF的平均等待时间保证不会大于非抢先SJF调度的平均等待时间?

时间:2015-04-30 08:20:15

标签: scheduling job-scheduling

SJF =最短的工作第一,标题不会让我适应它

抢占式SJF调度不会使进程的平均等待时间大于在非抢占式SJF调度算法中执行的时间吗?毕竟,您不断进行上下文切换,并迫使流程等待更长时间才能完成。

我似乎无法理解为什么先发制人的SJF(又称最短时间剩余优先,或STRF)优于非先发制人SJF(就平均等待时间而言)处理)。

有人可以向我解释一下吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

假设p1(8 ms突发时间)在0 ms到达队列,在执行p1 1 ms后,另一个进程p2以4 ms的突发时间进入队列。该过程将停止执行过程p1并将开始执行过程p2。为什么?因为p1剩余7ms才能完成执行,而p1只剩下4 ms完成执行。

我认为很清楚为什么它被称为"最短剩余时间优先"调度。因为它总是选择一个剩余时间最少的进程来执行。

对于你的另一个问题,为什么它更好....让我们扩展这个场景。

过程p1 - >脉冲串时间8 ms,到达时间0 ms,

过程p2 - >突发时间4毫秒,到达时间1毫秒,

过程p3 - >突发时间9毫秒,到达时间2毫秒,

过程p4 - >突发时间5毫秒,到达时间3毫秒。

对于先发制人的SJF, 平均等待时间= [(p1)(10-1)+(p2)(1-1)+(p3)(17-2)+(p4)(5-3)] / 4 = 6.5 ms

对于非先发制人的SJF,它会是, 平均等待时间= [(对于p1)(0)+(对于p2)(8-1)+(对于p3)(17-2)+(对于p4)(12-3)] / 4 = 7.75 ms

你可以看出为什么说抢占优于非先发制人,因为使用这种算法执行所有过程所需的时间更少。

参考:Galvin,Silberschatz,Gagne的操作系统概念(第8版)。