使用者級執行緒和核心級執行緒

2021-06-10 02:15:49 字數 1381 閱讀 4187

根據在使用者空間還是在核心實現多執行緒機制,執行緒又被分為使用者級執行緒(user level thread)和核心級執行緒(kernel level thread)。

有關執行緒的所有管理工作都有在使用者級實現的執行緒庫來支援。使用者級執行緒庫是用於使用者級執行緒管理的例程包,支援執行緒的建立、終止,以及排程執行緒的執行並儲存和恢復執行緒的上下文,這些操作都在使用者空間執行,無需核心的支援,所以使用者級執行緒的建立和管理等操作更快。對於那些核心本身不支援多執行緒的作業系統,通過使用者級執行緒庫可以使使用者獲得多執行緒程式設計的好處。

由於核心不能感知到使用者及執行緒的存在,核心仍然以程序為單位進行排程,當核心排程乙個程序執行時,使用者級執行緒庫排程該程序的乙個執行緒執行,如果時間片允許,程序的其他執行緒也可能被執行,該程序的多個執行緒共享該程序的執行時間片。如果乙個執行緒需要進行i/o讀寫,該執行緒呼叫系統呼叫進入核心,在啟動i/o裝置後核心會把該程序值為阻塞態,並把cpu分配給其他程序。即使該程序的其他執行緒可以執行,核心也不會發現這一情況,在該程序的狀態變為就緒之前核心不會排程該程序執行,因而屬於該程序的執行緒都不可能執行,因而使用者級執行緒的並行性會受到一定的限制。

核心級執行緒的所有管理操作都是由作業系統核心完成的。核心儲存執行緒的狀態和上下文資訊,當乙個執行緒執行了引起阻塞的系統呼叫時,核心可以排程該程序的其他執行緒執行。在多處理器系統上,核心可以分派屬於同一程序的多個執行緒在多個處理器上執行,提高程序執行的並行度。

由於需要核心完成執行緒的建立、排程和管理,所以和使用者級執行緒相比這些操作要慢得多,但是仍然比程序的建立和管理操作要快。大多數市場上的作業系統,windows 2000,solaris 2,linux等都支援核心級執行緒。

有的作業系統提供了組合的執行緒模式,在solaris 中,使用者建立的多個使用者級執行緒被對映到一些核心執行緒上,核心執行緒的數目可能少於使用者級執行緒的數目,核心級執行緒的數目決定了該程序的併發度。

多執行緒的對映模型

對於實現了使用者級執行緒和核心級執行緒的作業系統,使用者級執行緒和核心級執行緒之間可以有不同的對映方式。

(1)多對一模型。

(2)一對一模型。

(3)多對多模型。

對比:雖然多對一模型對建立使用者級執行緒的數目並沒有限制,但這些執行緒在同一時刻只能有乙個被執行。

一對一模型可以獲得高併發性,但因耗費資源而使執行緒數會受到限制。

多對多模型具有多對一和一對一兩種模型的優勢,使用者可以建立所需要的使用者級執行緒,通過分配適當數目的核心級執行緒獲得併發執行的優勢並節省系統資源。

使用者級執行緒和核心級執行緒

執行緒有3種實現模型 使用者級或應用程式級執行緒 核心級執行緒 使用者級和核心級混合執行緒 圖6 1顯示了3種執行緒實現模型。圖6 1 a 顯示了使用者級執行緒,圖6 1 b 顯示了核心級執行緒,圖6 1 c 則顯示了使用者執行緒和核心執行緒的混合。這些實現之間的較大的區別之一就是它們的模式以及要指...

使用者級執行緒和核心級執行緒

6.1.1 使用者級執行緒和核心級執行緒 執行緒有3種實現模型 使用者級或應用程式級執行緒 核心級執行緒 使用者級和核心級混合執行緒 圖6 1顯示了3種執行緒實現模型。圖6 1 a 顯示了使用者級執行緒,圖6 1 b 顯示了核心級執行緒,圖6 1 c 則顯示了使用者執行緒和核心執行緒的混合。這些實現...

核心級執行緒 和 使用者級執行緒

從執行緒實現的角度看,執行緒可以分成使用者級執行緒,核心級執行緒和輕量級執行緒。在核心級執行緒的實現中,執行緒管理的所有工作由作業系統核心來做,核心專門提供api供開發者使用,應用程式區不需要有執行緒管理的 核心級執行緒的優點 在多處理器上,核心能排程同一程序中多個執行緒併發執行 若程序中乙個執行緒...