Linux使用者級執行緒和核心級執行緒區別

2022-07-10 02:12:08 字數 1067 閱讀 6013

(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執行緒和核心實體之間繫結起來。

核心級執行緒建立時先設定執行緒屬性pthread_scope_system,**如下,:

pthread_attr_t attr;

pthread_attr_init(&attr);

pthread_attr_setscope(&attr, pthread_scope_system); //設定核心級的執行緒,以獲取較高的響應速度

//建立執行緒

ret = pthread_create(&iacceptthreadid, &attr, acceptthread, null);

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

根據在使用者空間還是在核心實現多執行緒機制,執行緒又被分為使用者級執行緒 user level thread 和核心級執行緒 kernel level thread 有關執行緒的所有管理工作都有在使用者級實現的執行緒庫來支援。使用者級執行緒庫是用於使用者級執行緒管理的例程包,支援執行緒的建立 終止,...

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

執行緒有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 則顯示了使用者執行緒和核心執行緒的混合。這些實現...