關於用戶級線程和內核級線程的蒐集和理解

1.內核級線程:

(1)線程的創建、撤銷和切換等,都需要內核直接實現,即內核瞭解每一個作爲可調度實體的線程。
(2)這些線程可以在全系統內進行資源的競爭。
(3)內核空間內爲每一個內核支持線程設置了一個線程控制塊(TCB),內核根據該控制塊,感知線程的存在,並進行控制。
在一定程度上類似於進程,只是創建、調度的開銷要比進程小。有的統計是1:10

2.用戶級線程:

(1)用戶級線程僅存在於用戶空間。——>對比內核(3)
(2)內核並不能看到用戶線程。——>重要的區別
(3)內核資源的分配仍然是按照進程進行分配的;各個用戶線程只能在進程內進行資源競爭。

 

posix線程調度是一個混合模型,很靈活,足以在標準的特定實現中支持用戶級和內核級的線程。模型中包括兩級調度--線程及和內核實體級。線程級與用戶級線程類似,內核實體由內核調度。由線程庫來決定它需要多少內核實體,以及他們是如何映射的。

POSIX 引入了一個線程調度競爭範圍(thread-scheduling contention scope)的概念,這個. 概念賦予了程序員一些控制權,使它們可以控制怎樣將內核實體映射爲線程。線程的contentionscope屬性可是PTHREAD_SCOPE_PROCESS,也可以是PTHREAD_SCOPE_SYSTEM。帶有PTHREAD_SCOPE_PROCESS屬性的線程與它所在的進程中的其他線程競爭處理器資源。帶有PTHREAD_SCOPE_SYSTEM屬性的線程很像內核級線程,他們在全系統的範圍內競爭處理器資源。POSIX的一種映射方式將PTHREAD_SCOPE_SYSTEM線程和內核實體之間綁定起來。



內核級線程是操作系統內核實現、管理和調度的一種線程。由於有操作系統管理,所以操作系統是知道線程的存在,併爲其安排時間片,管理與其有關的內核對象。因爲內核級線程是由內核來管理,所以每次線程創建、切換都要執行一個模式切換例程,所以內核級線程效率比較低,而且內核級線程的調度是由操作系統的設計者來決定的,所以缺乏靈活性。但是內核級線程有一個有點就是當一個進程的某個線程因爲一個系統調用或者缺頁中斷而阻塞時,不會導致該進程的所有線程阻塞。

內核級線程的優點:   較好的並行能力,一個進程內的線程阻塞不會影響該進程內的其他線程
內核級線程的缺點:  線程管理的開銷過大,缺乏靈活性。

用戶級線程是通過運行在用戶態的運行時庫來管理的,其優點是,線程的一切(包括調度、創建)都可以完全由用戶自己決定,所以具有較高的靈活性。而且由於是在用戶態上進行管理,所以就省去了內核管理的開銷,所以具有高效率。 但是用戶級線程有一個致命的缺點:一個進程內的某一個線程阻塞將導致整個進程內的所有線程全部阻塞。而且由於用戶級線程沒有時間片概念,所以每個線程必須運行一段時間後將CPU讓個其他的線程使用,否則,該線程將獨佔CPU。

用戶級線程的優點: 有較高的靈活性和高效率
用戶級線程的缺點: 較差併發能力

由於兩種線程通常都不能滿足用戶的需要,所以一些研究者開始研究新型的線程系統,比較好的線程系統是1993年幾個國外的研究者提出的  調度程序激活機制的線程實現方法。

這種方法是介於內核級線程和用戶級線程之間的一種線程,同時具有兩種線程的優點。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章