【问题标题】:Average waiting time in Round Robin scheduling轮询调度中的平均等待时间
【发布时间】: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


【解决方案1】:

您误解了“以前的 CPU 时间”公式的含义。这实际上与您所说的“在处理中花费的所有时间的总和”的含义相同。 (我猜“以前在 CPU 中的时间”应该是“以前在 CPU 上运行的总时间”的缩写,其中“以前”的意思是“在最终开始之前”。)

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

编辑:如果您查看链接到的网页上的示例,则进程 P1 在其最终启动之前需要两个时间片,每个时间片四个时间单位,其“CPU 中的先前时间”计算为 8,与上面的解释。

【讨论】:

    【解决方案2】:

    最后等待

    值-(时间量×(n-1))

    这里n表示进程到达甘特图中的次数。

    【讨论】:

    • 请在您的帖子中添加一些说明。
    猜你喜欢
    • 1970-01-01
    • 2015-03-06
    • 2020-05-04
    • 2015-07-09
    • 1970-01-01
    • 2019-08-19
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多