作業系統概念(高等教育出版社,第七版)複習——第五章:CPU排程
第五章 CPU排程
基本概念
如果一種CPU排程方式將一個CPU執行期分割成多個CPU執行期,那麼這種排程方式就屬於搶先式排程(搶佔、剝奪)。在分時系統中。
如果一種CPU排程方式僅在一個程序執行完其一個CPU執行期時才引起程序排程,則這種排程方式屬於非搶先式排程(非搶佔、非剝奪)。在多工系統IO中。
執行-->等待、執行-->終止:非搶佔
執行-->就緒、等-->就緒、新的-->就緒:搶佔
排程準則
CPU使用率:需要使CPU儘可能忙。
吞吐量:如果CPU忙於執行程序,那麼就有工作在完成。吞吐量:一個單元內所完成的程序數量。
週轉時間:從程序提交到程序完成的時間段。
等待時間:CPU排程演算法不影響程序執行和執行IO的時間:它隻影響程序在就緒佇列中等待所花的時間。等待時間為在就緒佇列中等待所花費時間之和。
響應時間:從提交請求到產生第一響應的時間。是開始響應所需要的時間,而不是輸出相應所需要的時間。
排程演算法
先到先服務(FCFS):
優缺點:
公平;可能會產生護航效應,使CPU和裝置的使用率變得更低;有利於長作業,對短作業不利,系統吞吐量小;程序到達順序對排程效能影響很大。
最短作業優先排程(SJF):
又稱為:最短剩餘時間優先排程(看結束時就緒佇列裡有什麼,選擇最短的執行,相同短的選擇先進來的先執行)。
優缺點:
系統吞吐量大,平均週轉時間短;有利於短作業,不利於長作業;如果採用搶先式排程,下一個CPU週期的長度無法精確獲得,只能採用預測的方法;
可能產生飢餓效應,長程序可能永遠不會被執行。
優先順序排程:
主要問題:無窮阻塞或飢餓。
解決辦法:老化:逐漸增加在系統中等待很長時間的程序的優先順序。
當一個服務時間比較長的程序等待時一段時間後,也可以有排程的機會。該演算法既照顧了短作業,有考慮了作業到達的先後次序,也還不會使長作業長期得不到服務。防止出現FCFS中長程序出現飢餓現象。
輪轉法排程:
類似於FCFS排程,但是增加了搶佔以切換程序。定義一個較小的時間單元,稱為時間片。將就緒佇列作為迴圈佇列。若程序小於時間片,程序本身自動釋放CPU,若大於時間片,排程程式接著處理就緒佇列的下一個程序。
時間片應比上下文切換時間長,但也不能太大。如果太大就成了FCFS。根據經驗,80%的CPU區間應該小於時間片。
多級佇列排程:
將就緒佇列分成多個獨立佇列,根據程序屬性,每個程序都被永久分配到一個佇列,每個佇列都有自己的排程演算法。每個佇列與更低層佇列相比有絕對的優先順序,高優先順序佇列為空,才能排程低優先順序佇列。
多級反饋佇列排程:
允許程序在佇列之間移動。如果程序使用過多CPU時間,它會被轉移到更低優先順序佇列,在較低優先順序佇列中等待時間過長的程序會被轉移到更高優先順序佇列,這種形式的老化阻止飢餓的發生。
作業
1.
I/O約束程式通常具有很多短CPU區間,CPU約束程式可能有少量的長CPU區間,這種分佈有助於選擇合適的CPU排程演算法,提高CPU利用率。
4.
a.
FCFS:P1 P2 P3 P4 P5
0 10 11 13 14 19
SJF:P2 P4 P3 P5 P1
0 1 2 4 9 19
非搶佔優先順序:P2 P5 P1 P3 P4
0 1 6 16 18 19
RR:P1 P2 P3 P4 P5 P1 P3 P5 P1 P5 P1 P5 P1 P5 P1 P1 P1 P1 P1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
b.
FCFS SJF 非搶佔優先順序 RR
P1 10 19 16 19
P2 11 1 1 2
P3 13 4 18 7
P4 14 2 19 4
P5 19 9 6 14
c.
FCFS SJF 非搶佔優先順序 RR
P1 0 9 6 9
P2 10 0 0 1
P3 11 2 16 5
P4 13 1 18 3
P5 14 4 1 9
d.
SJF
5.
最短作業優先排程和優先順序排程
10.
FCFS:如果短程序在長程序執行時到達則會有很長的等待時間
RR:所有程序的CPU區間一樣,短程序有較大可能先執行完
多級反饋佇列:優先順序高的前臺佇列使用RR,短程序執行情況與RR相同
思考題:
1.
飢餓的概念:在優先順序排程演算法裡,優先順序低的程序可能永遠不會被執行,這稱之為飢餓效應。
2.
非搶佔式排程:執行à等待,執行à終止
搶佔式排程:執行à就緒,等待à就緒,newà就緒,就緒à執行
3.
各排程演算法的基本思想、優點及缺點:
FCFS:
基本思想:先到先服務。
優點:公平、有利於長作業。
缺點:會產生護航效應、對短作業不利、系統吞吐量小、程序到達順序對效能影響較大。
SJF:
基本思想:最短CPU區間的程序優先。
優點:系統吞吐量大、平均週轉時間短、效能最佳、有利於短作業。
缺點:不利於長作業、採用搶先式排程時下一個CPU週期的長度無法精確獲得只能預測。
優先順序排程:
基本思想:優先順序高的程序優先。
優點:靈活。
缺點:無窮阻塞或飢餓效應,即優先順序低的程序有可能永遠不被執行,可用老化的方式解決。
RR:
基本思想:在定義好的時間片中為程序分配CPU,執行完一個時間片或程序檢查一次。
優點:不會出現飢餓現象。
缺點:上下文切換時間長。
多級佇列排程:
基本思想:將就緒佇列分成多個獨立佇列,高階佇列比低階佇列有絕對優先順序。
優點:在程序可容易地分成不同組的情況下方便。
缺點:高階佇列空時低階佇列才能執行,會出現飢餓現象。
多級反饋佇列排程:
基本思想:高階佇列比低階佇列有優先順序,但不是絕對的。
優點:比多級佇列排程靈活,防止飢餓現象。
缺點:演算法複雜。
ExampleMultilevel Feedback Queues:
Gantt圖:
P1 P2 P3 P1
0 8 11 14 30
程序等待時間 週轉時間
P1 6 30
P2 8 11
P3 11 14