5-1 CPU調度的基本概念
1.進程的CPU和I/O burst的交替序列
①交替序列的圖
②CPU脈衝的分佈:在系統中存在許多短CPU脈衝,只有少量的長CPU脈衝。
③I/O型作業,許多短CPU脈衝;CPU型作業,有幾個長CPU脈衝。
2.當CPU空閒時,OS就選擇內存中某個就緒進程,並給其分配CPU
3.進程的CPU調度可能發生在以下情況下:
①從運行轉到等待 非搶佔方式
②從運行到就緒 搶佔方式
③從等待到就緒 搶佔方式
④終止運行 非搶佔方式
4.搶佔方式和非搶佔方式
①搶佔方式 (preemptive mode)
允許調度程序根據某個原則,去停止正在執行的進程,將處理機重新分配給另一個進程。
②非搶佔方式(nonpreemptive)
把處理機分配給某個進程後,便一直執行,直到該進程完成或發生某事件而被阻塞,才把處理機分配給其他進程,不允許其他進程搶佔已經分配出去的處理機。
優點:實現簡單,開銷小
缺點:難以滿足緊急任務需求
5.搶佔方式的原則
①時間片原則:各進程按時間片運行,當一個時間片用完後,便停止該進程的執行而重新調度,適用於分時系統。
②優先權原則:通常對異性重要的和緊急的進程賦予較高的優先級,則將處理機分配給優先級更高的進程。
③短作業優先原則:當新到達的作業比正在執行的作業明顯短時,將暫停當前長作業的執行,將處理機分配給短作業,使之執行。
5-2 CPU調度算法:FCFS
1.問題
①調度程序採用什麼算法選擇一個進程(作業)?
②如何評價調度算法的性能?
2.調度準則
①CPU利用率——使CPU儘可能的忙碌
②吞吐量——單位時間內運行完的進程數
③週轉時間——進程從提高到運行結束的全部時間
④等待時間——進程在就緒對待中等待調度的時間片總和
⑤響應時間——從進程提出請求到首次被響應的時間
小結:調度算法影響的是等待時間,而不能影響進程真正使用CPU的時間和I/O時間。
3.First-Come-First-Served(FCFS,先來先服務)
①最簡單的調度調度算法,可用於作業或進程調度,按照作業到達後備作業隊列(或進程進入就緒隊列)的先後次序來選擇
②FCFS算法屬於非搶佔方式
③FCFS算法易於實現,表明上很公平,實際上有利於長作業,不利於短作業;由於有CPU繁忙型,不利於I/O繁忙型
④護航效應:假設有一個CPU型進程和許多I/O型進程,當CPU進程佔用CPU運行時,I/O型進程可能完成了其I/O操作,回到就緒隊列等待CPU,I/O設備空閒;CPU進程釋放後,I/O進程陸續使用CPU,並很快轉爲I/O操作,CPU空閒。
5-3 CPU調度算法SJF(Shortest-Job-First)
關聯到每個進程下次運行的CPU脈衝長度,調度最短的進程
1.兩種策略
①非搶佔式調度
一旦進程擁有CPU,使用權限只能在該CPU脈衝結束後讓出
②搶佔式調度
發生在有比當前進程剩餘時間片更短的進程到達時,也稱爲最短剩餘時間優先調度。
2.SJF是最優的——對一組進程而言,它給出了最短的平均等待時間。
搶佔式調度
侷限性:下一個進程的長度只能估計
3.SJF的特點
①有利於系統減少平均週轉時間,提高系統吞吐量
②一般情況下SJF調度算法比FCFS調度算法的效率更高一些,但是實現相對要困難一些
③如果作業的到來順序及運行時間不合適,會出現飢餓現象
5-4 優先級和RR時間片輪轉
1.優先級算法
①每個進程都有自己的優先數[整數]
②CPU分配給最高優先級的進程
③搶佔式和非搶佔式
④SJF是以下一次CPU脈衝長度爲優先數的優先級調度
2.靜態優先級
①靜態優先級在進程創建時確定,且在整個生命期中保持不變
②問題:飢餓——低優先級的可能永遠得不到運行
③解決方法:老化——視進程等待時間延長提高其優先級
3.動態優先級
①動態優先級:優先權隨進程推進而改變,以便獲得更好的調度性能。
②改變優先權的因素:
- 進程等待時間
- 已使用處理機的時間
- 資源使用情況
4.時間片輪轉調度法(Round Robin,RR)
①分時系統:每個進程將得到小單位的CPU時間(10-100毫秒),時間片用完,該進程被搶佔並插入隊列末尾。
②例子:
③特徵:時間片q過大,趨近於FCFS方法;
時間片q過小,q相對於上下文切換而言足夠長,否則導致系統開銷過大。
④一組進程的評價週轉時間並不隨着時間片增大而降低。一般來說,如果大多數(80%)進程能在一個時間片內完成,就會改善平均週轉時間。
5-5多級隊列和多級反饋隊列
1.多級隊列
①按進程的屬性分類,每類進程組成一個就緒隊列,每個進程固定處於某一個隊列中,如前臺就緒隊列和後臺就緒隊列。
②每個隊列都有自己的調度算法,如前臺(foreground) RR調度算法,後臺(background) FCFS
2.隊列間的調度
①固定優先級 產生飢餓問題
②給定時間片調度,即給每個隊列一定的CPU時間,進程在給定時間內執行
如80%時間執行前臺的RR調度,20%時間執行後臺的FCFS調度。
3.多級反饋隊列調度
①存在多個隊列,不同優先級,各自按RR調度
②各就緒隊列中時間片大小不同,優先級越高的隊列時間片越小
③允許進程在隊列間移動
④一個進程執行完一個時間片後被搶佔處理器,優先級降一級而進入下級就緒隊列,如此直到將至進程的基本優先級。一個進程從阻塞太變爲就緒態時要提高優先級(阻塞時間過長)
⑤最後將I/O型和交互性進程留在較高優先級隊列
⑥多級反饋隊列調度示意圖
⑦進程能在不同隊列間移動,可實現老化
⑧多級反饋隊列調度程序的參數:
- 隊列數
- 每一隊列的調度算法
- 決定進程升級的方法
- 決定進程降級的方法
- 決定需要服務的進程進入哪個隊列的方法
本文知識以及圖片來源:慕課_操作系統原理_田麗華
網址:https://www.icourse163.org/learn/XJTU-1003409001?tid=1206408203#/learn/content