2016-07-23 96 views
0

假設我在我的機器上有4個內核,並且我有一個產生4個線程的進程,而這是當前進程安排的,這4個線程都保留了這4個內核?進程佔用了多少核心?

+0

Linux實際上[進度線程](http://stackoverflow.com/questions/15601155/does-linux-schedule-a-process-or-a-thread),而不是進程。當我們談論調度過程時,我們通常會引用經典的,簡化的單線程過程。 –

回答

1

這是一個非常複雜的問題。不過,我可以幫忙。通常,1個進程只使用1個內核。實際上,1個線程只能由1個內核執行。如果你有一個雙核心處理器,它實際上是2個CPU一起粘在同一臺PC上。這些被稱爲物理處理器。這些物理主管執行1個線程。儘管一些CPU有2個物理內核,但能夠同時運行4個線程。這些額外的2個線程在邏輯內核上運行。它們並不物理存在,但在邏輯上存在於CPU中。

如果按進程表示線程,則是1進程1核心。你可以在4個計算核心上運行4個線程(這個名稱包含物理和邏輯核心,因爲一個核心cpu可能只有1個計算核心)。

如果通過進程表示程序或過程在任務管理器的進程選項卡中,則取決於程序的寫入方式。

從你的問題來看,如果一個進程產生4個線程,它取決於它在池中的什麼地方。有成千上萬的線程在等待執行。來自每個程序或可執行文件的線程不必同時執行。

1

您的進程的4個線程是獨立調度的 - 進程本身沒有安排。

如果所有4個線程同時運行,並且系統中沒有其他更高優先級的可運行線程,則可以在4個內核中同時調度所有4個線程。