5.1 基本概念
5.1.1 CPU-I/O突發(fā)循環(huán) Burst Cycle
I/O Bound: I/O密集型
CPU Bound: CPU密集型
5.1.2 CPU 調度器 Scheduler
長芜茵、中、短期調度
CPU調度(短期調度):保存處理機的現(xiàn)場(程序計數(shù)器倡蝙、多個寄存器內容送入PCB)九串、按照某種算法選取進程、把處理器分配給進程
非搶占方式 Non-preemptive
5.1.3 搶占方式 Preemptive
允許調度起中止運行中的進程然后根據優(yōu)先權重新分配處理器資源給進程
5.1.4 分發(fā)器 Dispatcher
切換上下文寺鸥、切換到用戶模式猪钮、到合適的位置重啟程序
5.3 調度算法
(5.2)評價標準:CPU利用率、吞吐量(單位時間內完成的進程數(shù))胆建、周轉時間(從進程提交到完成的時間烤低,包括就緒、執(zhí)行和等待)笆载、等待時間(就緒隊列中耗費時間的總和)扑馁、響應時間(進程提交請求到產生首次響應的時間)
5.3.1 First-Come, First-Served Scheduling 先來先服務
算法容易實現(xiàn);
效率不高凉驻、只考慮作業(yè)等待時間腻要、沒考慮作業(yè)服務要求的時間
5.3.2 Shortest-Job-First Scheduling 短作業(yè)優(yōu)先
短作業(yè)優(yōu)先可分為搶占模式與非搶占模式
- 非搶占模式:等待時間的計算注意考慮對應到達時間
- 搶占模式(SRTF):新進程到達后根據所有已到達進程的剩余突發(fā)時間搶占,等待時間要算入進程被打斷后等待的時間
優(yōu)點:等待時間最優(yōu);
缺點:忽視了作業(yè)等待時間沿侈、會出現(xiàn)饑餓現(xiàn)象
如何預測未知進程行為:1.詢問客戶 2.預測下一個burst time
5.3.3 Priority Scheduling 優(yōu)先權
也可分為搶占與非搶占模式闯第。默認認為數(shù)值越小優(yōu)先權越高。
SJF是一種以下一個進程時間為優(yōu)先權參考的PS
靜態(tài)優(yōu)先級:內存外存
動態(tài)優(yōu)先級:根據進程占用CPU時間缀拭、根據進程就緒等待時間
響應比=(等待時間+服務時間)/服務時間
5.3.4 Round-Robin Scheduling 輪轉
每個進程每輪只分配到固定的一個時間片咳短,若一輪沒執(zhí)行完,則排到就緒隊列末尾等待下一輪
時間片的選取很大程度影響了調度性能:
- 當時間片過大:RR調度就和FCFS表現(xiàn)一致
- 當時間片過兄肓堋:上下文頻繁切換咙好、負載嚴重,吞吐量過大
時間片一般選取10~100毫秒
5.3.5 Multi-level Queue Scheduling 多級隊列
每個隊列有自己的調度算法褐荷,各個隊列之間根據優(yōu)先權調度
隊列間調度:
固定的優(yōu)先權:
時間片:每個隊列能獲得一定長度的CPU時間勾效,這段時間用該隊列的調度算法分配給它的進程。
5.3.6 Multi-level Feedback-Queue Scheduling 多級反饋隊列
在多級隊列上改進,進程可在多個隊列中移動层宫。
優(yōu)點:高優(yōu)先級作業(yè)得到響應杨伙,短作業(yè)迅速完成
5.4 多處理器調度
5.4.1
Symmetric Multiprocessing (SMP)
Asymmetric Multiprocessing
5.4.3 負載平衡
總體上兩種方法:
pull:空閑CPU從其他忙的CPU隊列中拉一個進程到當前CPU隊列
push:忙的CPU隊列將一個進程推送到空閑的CPU隊列中
實時調度
硬實時系統(tǒng)
5.5 線程調度
Local Scheduling
Global Scheduling
5.5.1 調度范圍
PCS
SCS
5.5.2 Pthread調度