在多線程操作系統中,各個系統的實現方式並不相同。在有的系統中實現了用戶級線程,有的系統中實現了內核級線程
1.內核級線程:
(1)線程的創建、撤銷和切換等,都需要內核直接實現,即內核了解每一個作為可調度實體的線程。
(2)這些線程可以在全系統內進行資源的競爭。
(3)內核空間內為每一個內核支持線程設置了一個線程控制塊(TCB),內核根據該控制塊,感知線程的存在,並進行控制。
在一定程度上類似於進程,只是創建、調度的開銷要比進程小。有的統計是1:10
2.用戶級線程:
(1)用戶級線程僅存在於用戶空間。——>對比內核(3)
(2)內核並不能看到用戶線程。——>重要的區別
(3)內核資源的分配仍然是按照進程進行分配的;各個用戶線程只能在進程內進行資源競爭。
用戶線程運行在一個中間系統上面。目前中間系統實現的方式有兩種,即運行時系統(Runtime System)和內核控制線程。
“運行時系統”實質上時用於管理和控制線程的函數集合。包括創建、撤銷、線程的同步和通信的函數以及調度的函數。這些函數都駐留在用戶空間作為用戶線程和 內核之間的接口。用戶線程不能使用系統調用,而是當線程需要系統資源時,將請求傳送給運行時,由後者通過相應的系統調用來獲取系統資源。
內核控制線程:
系統在分給進程幾個輕型進程(LWP),LWP可以通過系統調用來獲得內核提供的服務,而進程中的用戶線程可通過復用來關聯到LWP,從而得到內核的服務。
內核線程的優點:
(1)
(2)當有多個處理機時,一個進程的多個線程可以同時執行
缺點:
(1)由內核進行調度
用戶進程的優點:
(1)線程的調度不需要內核直接參與,控制簡單
缺點:
(1)資源調度按照進程進行,多個處理機下,同一個進程中的線程只能在同一個處理機下分時復用。