作業系統中的執行緒種類
執行緒在現在作業系統中使用非常廣泛,但是在各個系統中實現的方式各有不同,如infomix實現的是使用者級執行緒,而macintosh實現的是核心支援執行緒,比如Solaris OS兩者都實現了。
1.核心支援執行緒(Kernel Supported Threads)
在OS中的所有程式,無論是系統程式還是使用者程式,都是在作業系統核心的支援下執行的,是與核心緊密相關的。而核心支援執行緒KST同樣也是在核心的支援下執行的,它們的建立、阻塞、撤消和切換等,也都是在核心空間實現的。為了對核心執行緒進行控制和管理,在核心空間也為每個核心執行緒設定了一個執行緒控制塊,核心根據該控制塊而感知某執行緒的存在,並對其加以控制。當前大多數OS都支援核心支援執行緒。
這種執行緒實現方式主要有四個主要優點:
在多處理器系統中,核心能夠同時排程同一程式中的多個執行緒並行執行
如果程式中的一個執行緒被阻塞了,核心可以排程該程式中的其它執行緒佔有處理器執行,也可以執行其它程式中的執行緒
核心支援執行緒具有很小的資料結構和堆疊,執行緒的切換比較快,切換開銷小
核心本身也可以採用多執行緒技術,可以提高系統的執行速度和效率。
核心支援執行緒的主要缺點是:對於使用者的執行緒而言,其模式切換的開銷較大,在同一個程式中,從一個執行緒切換到另一個執行緒時,需要從使用者態轉為使用者程式的執行緒在使用者態執行,而執行緒排程和管理是在核心實現的,系統開銷較大。
2.使用者級執行緒(User Level Threads)
使用者級執行緒是在使用者空間中實現的。對執行緒的建立、撤消、同步與通訊等功能,都無需核心的支援,即使用者級執行緒是與核心無關的。在一個系統中的使用者級執行緒的數目可以達到數百個至數千個。由於這些執行緒的任務控制塊都是設定在使用者空間,而執行緒所執行的操作也無需核心的幫助,因而核心完全不知道使用者級執行緒的存在。
值得說明的是,對於設定了使用者級執行緒的系統,其排程仍是以程式為單位進行的。在採用輪轉排程演算法時, 各個程式輪流執行一個時間片,這對諸程式而言貌似是公平的。但假如在程式A中包含了一個使用者級執行緒,而在另一個程式B中含有100個使用者級執行緒,這樣,程式A中執行緒的執行時間將是程式B中各執行緒執行時間的100倍:相應地,其速度要快上100倍, 因此說實質上並不公平。
假如系統中設定的是核心支援執行緒。如排程便是以執行緒為單做進行的,在採用輪轉法排程時,是各個執行緒輪流執行一個時間片。同樣假定程式A中只有一一個丙核支援執行緒,而在程式B中有100個核心支援執行緒。此時程式B可以獲得的CPU時間是程式A的100倍,且程式B可使100個系統呼叫併發工作
課外題:
某系統支援核心級執行緒,且處理器採用時間片輪轉排程演算法。該系統現有程式A和程式B,且程式A擁有2個執行緒、程式B擁有100個執行緒,那麼程式A執行時間一般應為程式B執行時間的1/50。
某系統不支援核心級執行緒但支援使用者級執行緒,且處理器採用時間片輪轉排程演算法。該系統現有程式A和程式B,且程式A擁有1個執行緒、程式B擁有100個執行緒,那麼程式A執行時間一般應為程式B執行時間的1。
相關文章
- 作業系統-執行緒作業系統執行緒
- 作業系統:多執行緒作業系統執行緒
- 【作業系統】程式與執行緒作業系統執行緒
- Java 執行緒和作業系統的執行緒有啥區別?Java執行緒作業系統
- 作業系統-執行緒和程式的區別作業系統執行緒
- 作業系統_程式和執行緒的區別作業系統執行緒
- 【作業系統】1.程序和執行緒作業系統執行緒
- 【作業系統】程式的描述與控制[執行緒](4)作業系統執行緒
- 作業系統——深入理解程式和執行緒作業系統執行緒
- 作業系統複習(程式、執行緒、死鎖)作業系統執行緒
- 程式,核心執行緒,使用者執行緒,協程,纖程......作業系統世界觀執行緒作業系統
- 作業系統的執行環境作業系統
- 作業系統知識回顧(2)--程式與執行緒作業系統執行緒
- LINUX作業系統知識:程式與執行緒詳解Linux作業系統執行緒
- java 執行作業系統命令Java作業系統
- Python 執行 Linux 作業系統命令PythonLinux作業系統
- 【併發技術01】傳統執行緒技術中建立執行緒的兩種方式執行緒
- 多執行緒-作業練習執行緒
- 多執行緒,執行緒類三種方式,執行緒排程,執行緒同步,死鎖,執行緒間的通訊,阻塞佇列,wait和sleep區別?執行緒佇列AI
- ucore作業系統學習(四) ucore lab4核心執行緒管理作業系統執行緒
- python中5種執行緒鎖Python執行緒
- 執行緒、開啟執行緒的兩種方式、執行緒下的Join方法、守護執行緒執行緒
- 【Dr.Chen的計算機作業系統】Java多執行緒的實現操作計算機作業系統Java執行緒
- 在netty3.x中存在兩種執行緒:boss執行緒和worker執行緒。Netty執行緒
- 理解作業系統之程式和執行緒作業系統執行緒
- 結合作業系統執行緒 檢視mysql中的sql資源 消耗作業系統執行緒MySql
- ucore作業系統學習(六) ucore lab6執行緒排程器作業系統執行緒
- 微核心、多執行緒、SMP對稱多處理、分散式作業系統執行緒分散式作業系統
- Java併發基礎01:揭祕傳統執行緒技術中建立執行緒的兩種方式Java執行緒
- .NET中各種執行緒同步鎖執行緒
- Linux作業系統執行級別介紹Linux作業系統
- 建立執行緒的4種方法 and 執行緒的生命週期執行緒
- 第二章 作業系統的執行機制作業系統
- 執行緒池的五種狀態及建立執行緒池的幾種方式執行緒
- iOS多執行緒安全-13種執行緒鎖?iOS執行緒
- 多執行緒筆記---鎖(Synchronized)的優化和種類執行緒筆記synchronized優化
- 【java】【多執行緒】建立執行緒的兩種常用方式(2)Java執行緒
- Python中執行系統命令常見的幾種方法Python