【发布时间】:2023-04-05 19:47:01
【问题描述】:
等待时间定义为每个进程在获得时间片之前必须等待多长时间。 在诸如 Shorted Job First 和 First Come First Serve 之类的调度算法中,我们可以很容易地找到等待时间,只要我们将作业排队并查看每个作业必须等待多长时间才能得到服务。
当涉及到循环或任何其他抢占式算法时,我们发现长时间运行的作业会在 CPU 上花费一些时间,当它们被抢占然后等待某个时间轮到它执行时,在轮到它的某个时刻,它执行直到完成。我想找出在这种调度算法中了解作业“等待时间”的最佳方法。
我找到了一个formula,它给出了等待时间:
Waiting Time = (Final Start Time - Previous Time in CPU - Arrival Time)
但我不明白这个公式的推理。例如考虑一个具有 30 个单位的突发时间的作业 A,并且每 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 之后,A 永远不会等待。它只是得到它的时间片并继续下去。
- 选择 5,因为 A 之前在 30 到 35 之间花费了进程。
- 0 是开始时间。
好吧,我对这个公式有疑问,为什么没有考虑 15 A 20?
直观地说,当我们只考虑倒数第二次执行然后减去到达时间时,我无法理解这是如何让我们等待 A 的时间。
按照我的说法,A的等待时间应该是:
- 最终开始时间 -(在处理过程中花费的所有时间的总和)。
如果这个公式是错误的,为什么?
请帮助澄清我对这个概念的理解。
【问题讨论】:
-
等待时间不只是完成时间 - 到达时间 - 如果它自己运行所需的时间。也就是说,与它是系统中唯一工作的情况相比,所花费的额外时间。
-
@Keith,那也会给出正确的答案。 tmtowtdi,因为它是一个简单的公式。
标签: algorithm operating-system