2010-12-22 528 views
6

等待时间定义为每个进程在获得时间片之前必须等待的时间。 在调度算法中,比如Shorted Job First和First Come First服务,我们可以轻松地发现等待时间,当我们将作业排队等候,并看到每个人在服务之前必须等待多长时间。Round Robin调度中的平均等待时间

谈到循环法或任何其他抢先算法,我们发现长时间运行的作业在CPU中花费一点时间,当它们被抢占时,然后等待某个时间轮到它执行,并在某个时间轮到它,它会执行直到完成。我想找出最好的方法来理解这种调度算法中作业的“等待时间”。

我发现了一个formula这使等待时间为:

Waiting Time = (Final Start Time - Previous Time in CPU - Arrival Time) 

但我无法理解这个公式的推理。对于例如考虑一个工作A,其爆发时间为30个单位,循环发生在每5个单位。还有两个工作B(10)和C(15)。

中,这些将被提供服务将是顺序:

0 A 5 B 10 C 15 A 20 B 25 C 30 A 35 C 40 A 45 A 50 A 55 

等待时间,A = 40 - 5 - 0

  • 我选择40,因为40一个永远等待之后。它只是获得时间片并继续。
  • 选择5是因为A在30到35之间花费了过程。
  • 0是开始时间。

那么,我对这个公式有疑问,为什么15 A 20没有占? 直觉上,我不明白这是如何让我们等待A的时间,当时我们只是倒数第二次执行,然后减去到达时间。

据我来说,等待时间A应该是:

  • 决赛开始时间 - (所有时间的总和它在处理消费)。

如果这个公式错了,为什么呢?

请帮助澄清我对这个概念的理解。

+0

是不是等待时间就是完成时间 - 到达时间 - 如果它自己跑完所需要的时间。也就是说,与系统中唯一的工作相比,需要花费额外的时间。 – 2010-12-22 07:25:50

+0

@凯斯,那也会给出正确的答案。 tmtowtdi,因为它是一个简单的公式。 – 2010-12-22 22:23:47

回答

5

您误解了“以前在CPU中”的公式含义。这实际上意味着与您称之为“在处理中花费的所有时间的总和”相同的东西。 (我猜“前一次在CPU”应该是“先前在CPU上运行的总时间”的短时间,其中“之前”意味着“在最终开始之前”。)

您仍然需要减去到达因为这个过程显然没有在它到来之前等待。 (以防万一,这是不明确的:“到达时间”是作业提交给调度程序的时间。)在您的示例中,所有进程的到达时间为0,所以这在这里没有什么区别,但在一般情况下,需要考虑到达时间。

编辑:如果您查看链接到的网页上的示例,则过程P1将在其最后一次启动前各占用两个四个时间单位的时间片,并且其“以前的CPU时间”计算为8,与上面的解释。

+0

感谢Marti B.为我澄清它。 – 2010-12-22 22:24:36

0

最后等待

值 - (时间量子×(N-1))

这里n表示没有的次进程到达甘特图英寸