我了解最短的作业优先(非抢占式)调度是如何工作的。基本上,当CPU完成当前作业时,它将选择队列中最短的作业以执行下一个作业。
这是我在网上找到的示例。
我试图了解如果此示例适用于具有未来预测的SJF。关于如何计算下一个预测 [example],有很多示例。但是我找不到一个示例来说明如何使用预测的CPU突发时间来选择下一个要执行的作业。
Say Tn是第n个作业的预计突发时间。 tn是实际的突发时间。初始预测T1 = 5,a = 0.5。
使用上面的示例,P1是第一个作业,因此CPU将立即启动。但是,当P2到达2时,我们如何计算T2?
是T2 = 0.5 * T1 + 0.5 * t1吗?但是在2时P1尚未完成,我们如何知道P1的实际突发时间t1?
编辑:就像@Zain Arshad提到的那样,可以在P1结束于7时计算T2。但是在7时,P2和P3都已到达。那么T2 = 0.5 * T1 + 0.5 * t1和T3 = 0.5 * T1 + 0.5 * t1?那么接下来要执行P2和P3中的哪个?
或者我的理解存在根本问题?
答案 0 :(得分:0)
在此之前,您的理解是正确的:
但是在2时P1尚未完成,我们如何知道P1的实际突发时间t1?
CPU不会立即启动,在本示例中,它将在 7 之后选择,因为它需要首先完成作业。您正在使用SJF Non-Preemptive
这个术语Non-Preemptive
是自描述性的,因为CPU不会抢占正在进行的进程,因此,它不需要在 2 处进行计算。它将等待该过程完成。