核心級執行緒和使用者級執行緒的異同(2

2021-06-28 03:37:51 字數 1196 閱讀 7275

這幾天在和同學討論的時候,對於核心執行緒和使用者執行緒概念上出現了問題,在網上搜尋了不少文章,感覺還是不是我想要的,下來檢視了以前學習的作業系統才弄

明白,在這裡將我的理解寫出來讓大家看看,和大家分享分享。。。

執行緒已經在許多系統中實現,到那時各個作業系統實現方式不完全相同。

比如在有的系統中,特倍是一些資料庫管理系統如ibm的infomix系統,所實現的使用者級執行緒(userlevel threads ,ult);而另一些系統如(mac os的前身macintosh和os/2作業系統)所實現的是核心支援執行緒 ( kernel supported threads, kst);還有一些是solaris作業系統,則同時實現了這兩中型別的執行緒。

對於一切的程序,無論是系統程序還是使用者程序,程序的建立和撤銷,以及i/o操作都是利用系統呼叫進入到核心,由核心處理完成,所以說在kst下,所有程序都是在作業系統核心的支援下執行的,是與核心緊密相關的。核心空間實現還為每個核心支援執行緒設定了乙個執行緒控制快,核心是根據該控制快而感知某個執行緒是否存在,並加以控制。

優點: 

在多處理器上,核心可以呼叫同一程序中的多個執行緒同時工作;

如果乙個程序中的乙個執行緒阻塞了,其他執行緒仍然可以得到執行;

缺點:對於使用者執行緒的切換代價太大,在同乙個執行緒中,從乙個執行緒切換到另乙個執行緒時,需要從使用者態,進入到核心態並且由核心切換。因為執行緒排程和管理在核心實現。

使用者程序ult僅存在於使用者空間中。對於這種執行緒的建立、撤銷、執行緒之間的同步和通訊等功能,都無需系統呼叫來實現。對於同一程序的執行緒之間切換仍然是不需要核心支援的。所以呢,核心也會是完全不會知道使用者級執行緒的存在。

但是有一點必須注意:設定了使用者級執行緒的系統,其排程荏苒是以程序為單位進行的哦。

優點:執行緒切換不需要轉換到核心空間,節省了寶貴的核心空間;

排程演算法可以是程序專用,由使用者程式進行指定;

使用者級執行緒實現和作業系統無關;

缺點:系統呼叫阻塞,同一程序中乙個執行緒阻塞和整個程序都阻塞了。

乙個程序只能在乙個cpu上獲得執行。

在很多的作業系統中ult和klt進行組合,整合了ult和klt的優點。

其實我認為,現在操作提供肯定都是支援組合方式的,比如windows以及unix中很多也是。

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

根據在使用者空間還是在核心實現多執行緒機制,執行緒又被分為使用者級執行緒 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 則顯示了使用者執行緒和核心執行緒的混合。這些實現...