多处理器和多线程 - 操作系统

时间:2015-07-12 17:48:53

标签: multithreading operating-system multiprocessing

我正在阅读使用Galvin教科书(第9版)的操作系统主题。在关于多线程的第4章中,我遇到了问题14,如下所示:

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

问题在于测试您是否了解有关并行化工作以提高速度的一些原则。其中一些原则是:

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

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