2009-08-12 27 views
0

如果有,關係是什麼?CPU和線程之間是否有任何關係?

+4

這聽起來像作業。這個問題缺少的是簡單的術語'解釋',或者'提供的空間解釋'。 – akf 2009-08-12 07:33:24

+0

如果我提出一個不壞的問題,它會聽起來像作業? – Johanna 2009-08-12 07:35:13

回答

2

單個CPU(核心)一次只能運行一個線程。

如果你有比CPU多的線程,它們將使用某種時間分割算法進行調度。

1

線程是分配給CPU內核的工作單元。

在任何給定的時刻,任何線程都被掛起(未運行)或正在一個核心上運行。每個核心都是空閒的(不運行任何線程)或者只運行一個線程。

將線程分配給核心是操作系統調度程序作業。

2

一個CPU可以同時運行一個單線程,這就是爲什麼當你製作一個多線程應用程序時,雙核或多核的概念可以用於paraller處理你的程序單元。

12

將CPU視爲一個人,將一個線程視爲一個人必須執行的單個任務。例如,如果一個人試圖洗碗,準備早餐,把衣服放在孩子身上,並且確保貓不吃狗食,那麼這個人必須迅速地在任務之間來回切換,以便同時在所有任務上取得進展。

但是那個人一次只能做一件事。

重遊2013:請注意,以上不一定是正確的。首先,一個單一的「處理器」現在擁有多個內核,每個內核都可以同時與管道進行多種事情,而不是什麼。這是一個複雜得多的世界,而不僅僅是「一個CPU一次只能做一件事」。

+2

豬sw水!除了我們沒有貓或狗之外,我的妻子可以做到這一切,甚至更多,具有真正的併發性:-) +1。 – paxdiablo 2009-08-12 07:39:29

+1

也許你的妻子是超線程的多核CPU? :) – Thorarin 2009-08-12 07:40:13

+2

也許*帕克斯*是摩門教 – 2009-08-12 09:04:09

1

有多種關係可能的,這取決於系統體系結構:

  • 爲單個處理器的情況下,關係是1:N(其中N是線程的數量)。對於多處理器/多核/超線程的情況,一切將在單處理器上運行,其關係大約爲P:N(其中P是處理器的數量),然而,線程執行成爲'多維'調度問題。

您的操作系統的線程調度程序將根據運行時特性(使用的CPU週期,阻塞),用戶首選項(親和性,爲活動窗口提供服務的線程)在可用處理單元之間分配線程,和其他屬性。例如,如果您有1個密集的計算線程和10個I/O線程,並且有很多等待,OS調度程序將很可能將T1分配給P1和T2-T11分配給P2,然後關閉其餘內核節能和緩存重新分配來支持P1。 T1將成爲其使用的整個核心,並不會被T2-T11搶佔。

相關問題