2015-07-12 63 views
-2

我正在使用高尔文(第9版)的教科书讨论操作系统的主题。关于多线程的第4章中,我遇到了问题14,如下所示:多处理器和多线程 - 操作系统

具有两个双核处理器的系统有四个可用于调度的处理器。这个系统上运行着一个CPU密集型应用程序。所有输入都在程序启动时执行,当一个文件必须打开时。同样,所有输出都在程序结束之前执行,此时程序结果必须写入单个文件。在启动和终止之间,程序完全受CPU限制。您的任务是通过多线程处理来提高此应用程序的性能。应用程序在使用一对一线程模型(每个用户线程映射到内核线程)的系统上运行。

•您将创建多少个线程来执行输入和输出?说明。 •您将为应用程序的CPU密集部分创建多少个线程?说明。

对于第一部分,我认为我们可以创建4个线程用于从文件读取输入以及将输出写入文件。这是因为在输入或输出期间,不会更新正在执行的数据。

对于第二部分,对数据执行操作的性质是未知的,例如,(1)要打印数据的平均值还是(2)打印第一个数据的平均值和最后的数据点,然后打印第二和第二个最后的数据点的平均值,依此类推。

因此,对于第二部分,可以使用一个线程来处理操作。

但我不太确定我给出的答案是否正确。所以,如果你能让我知道正确的答案,我将非常感激。

+1

我从来没有读过高尔文的书,但从这里提出的问题来看,它必须是完全的卡卡。问题中没有足够的信息来给出正确的答案。 – user3344003

+0

我遇到了问题,贴出了完全相同的问题,也写了我认为应该是答案并要求更正的问题。我不明白为什么它应该邀请降价? :( – Neha

回答

1

问题是如果您了解有关并行化工作以提高速度的一些原则,则需要进行测试。其中一些原则是:

  • 在通常情况下,读取和写入单个文件不能使用多个内核来加速。文件I/O的速度取决于文件存储位置和方式的属性。抛出更多的线程不会有帮助,因为那些线程只是等待I/O完成。
  • 您用于CPU密集型部分的线程数完全取决于计算的内容。如果程序正在为电影生成图像,请使用4个线程,因为这是完全平行的。如果工作负载完全是串行的,则使用1个线程,因为添加更多的线程无助(按定义)。

计算示例中的平均值几乎是完全平行的,所以您应该使用四个线程,而不是一个。

+0

感谢克雷格澄清。 – Neha