2015-07-12 62 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