【发布时间】:2021-07-09 10:45:42
【问题描述】:
这是我在这里的第一篇文章。 我目前正在学习现代操作系统,但我被困在这个问题上:计算机系统有足够的空间在其主存储器中容纳五个程序。这些程序有一半时间空闲等待 I/O。浪费了多少 CPU 时间? 答案是 1/32,但为什么呢?
【问题讨论】:
标签: operating-system
这是我在这里的第一篇文章。 我目前正在学习现代操作系统,但我被困在这个问题上:计算机系统有足够的空间在其主存储器中容纳五个程序。这些程序有一半时间空闲等待 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 一半时间”的意思。
【讨论】: