如果我们在就绪队列中有三个进程 P1、P2、P3。假设时间片是 4 秒,P1 有 2 秒的 CPU 突发,然后它有 5 秒的 I/O 突发。现在 CPU 将执行 P1 2 秒,这里有两种情况
CPU 会给 P1 2 秒,因为时间片是 4 秒,所以 CPU 会记住 P1 已经消耗了 2 秒,并且当它从 I/O 返回下一次 CPU 突发时,将给 P1 2 秒而不是 4 秒时间片?(如果下一个 CPU 爆发时间大于 2 秒)
CPU会给P1 2秒,因为它的CPU突发已经结束并且它已经自愿离开CPU并且已经进行了I/O突发,所以CPU不必记住任何东西,当它从I/O返回时它会给定 4 秒的时间片,但这里有一个问题....假设 P1 有 5 秒的 CPU 突发。CPU 给 P1 4 秒并将其移动到队列的尾部,当它的 P1 再次轮到它时,它给它 1 秒,因为它还有 1 秒的 CPU 突发,它会去 I/O,现在 CPU 会记住它已经消耗了 1 秒的时间片,每当它从 I/O 返回时,都会给它 3 秒,但这不是相同的场景吗?P1 有 4 秒的时间片,它消耗 1 并且 CPU 突发结束,它自愿离开 CPU 与上述情况相同并进行 I/O,CPU 不应该记住它' 从 I/O 返回后只给出 3 秒?在这种情况下,CPU 在任何情况下都不必记住任何内容,并且当每个进程从 I/O 返回时会给它 4 秒的时间。
哪个场景是正确的?你可以解释吗 ?