首页 > 解决方案 > 浪费了多少 CPU 时间?(现代操作系统,第 4 版)

问题描述

这是我在这里的第一篇文章。我目前正在学习现代操作系统,但我陷入了这个问题:计算机系统有足够的空间在其主存储器中容纳五个程序。这些程序有一半时间空闲等待 I/O。浪费了多少 CPU 时间?答案是 1/32,但为什么呢?

标签: operating-system

解决方案


答案是 1/32,但为什么呢?

这些程序有一半的时间是空闲等待 I/O ”这句话是模棱两可的。让我们看一下解释这句话的几种不同方式,看看它们是否符合预期的答案:

a) “5 个程序中的每一个都花费 50% 的总时间等待 IO”。在这种情况下,当一个程序正在等待 IO 时,CPU 可能正在被其他程序使用;并且所有程序组合起来可以使用 100% 的 CPU 时间而不会浪费时间。事实上,你可以只用 2 个程序使用 100% 的 CPU 时间(第一个程序使用 CPU,而第二个程序等待 IO,然后第二个程序使用 CPU,而第一个任务等待 IO,然后...)。这不可能是“这些程序空闲等待 I/O 一半时间”的预期含义,因为答案(可能浪费了零 CPU 时间)与预期答案不匹配。

b) “所有程序同时空闲等待 I/O,有一半时间”。这不可能是问题的预期含义,因为答案显然是“浪费了 50% 的 CPU 时间”并且与预期的答案不匹配。

c)“每个程序花费一半的可用时间等待 IO”。在这种情况下,第一个程序有 100% 的可用 CPU 时间,但有 50% 的时间使用 CPU,另外 50% 的时间等待 IO,剩下 50% 的 CPU 时间可用于下一个程序; 然后第二个程序使用剩余 CPU 时间的 50%(总时间的 25%)使用 CPU,剩余 CPU 时间的 50%(总时间的 25%)用于等待 IO,剩下 25% 的 CPU 时间可用于下一个节目;那么第三个程序使用剩余 CPU 时间的 50%(占总时间的 12.5%)使用 CPU,剩余 50% 的 CPU 时间(占总时间的 12.5%)用于等待 IO,剩下 12.5% 的 CPU 时间可用下一个节目,然后...

在这种情况下,每个程序将剩余时间减半,因此您会得到一个“2 的负幂”序列(1/2、1/4、1/8、1/16、1 /32)得出答案符合预期的答案。

因为我们得到了这个解释的正确答案,我们可以假设这就是“这些程序空闲等待 I/O 一半时间”的意思。


推荐阅读