【问题标题】:Breaking a tie in round robin scheduling在循环调度中打破平局
【发布时间】:2018-04-28 17:55:00
【问题描述】:

我对循环 CPU 进程调度的基本概念感到困惑,其中短期调度程序将进程添加到就绪队列。

如果系统中有 3 个进程 P0、P1 和 P2,并且 P1 在 5 秒和同时 P2 ARRIVES(即在第 5 秒)发生上下文切换。在这种情况下,哪个进程将首先插入就绪队列,P1 还是 P2? 在这两种情况下,总体平均等待时间可能没有差异,但流程的各个等待时间会有所不同。

【问题讨论】:

  • 谁先拿到锁?
  • @M.Shaw你能详细说明一下
  • 在一般的计算中,什么都不会同时发生。它可能真的很接近,但总是在另一件事之前发生。
  • @JamesZ 是的,但在多核系统上可能同时发生一些事情。我在回答中提到了同步问题。

标签: process operating-system scheduler scheduling


【解决方案1】:

P1 因老化而被给予第一次处决机会。而 P2 将被添加到队列末尾,就在最后执行的进程之前。

这意味着 P1 将开始执行,P2 将被添加到队列的末尾,就在最后执行的进程之前,即 P0。因此,您的就绪队列将类似于 P1、P2、P0,其中 P1 当前正在执行。

【讨论】:

    【解决方案2】:

    P1 和 P2 不能同时加入就绪队列。它们的添加必须有某种顺序(P1 在 P2 之前添加,或者 P2 在 P1 之前添加),因为当您要将进程添加到就绪队列时,您必须同步访问到就绪队列,以避免损坏队列。在单核系统上,您可以通过在修改队列时禁用中断来做到这一点。在多核系统上,您可以通过锁定和禁用中断的某种组合来实现这一点,具体取决于内核的实现。

    以单核为例,假设一个定时器中断到达,导致您抢占 P1。收到定时器中断时禁用中断。当您将 P1 添加到队列中时,P2 不可能变为可用,无论这是由于 P2 的某些 I/O 完成,还是用户启动 P2 等。中断已被禁用,因此您的内核赢了在将 P1 添加到队列并启用中断之前,不要为有关 P2 的任何事件而烦恼。 P2 也是如此 - 如果您将 P2 添加到队列中并且到达应该导致 P1 被抢占的定时器中断,则定时器中断将被忽略,直到 P2 被添加到队列中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-21
      • 1970-01-01
      • 2022-01-25
      • 2021-11-23
      • 1970-01-01
      • 1970-01-01
      • 2018-05-05
      • 2012-07-16
      相关资源
      最近更新 更多