2010-07-09 130 views
14

說出如果我有一個處理器,如this,它表示#cores = 4,#threads = 4並且沒有超線程支持。線程vs內核

這是否意味着我可以同時運行4個程序/進程(因爲一個內核只能運行一個線程)? 或者這是否意味着我可以同時運行4 x 4 = 16程序/進程?

從我的挖掘中,如果沒有超線程,每個核心將只有1個線程(進程)。糾正我,如果我錯了。

回答

10

這基本上是正確的,顯而易見的限定條件是大多數操作系統允許您同時執行遠遠多於內核或線程的任務,這些內核或線程通過交錯執行指令來完成。

具有超線程的系統的硬件線程數通常是物理內核的兩倍。

+0

您可能想要小心使用「同時」。對用戶來說,可能會出現一些任務正在同時發生,但實際的硬件可能不會同時執行每項任務。我認爲@mikaelbrandin在並行和併發方面的信息是有用的。 – user3731622 2017-01-06 18:11:52

+1

@ user3731622我在答案中說明了CPU可以交錯指令,從而明確了這一點。我怎麼能使它更清晰? – 2017-01-07 03:33:41

+0

你的答案對於有經驗的人可能相當清楚。一種方法可以讓沒有經驗的人更清楚一點,那就是如果你使用某種形式的詞同時出現或並行出現,並描述了當它不是實際同時發生時可能出現的同時出現的情況。 – user3731622 2017-01-09 17:09:13

5

術語線程通常用作操作系統概念的描述,其中潛在可以獨立於其他線程執行。不管它是否卡住等待某個事件(磁盤或屏幕I/O,消息隊列),或者是否有足夠的物理CPU(超線程或非超級線程)允許它在其他非等待中運行線程。

超線程是一個CPU供應商術語,意思是一個單核,可以在兩個計算之間複用它的注意力。思考超線程核心的簡單方法就好像你有兩個真正的CPU,兩者都比製造商說核心實際上可以做的稍慢。

12

線程不同於進程。一個進程可以有很多線程。線程是一系列具有特定順序的命令。邏輯核心可以在一系列命令上執行。操作系統將所有線程分配給所有可用的邏輯內核,並且如果線程數多於內核線程數,線程將以快速提示進行處理,並且內核之間的切換速度非常快。

看起來像所有線程同時運行,實際上操作系統分配CPU時間。

擁有多個內核具有以下優點:併發線程少於一個內核,線程之間切換更少=速度更快。

超線程技術在1個物理內核上創建2個邏輯內核,並使得線程之間的切換速度更快。

2

基本上這取決於操作系統。線程是一個持有指令指針的高級構造,操作系統在適當的邏輯處理器上放置線程執行。因此,使用4個內核,您可以基本上並行執行4條指令。作爲線程的地方只包含有關要執行的指令和指令在內存中的位置的信息。

應用程序通常在執行期間使用單個進程,OS在進程之間切換以使所有進程「等於」進程時間。當應用程序部署多個線程時,進程分配多個時隙用於執行,但在線程之間共享內存。

通常情況下,您在併發執行和並行執行方面有所不同。如果實際上實際執行多個邏輯處理器的指令並行執行,並行執行是單個邏輯處理器的頻繁切換,並行執行的出現。