2012-05-09 264 views
-3

我有很大的問題,從長遠來看。基本上我想知道是否有LINUX系統上運行N個進程和每個線程有多個線程(在多核CPU上)。多核CPU在同一時間調度同一進程的多個線程

在LINUX操作系統有一個可能性,即linux在相同實例的不同內核上運行同一進程的多個線程(如果時間的話)。我有疑問,因爲Linux線程共享共同的虛擬空間可能是Linux必須同步它可以是操作系統的負擔是我的想法。

如果linux沒有在相同的實例時間安排相同的進程thred,我認爲它可以提供更好的性能。

+0

歡迎來到SO。我沒有倒下,但我認爲你的問題是被低估的,因爲這是你可以使用Google找到的基本信息。請閱讀[FAQ]和[問]。 –

+1

基於不完整和/或不正確的信息,您正在跳到很多錯誤的結論!是的:不同的線程可以使用不同的內核和/或不同的CPU。是的,同一進程中的線程共享相同的地址空間這一事實意味着您必須保護全局變量。 *任何操作系統都是如此。不,虛擬內存與線程或CPU調度幾乎沒有關係(當然,除了進程 - 在任何操作系統 - 阻塞等待磁盤出現頁面錯誤)。不,我也沒有讓你失望。 – paulsm4

回答

3

當然可以。如果沒有,那麼應用程序首先是多線程的,而不是掩蓋程序員的弱點。

+0

或編程語言或庫的弱點。很多時候你需要線程的原因是處理不能以非阻塞方式使用的標準或第三方庫代碼。想到DNS查找。如果要確保主機名查找語義與標準操作系統行爲相匹配,則不阻塞的唯一方法是創建一個新線程來調用'gethostbyname'。 –

2

如果您的系統具有N個內核,則可以通過並行化(劃分)應用程序工作負載,讓我們說m個任務或線程來利用它。通過這樣做,系統可以同時執行n個核心中的m個任務。

1

是的,這當然是支持的,因爲您懷疑這是一個相當複雜的負擔。對於(很多)更詳細的請看這個優秀(和非常詳細)的內存管理概述: http://lwn.net/Articles/250967/

相關問題