等待时间定义为每个进程在获得时间片之前必须等待多长时间。 在调度算法(例如Shorted Job First和First Come First Serve)中,我们可以轻松地找到等待时间,当我们排队工作并查看每个人在服务之前必须等待多长时间。
当谈到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
嗯,我对这个公式有疑问,为什么不考虑15 A 20
?
直观地说,当我们只考虑倒数第二次执行然后减去到达时间时,我无法得到如何让我们等待A的等待时间。
据我说,A的等候时间应为:
如果这个公式错了,为什么呢?
请帮助澄清我对这个概念的理解。
答案 0 :(得分:5)
你误解了“以前的CPU时间”中公式的含义。这实际上意味着与你所谓的“它在处理中花费的所有时间的总和”相同的东西。 (我猜“CPU的上一次”应该是“之前在CPU上运行的总时间”的缩写,其中“之前”的意思是“在最后一次启动之前”。)
你仍然需要减去到达时间,因为这个过程显然没有在到达之前等待。 (以防万一不清楚:“到达时间”是将作业提交给调度程序的时间。)在您的示例中,所有进程的到达时间为0,因此这不会产生任何影响,但是在一般情况下,需要考虑到达时间。
编辑:如果你看一下你链接到的网页上的例子,进程P1在最后一次启动之前每次采用四个时间单位的两个时间片,它的“CPU中的前一个时间”计算为8,与上面的解释。
答案 1 :(得分:0)
上次等待
值 - (时间量子×(n-1))
此处n
表示进程在甘特图中到达的次数。