執行緒有哪些主要介紹與特點

  執行緒是程序中的一個實體,是被系統獨立排程和分派的基本單位。以下是由小編整理的執行緒的內容,希望大家喜歡!

  執行緒的介紹

  執行緒,有時被稱為輕量級程序***Lightweight Process,LWP***,是程式執行流的最小單元。一個標準的執行緒由執行緒ID,當前指令指標***PC***,暫存器集合和堆疊組成。另外,執行緒自己不擁有系統資源,只擁有一點兒在執行中必不可少的資源,但它可與同屬一個程序的其它執行緒共享程序所擁有的全部資源。一個執行緒可以建立和撤消另一個執行緒,同一程序中的多個執行緒之間可以併發執行。由於執行緒之間的相互制約,致使執行緒在執行中呈現出間斷性。執行緒也有就緒、阻塞和執行三種基本狀態。就緒狀態是指執行緒具備執行的所有條件,邏輯上可以執行,在等待處理機;執行狀態是指執行緒佔有處理機正在執行;阻塞狀態是指執行緒在等待一個事件***如某個訊號量***,邏輯上不可執行。每一個程式都至少有一個執行緒,若程式只有一個執行緒,那就是程式本身。

  執行緒是程式中一個單一的順序控制流程。程序內一個相對獨立的、可排程的執行單元,是系統獨立排程和分派CPU的基本單位指執行中的程式的排程單位。在單個程式中同時執行多個執行緒完成不同的工作,稱為多執行緒。

  執行緒的特點

  在多執行緒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中,程序不是一個可執行的實體。

  執行緒的基本屬性

  在多執行緒OS中,通常是在一個程序中包括多個執行緒,每個執行緒都是作為利用CPU的基本單位,是花費最小開銷的實體。執行緒具有以下屬性。

  1***輕型實體

  執行緒中的實體基本上不擁有系統資源,只是有一點必不可少的、能保證獨立執行的資源,比如,在每個執行緒中都應具有一個用於控制執行緒執行的執行緒控制塊TCB,用於指示被執行指令序列的程式計數器、保留區域性變數、少數狀態引數和返回地址等的一組暫存器和堆疊。

  2***獨立排程和分派的基本單位。

  在多執行緒OS中,執行緒是能獨立執行的基本單位,因而也是獨立排程和分派的基本單位。由於執行緒很“輕”,故執行緒的切換非常迅速且開銷小。

  3***可併發執行。

  在一個程序中的多個執行緒之間,可以併發執行,甚至允許在一個程序中所有執行緒都能併發執行;同樣,不同程序中的執行緒也能併發執行。

  4***共享程序資源。

  在同一程序中的各個執行緒,都可以共享該程序所擁有的資源,這首先表現在:所有執行緒都具有相同的地址空間***程序的地址空間***,這意味著,執行緒可以訪問該地址空間的每一個虛地址;此外,還可以訪問程序所擁有的已開啟檔案、定時器、訊號量機構等。


執行緒的特點