-
執行緒
- 中文名
- 執行緒
- 外文名
- thread
- 別 稱
- 執行緒;輕量程式
- 應用學科
- 計算機
- 多執行緒中
- CPU的基本單位
- 定 義
- 程式執行流的最小單元
1.伺服器中的檔案管理或通訊控制
2.前後臺處理
3.非同步處理
在多執行緒OS中,通常是在一個程式中包括多個執行緒,每個執行緒都是作為利用CPU的基本單位,是花費最小開銷的實體。執行緒具有以下屬性。
1)輕型實體
執行緒中的實體基本上不擁有系統資源,只是有一點必不可少的、能保證獨立執行的資源。
執行緒的實體包括程式、資料和TCB。執行緒是動態概念,它的動態特性由執行緒控制塊TCB(Thread Control Block)描述。TCB包括以下資訊:
(1)執行緒狀態。
(2)當執行緒不執行時,被儲存的現場資源。
(3)一組執行堆疊。
(4)存放每個執行緒的區域性變數主存區。
(5)訪問同一個程式中的主存和其它資源。
用於指示被執行指令序列的程式計數器、保留區域性變數、少數狀態引數和返回地址等的一組暫存器和堆疊。
2)獨立排程和分派的基本單位。
在多執行緒OS中,執行緒是能獨立執行的基本單位,因而也是獨立排程和分派的基本單位。由於執行緒很“輕”,故執行緒的切換非常迅速且開銷小(在同一程式中的)。
3)可併發執行。
在一個程式中的多個執行緒之間,可以併發執行,甚至允許在一個程式中所有執行緒都能併發執行;同樣,不同程式中的執行緒也能併發執行,充分利用和發揮了處理機與外圍裝置並行工作的能力。
4)共享程式資源。
在同一程式中的各個執行緒,都可以共享該程式所擁有的資源,這首先表現在:所有執行緒都具有相同的地址空間(程式的地址空間),這意味著,執行緒可以訪問該地址空間的每一個虛地址;此外,還可以訪問程式所擁有的已開啟檔案、定時器、訊號量機構等。由於同一個程式內的執行緒共享記憶體和檔案,所以執行緒之間互相通訊不必呼叫核心。
程式是資源分配的基本單位。所有與該程式有關的資源,都被記錄在程式控制塊PCB中。以表示該程式擁有這些資源或正在使用它們。
另外,程式也是搶佔處理機的排程單位,它擁有一個完整的虛擬地址空間。當程式發生排程時,不同的程式擁有不同的虛擬地址空間,而同一程式內的不同執行緒共享同一地址空間。
與程式相對應,執行緒與資源分配無關,它屬於某一個程式,並與程式內的其他執行緒一起共享程式的資源。
執行緒只由相關堆疊(系統棧或使用者棧)暫存器和執行緒控制表TCB組成。暫存器可被用來儲存執行緒內的區域性變數,但不能儲存其他執行緒的相關變數。
通常在一個程式中可以包含若干個執行緒,它們可以利用程式所擁有的資源。在引入執行緒的作業系統中,通常都是把程式作為分配資源的基本單位,而把執行緒作為獨立執行和獨立排程的基本單位。由於執行緒比程式更小,基本上不擁有系統資源,故對它的排程所付出的開銷就會小得多,能更高效的提高系統內多個程式間併發執行的程度,從而顯著提高系統資源的利用率和吞吐量。因而近年來推出的通用作業系統都引入了執行緒,以便進一步提高系統的併發性,並把它視為現代作業系統的一個重要指標。
執行緒與程式的區別可以歸納為以下4點:
1)地址空間和其它資源(如開啟檔案):程式間相互獨立,同一程式的各執行緒間共享。某程式內的執行緒在其它程式不可見。
2)通訊:程式間通訊IPC,執行緒間可以直接讀寫程式資料段(如全域性變數)來進行通訊——需要程式同步和互斥手段的輔助,以保證資料的一致性。
3)排程和切換:執行緒上下文切換比程式上下文切換要快得多。
4)在多執行緒OS中,程式不是一個可執行的實體。