我理解最短作业(非抢占式)调度的工作原理。基本上,当CPU完成当前作业时,它将选择队列中最短的作业来执行下一个作业。
这是我在网上找到的一个例子。
我试图理解这个例子对于未来预测的SJF是什么样的。有很多关于如何计算下一个forecast [example]的例子。但我找不到一个例子来说明预测的CPU突发时间将如何用于选择下一个要执行的作业。
假设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中的哪一个?
或者我的理解有根本问题?
你的理解是正确的,直到这个:
但是在2,P1尚未完成,我们怎么知道P1的实际突发时间t1?
CPU不会立即启动,在此示例中它将在7之后选择,因为它需要先完成作业。您正在使用SJF Non-Preemptive
,术语Non-Preemptive
是自描述的,因为CPU不会抢占正在进行的进程,因此,它不需要在2处计算,而是等待进程完成。