最短的作业优先(非抢先)和未来的预测计划示例

时间:2019-04-04 17:23:13

标签: operating-system scheduling

我了解最短的作业优先(非抢占式)调度是如何工作的。基本上,当CPU完成当前作业时,它将选择队列中最短的作业以执行下一个作业。

这是我在网上找到的示例。

SJF (non preemptive example)

我试图了解如果此示例适用于具有未来预测的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中的哪个?

或者我的理解存在根本问题?

1 个答案:

答案 0 :(得分:0)

在此之前,您的理解是正确的:

  

但是在2时P1尚未完成,我们如何知道P1的实际突发时间t1?

CPU不会立即启动,在本示例中,它将在 7 之后选择,因为它需要首先完成作业。您正在使用SJF Non-Preemptive这个术语Non-Preemptive是自描述性的,因为CPU不会抢占正在进行的进程,因此,它不需要在 2 处进行计算。它将等待该过程完成。