我对Round Robin CPU进程调度的基本概念感到困惑,其中短期调度程序将进程添加到就绪队列。
如果系统中存在3个过程P0,P1和P2,并且在5秒和P1到达时(即在第5秒)同时发生P1的上下文切换。在这种情况下,哪个进程首先插入就绪队列,P1或P2? 两种情况下的总体平均等待时间可能没有差异,但是过程的个别等待时间会有所不同。
答案 0 :(得分:0)
P1和P2不可能同时添加到就绪队列中。必须有一些添加顺序(在P2之前添加P1,或在P1之前添加P2),因为当您想要将进程添加到就绪队列时,您必须同步访问到就绪队列,以避免破坏队列。在单核系统上,您可以通过在修改队列时禁用中断来执行此操作。在多核系统上,您可以通过锁的一些组合和禁用中断来执行此操作,具体取决于内核的实现。
作为单核上的一个例子,假设有一个定时器中断到达,导致你抢占P1。收到定时器中断时禁用中断。当您将P1添加到队列时,P2无法变为可用,无论这是由于P2的某些I / O完成,还是用户启动P2等。中断已被禁用,因此您的内核赢了在将P1添加到队列并启用中断之前,不会对任何有关P2的事件感到困扰。对于P2也是如此 - 如果要将P2添加到队列中并且到达应该导致P1被抢占的定时器中断,则只有在P2被添加到队列之前才会忽略定时器中断。
答案 1 :(得分:0)
P1 会因为老化而第一次被执行。而 P2 将被添加到最后一个执行进程之前的队列末尾。
这意味着 P1 将开始执行,P2 将被添加到队列末尾,就在最后执行的进程之前,即 P0。因此,您的就绪队列将类似于 P1、P2、P0,其中 P1 当前正在执行。