我正在阅读使用Galvin教科书(第9版)的操作系统主题。在关于多线程的第4章中,我遇到了问题14,如下所示:
具有两个双核处理器的系统有四个可用于调度的处理器。 CPU密集型应用程序正在此系统上运行。当必须打开单个文件时,所有输入都在程序启动时执行。类似地,所有输出都在程序终止之前执行,此时程序结果必须写入单个文件。在启动和终止之间,程序完全受CPU限制。您的任务是通过多线程来提高此应用程序的性能。应用程序在使用一对一线程模型的系统上运行(每个用户线程映射到内核线程)。
•您将创建多少个线程来执行输入和输出?说明。 •您将为应用程序的CPU密集部分创建多少个线程?解释
对于第一部分,我认为我们可以创建4个线程来获取从文件读取的输入以及将输出写入文件。这是因为在输入或输出期间,没有更新正在执行的数据。
对于第二部分,要对数据执行的操作的性质是未知的,例如,是(1)要打印数据的平均值还是(2)打印第一个和第二个的平均值的函数最后的数据点,然后打印第二个和第二个最后数据点的平均值,依此类推。
因此,对于第二部分,可以使用一个线程来处理操作。
但我不太确定我在这里给出的答案是正确的。所以,如果你能让我知道正确的答案,我将非常感激。
答案 0 :(得分:1)
问题在于测试您是否了解有关并行化工作以提高速度的一些原则。其中一些原则是:
计算示例中的平均值几乎完全平行,因此您应该使用四个线程,而不是一个。