作業系統中的執行緒種類

2021-10-05 09:03:46 字數 1226 閱讀 1258

在學習作業系統這本書的時候,我們使用的是湯小丹老師的《計算機作業系統》,接下來我將會使用書中部分描述以及課外例題去鞏固知識。

執行緒在現在作業系統中使用非常廣泛,但是在各個系統中實現的方式各有不同,如infomix實現的是使用者級執行緒,而macintosh實現的是核心支援執行緒,比如solaris os兩者都實現了。

在os中的所有程序,無論是系統程序還是使用者程序,都是在作業系統核心的支援下執行的,是與核心緊密相關的。而核心支援執行緒kst同樣也是在核心的支援下執行的,它們的建立、阻塞、撤消和切換等,也都是在核心空間實現的。為了對核心執行緒進行控制和管理,在核心空間也為每個核心執行緒設定了乙個執行緒控制塊,核心根據該控制塊而感知某執行緒的存在,並對其加以控制。當前大多數os都支援核心支援執行緒。

這種執行緒實現方式主要有四個主要優點:

核心支援執行緒的主要缺點是:對於使用者的執行緒而言,其模式切換的開銷較大,在同乙個程序中,從乙個執行緒切換到另乙個執行緒時,需要從使用者態轉為使用者程序的執行緒在使用者態執行,而執行緒排程和管理是在核心實現的,系統開銷較大。

使用者級執行緒是在使用者空間中實現的。對執行緒的建立、撤消、同步與通訊等功能,都無需核心的支援,即使用者級執行緒是與核心無關的。在乙個系統中的使用者級執行緒的數目可以達到數百個至數千個。由於這些執行緒的任務控制塊都是設定在使用者空間,而執行緒所執行的操作也無需核心的幫助,因而核心完全不知道使用者級執行緒的存在。

值得說明的是,對於設定了使用者級執行緒的系統,其排程仍是以程序為單位進行的。在採用輪轉排程演算法時, 各個程序輪流執行乙個時間片,這對諸程序而言貌似是公平的。但假如在程序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。

作業系統中的執行緒實現

每條使用者執行緒交由唯一對應的系統執行緒進行排程,在這種設計下建立執行緒和建立系統程序的代價是相同的。多條使用者執行緒交由一條系統執行緒進行排程,這個系統執行緒也是唯一一條,所以無法適應多核環境,即使是在多核環境下也只能同時執行一條執行緒。多條使用者執行緒對應多條系統執行緒,在多核環境下系統執行緒可...

作業系統 執行緒

靜態鏈結庫是乙個或多個obj檔案的打包,所以有人乾脆把obj檔案生成lib檔案的過程稱為archive,即合併在一起。比如你鏈結乙個靜態庫,如果其中有錯,他會準確的找到是哪個obj有錯,即靜態lib只是殼子。當我們的應用工程在使用靜態庫鏈結時,靜態鏈結庫要參與編譯,在生成執行檔案之前的鏈結過程中,將...

作業系統 執行緒

執行緒是cpu使用的基本單元,它由執行緒id 程式計數器 暫存器集合和棧組成。它與屬於同一程序的其他執行緒共享 段,資料段和其他作業系統資源,如開啟檔案和訊號。乙個傳統重量級的程序只有單個控制線程,如果程序有多個控制線程,那麼它能夠同時做多個任務。多執行緒程式設計的優點 響應度高 如果對乙個互動程式...