多執行緒技術
單執行緒結構行程
傳統行程是單執行緒結構行程

單執行緒結構行程的問題:
單執行緒結構行程在并發程式設計上存在的問題,行程切換開銷大,行程通信開銷大,限制了行程并發的粒度,降低了并行計算的效率
解決問題的思路:
把行程的兩項功能,即“獨立分配資源”與“被調度分派執行”分離開來,行程作為系統資源分配和保護的獨立單位,不需要頻繁地切換,執行緒作為系統調度和分派的基本單位,能輕裝運行,會被頻繁地調度和切換,執行緒的出現會減少行程并發執行所付出的時空開銷,使得并發粒度更細、并發性更好
多執行緒結構行程

多執行緒環境下行程的概念:
在多執行緒環境中,行程是作業系統中進行保護和資源分配的獨立單位,具有:用來容納行程映像的虛擬地址空間,對行程、檔案和設備的存取保護機制
執行緒是行程的一條執行路徑,是調度的基本單位,同一個行程中的所有執行緒共享行程獲得的主存空間和資源,它具有:執行緒執行狀態,受保護的執行緒背景關系,當執行緒不運行時,用于存盤現場資訊,獨立的程式指令計數器,執行堆疊,容納區域變數的靜態存盤器
多執行緒環境下執行緒的狀態與調度
執行緒狀態有運行、就緒和睡眠,無掛起,與執行緒狀態變化有關的執行緒操作有:范訓、封鎖、活化、剝奪、指派、結束,OS感知執行緒環境下:處理器調度物件是執行緒,行程沒有三狀態(或者說只有掛起狀態),OS不感知執行緒環境下:處理器調度物件仍是行程,用戶空間中的用戶調度程式調度執行緒
并發多執行緒程式設計的優點:快速執行緒切換,減少(系統)管理開銷,(執行緒)通信易于實作,并行程度提高,節省記憶體空間
多執行緒技術的應用:前臺和后臺作業,C/S應用模式,加快執行速度,設計用戶介面
KLT和ULT
內核級執行緒KLT,Kernel-LevelThreads
執行緒管理的所有作業由OS內核來做,OS提供了一個應用程式設計介面API,供開發者使用KLT,OS直接調度KLT用戶空間P內核空間P

內核級執行緒的特點
行程中的一個執行緒被阻塞了,內核能調度同一行程的其它執行緒占有處理器運行,多處理器環境中,內核能同時調度同一行程中多個執行緒并行執行,內核自身也可用多執行緒技術實作,能提高作業系統的執行速度和效率,應用程式執行緒在用戶態運行,執行緒調度和管理在內核實作,在同一行程中,控制權從一個執行緒傳送到另一個執行緒時需要模式切換,系統開銷較大
用戶級執行緒ULT,User-LevelThreads
用戶空間運行的執行緒庫,提供多執行緒應用程式的開發和運行支撐環境,任何應用程式均需通過執行緒庫進行程式設計,再與執行緒庫連接后運行,執行緒管理的所有作業都由應用程式完成,內核沒有意識到執行緒的存在P用戶空間執行緒庫內核空間
用戶級執行緒的特點
所有執行緒管理資料結構均在行程的用戶空間中,執行緒切換不需要內核模式,能節省模式切換開銷和內核的寶貴資源,允許行程按應用特定需要選擇調度演算法,甚至根據應用需求裁剪調度演算法,能運行在任何OS上,內核在支持ULT方面不需要做任何作業,不能利用多處理器的優點,OS調度行程,僅有一個ULT能執行,一個ULT的阻塞,將引起整個行程的阻塞
Jacketing技術
把阻塞式系統呼叫改造成非阻塞式的,當執行緒陷入系統呼叫時,執行jacketing程式,由jacketing程式來檢查資源使用情況,以決定是否執行行程切換或傳遞控制權給另一個執行緒

ULT適用于解決邏輯并行性問題,KLT適用于解決物理并行性問題
多執行緒實作的混合式策略
執行緒創建是完全在用戶空間做的,單應用的多個ULT可以映射成一些KLT,通過調整KLT數目,可以達到較好的并行效果
多執行緒實作混合式策略的特點
組合用戶級執行緒/內核級執行緒設施,執行緒創建完全在用戶空間中完成,執行緒的調度和同步也在應用程式中進行,一個應用中的多個用戶級執行緒被映射到一些(小于等于用戶級執行緒數目)內核級執行緒上,程式員可以針對特定應用和機器調節內核級執行緒的數目,以達到整體最佳結果,該方法將會結合純粹用戶級執行緒方法和內核級執行緒方法的優點,同時減少它們的缺點
執行緒混合式策略下的執行緒狀態
KLT三態,系統調度負責,ULT三態,用戶調度負責,活躍態ULT代表系結KLT的三態,活躍態ULT運行時可激活用戶調度,非阻塞系統呼叫可使用Jacketing啟動用戶調度,調整活躍態ULT

多執行緒實作的各種策略總結

處理器調度的層次
高級調度:又稱長程調度,作業調度,決定能否加入到執行的行程池中
中級調度,又稱平衡負載調度,決定主存中的可用行程集合
低級調度:又稱短程調度,行程調度,決定哪個可用行程占用處理器執行


高級調度
分時OS中,高級調度決定:是否接受一個終端用戶的連接,命令能否被系統接納并構成行程,新建態行程是否加入就緒行程佇列
批處理OS中,高級調度又稱為作業調度,功能是按照某種原則從后備作業佇列中選取作業進入主存,并為作業做好運行前的準備作業和完成后的善后作業
中級調度
引進中級調度是為了提高記憶體利用率和作業吞吐量,中級調度決定那些行程被允許駐留在主存中參與競爭處理器及其他資源,起到短期調整系統負荷的作用,中級調度把一些行程換出主存,從而使之進入“掛起”狀態,不參與行程調度,以平順系統的負載
低級調度
低級調度:又稱處理器調度、行程調度、短程調度,按照某種原則把處理器分配給就緒態行程或內核級執行緒,行程調度程式:又稱分派程式,作業系統中實作處理器調度的程式,是作業系統的最核心部分,處理器調度策略的優劣直接影響到整個系統的性能
低級調度的主要功能:
- 記住行程或內核級執行緒的狀態
- 決定某個行程或內核級執行緒什么時候獲得處理器,以及占用多長時間
- 把處理器分配給行程或內核級執行緒
- 識訓處理器
處理器調度演算法
選擇處理器調度演算法的原則
- 資源利用率:使得CPU或其他資源的使用率盡可能高且能夠并行作業
- 回應時間:使互動式用戶的回應時間盡可能小,或盡快處理實時任務
- 周轉時間:提交給系統開始到執行完成獲得結果為止的這段時間間隔稱周轉時間,應該使周轉時間或平均周轉時間盡可能短
- 吞吐量:單位時間處理的行程數盡可能多
- 公平性:確保每個用戶每個行程獲得合理的CPU份額或其他資源份額
優先數調度演算法
根據分配給行程的優先數決定運行行程:搶占式優先數調度演算法(對實時的適用),非搶占式優先數調度演算法(對大多數適合)
優先數的確定準則:行程負擔任務的緊迫程度,行程的互動性,行程使用外設的頻度,行程進入系統的時間長短
與進入系統時間相關的優先數
- 計算時間短(作業/行程)優先
- 剩余計算時間短行程優先
- 回應比高者(作業/行程)優先回應比=等待時間/進入時間
- 先來先服務:先進隊先被選擇
- 多用于高級調度;低級調度中,以計算為主的行程過于優越
時間片輪轉調度演算法
- 根據各個行程進入就緒佇列的時間先后輪流占有CPU一個時間片
- 時間片中斷
- 時間片的確定:選擇長短合適的時間片,過長則退化為先來先服務演算法,過短則調度開銷大
- 單時間片,多時間片和動態時間片
分級調度演算法
又稱多佇列策略,反饋回圈佇列,基本思想是建立多個不同優先級的就緒行程佇列,多個就緒行程佇列間按照優先數調度,高優先級就緒行程,分配的時間片短,單個就緒行程佇列中行程的優先數和時間片相同

分級調度演算法的分級原則
- 一般分級原則
- 外設訪問,互動性,時間緊迫程度,系統效率,用戶立場,...
- 現代作業系統的實作模型
- 多個高優先級的實時行程佇列,如:硬實時、網路、軟實時
- 多個分時任務的行程佇列,根據基準優先數和執行行為調整
- 佇列數可能多達32-128個
彩票調度演算法
基本思想:為行程發放針對系統各種資源(如CPU時間)的彩票;當調度程式需要做出決策時,隨機選擇一張彩票,持有該彩票的行程將獲得系統資源,合作行程之間的彩票交換
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/238959.html
標籤:其他
上一篇:kali重置root密碼
