2011-04-08 41 views
7

我已經讀過,在多核心處理器中,每個核心包含2個硬件線程,例如雙核心處理器中4個硬件線程正在運行。現在,如果我在java中創建2個線程,這些線程將映射到2個硬件線程還是那些2個java線程由特定內核的單個硬件線程執行?硬件線程vs軟線程?

+0

操作系統負責跨處理器分配線程;如果你的線程做了很多工作,操作系統可能會把它們放在不同的CPU上。 – Blorgbeard 2011-04-08 09:15:34

+0

類似q:http://stackoverflow.com/questions/508301/on-which-operationg-system-is-threaded-programming-sufficient-to-utilize-multiple – Blorgbeard 2011-04-08 09:16:23

回答

3

這取決於很多事情,但是您指的每個內核的2個硬件線程是英特爾超線程技術。該技術使CPU能夠在內存中擁有兩個線程上下文並且可以同時執行,共享執行資源。

什麼線程運行在哪裏是操作系統的實現依賴和主要由您的操作系統的線程調度算法解決。

+0

但是這些軟件線程和java線程和硬件線程依賴還是獨立?因爲java thredas是在一個名爲jvm的進程內創建的...... – Bhadri 2011-04-08 09:31:09

+1

對Intel超線程的描述並不準確。 *一些*資源被交替地提供給一個或另一個線程,但是*執行單元被共享*並且這兩個線程可能同時完成實際工作。當一個線程停滯時,當然資源爭奪最少。 [更多此處(PDF)](http://www.intel.com/technology/itj/2002/volume06issue01/vol6iss1_hyper_threading_technology.pdf)。 – rlibby 2011-04-08 09:47:37