SJF =最短的工作第一,标题不会让我适应它
抢占式SJF调度不会使进程的平均等待时间大于在非抢占式SJF调度算法中执行的时间吗?毕竟,您不断进行上下文切换,并迫使流程等待更长时间才能完成。
我似乎无法理解为什么先发制人的SJF(又称最短时间剩余优先,或STRF)优于非先发制人SJF(就平均等待时间而言)处理)。
有人可以向我解释一下吗?
谢谢。
答案 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版)。