非抢占式调度。最短的工作优先

问题描述 投票:0回答:1

第一个进程很长,但首先到达,队列中没有其他进程,因此 CPU 将处理它。我知道在非抢占式调度中你不能中断然后恢复进程但是我可以在较短的进程到达时终止第一个进程然后重新启动进程以减少等待时间吗?

例如

P1=-50 突发时间到达时间-0

P2 -5 突发时间到达时间-10

P3 -10 突发时间到达时间-20

我可以终止P1,启动P2,然后启动P3,然后重新启动整个P1以减少等待时间吗?

我试过在网上看,我似乎无法理解答案

multiprocessing cpu computer-science scheduling
1个回答
0
投票

您的需求的问题是您需要在非抢占环境中抢占进程(P1)。非抢占式调度方案的重点是准确地阻止你想做的事情。

这里有一些提示可以解决您的问题:

  • 在 P1 中有一个定期例程,检查 P2(或 P3)是否准备就绪。如果是这种情况,让 P1 本身终止(例如调用 exit)。此例程的频率将定义系统执行 P2 或 P3 的反应性(延迟)。 P2 终止后,在终止之前,您可以检查是否还有更多工作要做。如果没有,P2 可以要求系统重新开始执行 P1(例如调用 exec)。
  • 切换到基于优先级的调度程序,您似乎需要先执行短进程,因此我会使用 RM 调度(Rate Monotonic),它根据最坏情况的执行时间执行进程。在那种情况下,一些调度方案表现更好(例如 EDF)。这个解决方案的优点是 P1 不必从头开始,而是恢复执行。
© www.soinside.com 2019 - 2024. All rights reserved.