2014-10-04 33 views
1

問題: 一次在多個處理器上一起調度進程的所有線程與一次調度一個線程(來自不同進程)的優勢和/或可能的缺點因爲單個處理器可用?瞭解有關多線程的基本概念

更新注意:考慮一個多處理器,並與兩個線程的過程。假設一次只運行一個線程。該線程curretly運行發送消息到第二個線程,然後阻止等待答覆(並因此從CPU中取出)。一段時間後,第二個線程被調度,從第一個線程接收消息,發送回覆,然後阻止等待來自第一個線程的新消息。經過一段時間後,第一個線程被調度,處理回覆,發送新消息,然後被阻止,等待新的回覆等等。如果兩個線程同時運行,則可以避免所有這些切換。

回答

1

如果我理解正確的問題,調度線程隨着處理器變得可用,讓他們完成運行調度該處理器在另一個線程通常會在總吞吐量方面更有效,因爲之前你不會有上下文的開銷交換。然而,這種假設進程/線程的行爲本身 - 相反,如果一個線程進入一個無限循環或變得膠着,那麼你已經永久丟失訪問其處理器。調度一切都在運行一次引入上下文切換開銷,但如果一個線程/處理器沒有很好的表現,那麼你仍然可以依靠操作系統上偶爾中斷,並讓另一個線程/進程做處理器的一些工作。

1

通常,調度進程的所有線程一起上一次廢物處理器的多個處理器。如果一個8核心處理器有兩個內核在X進程中運行2個線程,而另一個進程Y有7個線程準備就緒,你該怎麼辦?拒絕運行Y?

的一套現成的線程改變硬件中斷髮生和正在運行的線程進行系統調用。強制調度算法採用「所有準備好的進程或沒有進程的策略」策略是不合理的限制。