作業系統之排程演算法
排程演算法的評價指標
- cpu利用率
cpu利用率=cpu有效工作時間 / (cpu有效工作時間+cpu空閒時間)
- 系統吞吐量:單位時間內完成作業的數量
系統吞吐量=總共完成作業數 / 總共耗費時間
- 週轉時間:從作業被提交到作業完成為止的時間間隔
週轉時間 = 作業完成時間 - 作業提交時間
- 帶權週轉時間
帶權週轉時間 = 週轉時間 / 作業實際執行時間
- 平均週轉時間
平均週轉時間 = 各作業週轉時間之和 / 作業數
- 平均帶權週轉時間
平均帶權週轉時間 = 各作業帶權週轉時間之和 / 作業數
- 等待時間:程式或者作業處於等待處理機狀態時間之和
- 只涉及計算,不涉及I/O操作:
等待時間 = 週轉時間 - 執行時間- 若涉及I/O操作,則:
等待時間 = 週轉時間 - 執行時間 - I/O操作時間
- 響應時間:提出請求到首次收到回覆的時間
補充
程式排程方式:
1.非剝奪排程方式也稱為非搶佔方式:只允許程式主動放棄處理機
2.剝奪排程方式也稱為搶佔方式:程式狀態可以被動進入阻塞態
排程演算法
一、不適合用於互動式系統
1.先來先服務(FCFS排程演算法)
- 演算法:按照程式或者作業到達的先後順序
- 特徵:非搶佔式演算法;適用於作業排程,也適用於程式排程
- 優點:公平、演算法實現簡單
- 缺點:排在長作業後面的短作業需要等待很長時間,帶權周 轉時間大,對短作業來說使用者體驗不好。即FCFS演算法對長作業有利,對短作業不利
例題:用先來先服務排程演算法求下表中各個程式的週轉時間、帶權週轉時間、等待時間、平均週轉時間、平均帶權週轉時間、平均等待時間
排程順序:P1->P2->P3->P4(按照到達的先後順序)
- 週轉時間:
(1) P1 = 7-0 = 7 (2) P2 = 11-2 = 9
(3) P3 = 12-4 = 8 (4) P4 = 16-5 = 11 - 帶權週轉時間:
(1) P1= 7/7 = 1 (2) P2 = 9/4 = 2.25
(3) P3 = 8/1 = 8 (4) P4 = 11/4 = 2.75 - 等待時間:
(1) P1= 7-7 = 0 (2) P2 = 9-4 = 5
(3) P3 = 8-1 = 7 (4) P4 = 11-4 = 7 - 平均週轉時間 = (7+9+8+11) / 4 = 8.75
- 平均帶權週轉時間 = (1+2.25+8+2.75) / 4 = 3.5
- 平均等待時間 = (0+5+7+7) / 4 =4.75
2.短作業優先(SJF排程演算法)
- 演算法:當前已經到達且最短的作業或者程式優先得到服務
- 特徵:非搶佔式演算法,也有搶佔式演算法【最短剩餘時間優先演算法(SRTN演算法)】;適用於作業排程,也適用於程式排程
- 優點:最短的平均等待時間、平均週轉時間
- 缺點:對短作業有利,對長作業不利,可能產生飢餓現象
例題:(1)用短作業優先非搶佔式排程演算法:求下表中各個程式的週轉時間、帶權週轉時間、等待時間、平均週轉時間、平均帶權週轉時間、平均等待時間
排程順序:P1->P3->P2->P4
-
0時刻:只有P1到達
-
7時刻:P2、P3、P4均到達且P3執行時間最短,選擇P3
-
8時刻:P2比P4先到達,所以選擇P2
-
週轉時間:
(1) P1 = 7-0 = 7 (2) P2 = 12-2 = 10
(3) P3 = 8-4 = 4 (4) P4 = 16-5 = 11 -
帶權週轉時間:
(1) P1= 7/7 = 1 (2) P2 = 10/4 = 2.5
(3) P3 = 4/1 = 4 (4) P4 = 11/4 = 2.75 -
等待時間:
(1) P1= 7-7 = 0 (2) P2 = 10-4 = 6
(3) P3 = 4-1 = 3 (4) P4 = 11-4 = 7 -
平均週轉時間 = (7+4+10+11) / 4 = 8
-
平均帶權週轉時間 = (1+2.5+4+2.75) / 4 = 2.56
-
平均等待時間 = (0+6+3+7) / 4 =4
(2)用最短剩餘時間優先演算法:求下表中程式的排程順序
注:(1)每當有程式加入就緒佇列,就需要進行程式排程
(2)Pi(n):i代表第i個程式,n代表執行時間
排程順序:
- 0時刻:只有P1到達:P1(7)
- 2時刻:P2加入就緒佇列,此時P1(5)、P2(4),選擇P2
- 4時刻:P3加入就緒佇列,此時P1(5)、P2(2)、P3(1),選擇P3
- 5時刻:P4加入就緒佇列,此時P1(5)、P2(2)、P4(4),選擇P2
- 7時刻:P1(5)、P4(4)選擇P4
…
P1->P2->P3->P2->P4->P1
3.高響應比優先演算法(HRRN)
- 演算法:每次排程時先計算各個作業或者程式的響應比,響應比最高的優先
- 響應比 = (等待時間+要求服務時間)/ 要求服務時間
- 特徵:非搶佔式演算法;適用於作業排程,也適用於程式排程
- 優缺點:
1.綜合考慮等待時間和執行時間。
2.等待時間相同時,具有SJF排程演算法的優點。
3.要求服務時間相同時,具有FCFS排程演算法的優點。
4.對於長作業,隨著等待時間越來越久,其響應比會越來越大
例題:用高響應比優先演算法:求下表中程式的排程順序
響應比求解:
0時刻:只有P1
7時刻:
- P2等待時間 = 7-2 = 5,P2響應比 = (5+4)/ 4 = 2.25
- P3等待時間 = 7-4 = 3,P3響應比 =(3+1)/ 1 = 4
- P4等待時間 = 7-5 = 2,P4響應比 = (2+4)/ 4 = 1.5
所以選擇P3
8時刻:
- P2等待時間 = 8-2 = 6,P2響應比 = (6+4)/ 4 = 2.5
- P4等待時間 = 8-5 = 3,P4響應比 = (3+4)/ 4 = 1.75
所以選擇P2
12時刻:只有P4
排程順序:P1->P3->P2->P4
二、適合用於互動式系統
1.時間片輪轉排程演算法(RR)
- 演算法:按照各程式到達就緒佇列的順序,輪流讓各個程式執行一個時間片。若程式未在一個時間片內執行完,則剝奪處理機,將程式重新放到就緒佇列隊尾重新排列
- 特徵:搶佔式演算法;僅適用於程式排程
- 優點:公平、響應快,適用於分時作業系統
- 缺點:高頻率的程式切換導致有一定開銷;不區分任務緊急程度
- 時間片設定:
1.時間片太大,會退化為FCFS演算法,並且會增大程式響應時間
2.時間片太小,會導致程式切換過於頻繁,系統會花大量時間來處理程式切換,從而導致實際用於程式執行的實際比例減少。
例題:用時間片輪轉排程演算法:分析時間片大小為2時的程式執行情況
時間片大小為2:
- 0時刻:只有P1,P1(5)
- 2時刻:
P2到達,插入就緒佇列;P1未執行完,重新插入就緒佇列隊尾:P2(4)->P1(3) - 4時刻:
P3到達,插入就緒佇列,P2未執行完,重新插入就緒佇列:P1(3)->P3(1)->P2(2) - 5時刻:
P4到達,插入就緒佇列:P1(2)->P3(1)->P2(2)->P4(6) - 6時刻:
P1未執行完,重新插入就緒佇列隊尾:P3(1)->P2(2)->P4(6)->P1(1) - 7時刻:
P3執行完,提前程式排程: P2(2)->P4(6)->P1(1) - 9時刻:
P4(6)->P1(1)
…
排程順序:P1->P2->P1->P3->P2->P4->P1->P4
2.優先順序排程演算法
- 演算法:每個作業或者程式有各自的優先順序數,優先順序數高的優先
- 特徵:搶佔式演算法,也有非搶佔式演算法;適用於程式排程和作業排程,也可用於I/O排程
- 優點:用優先順序區分緊急程度、重要程度,適用於實時作業系統,比較靈活
- 缺點:若源源不斷地有高階優先程式到來,可能導致飢餓。
例題:(1)用優先順序排程非搶佔式演算法:求下表中程式的排程順序(一般情況,優先數越大,優先順序越高)
排程順序:
- 0時刻:只有P1
- 7時刻:P2、P3、P4依次已到達,P3優先數高,選擇P3
- 8時刻:P2和P4優先數相同,P2先到達,選擇P2
…
P1->P3->P2->P4
(2)用優先順序排程非搶佔式演算法:求下表中程式的排程順序(一般情況,優先數越大,優先順序越高)
排程順序:
- 0時刻:只有P1到達,P1(7)
- 2時刻:P2到達,排程切換,此時:P2(4)、P1(5),但P2優先數高,所以選擇P2
- 4時刻:P3到達,排程切換,此時:P1(5)、P2(2)、P3(1),P3優先數高,選擇P3
- 5時刻:P4到達,此時:P1(5)、P2(2)、P4(4),P2和P4優先數高且相等,但P2先到達就緒佇列,選擇P2
…
P1->P2->P3->P2->P4->P1
3.多級反饋佇列排程演算法
- 演算法:
1.設定多級就緒佇列,各級佇列優先順序從高到低,時間片從小到大
2.新程式到達時先進入第1級佇列,按FCFS原則排隊等待分配時間片,若用完時間片程式還未結束,則程式進入下一級佇列隊尾。如果此時已經在最下級佇列,則重新放回該佇列隊尾
3.只有第K級佇列為空時,才會為K+1級隊頭程式分配時間片- 特徵:搶佔式演算法,也有非搶佔式演算法;適用於程式排程
- 優點:用優先順序區分緊急程度、重要程度,適用於實時作業系統,比較靈活
- 缺點:若源源不斷地有高階優先程式到來,可能導致飢餓。
例題:用多級反饋佇列排程演算法:分析下表中程式執行的過程
多級就緒佇列
分析:
- 0時刻:P1進入第1級佇列,執行時間片,此時:P1(7),P1進入第2級佇列
- 1時刻:P2進入第1級佇列,因為第1級佇列有程式,所以不執行第2級佇列,對P2執行時間片,此時:P1(7),P2(3),P2進入第2級佇列
- 2時刻:因為第1級佇列沒有程式,所以排程P1,此時:P1(5),P2(3),P1進入第3級佇列
- 4時刻:P2(3),P1(5),執行第2級佇列,排程P2,此時P2(2),P1(5)
- 5時刻:P3到達,搶佔處理機,此時:P3(1),P2(2),P1(5)
- 6時刻:P3處理完成,繼續執行P2,此時:P2(2),P1(5)
- 8時刻:只剩P1,在第3級佇列
P1->P2->P1->P2->P3->P2->P1
相關文章
- 【作業系統】4.程序排程演算法作業系統演算法
- 作業系統精髓設計原理 程式排程作業系統
- 【作業系統】磁碟的四種基本排程演算法(圖表說明)作業系統演算法
- 作業系統4——處理機排程與死鎖作業系統
- 課程排課系統:智慧排課+線上約課+直播上課+作業打卡!
- 作業系統課程設計——處理機和程式排程演算法及記憶體分配回收機制作業系統演算法記憶體
- 作業系統中排程演算法(FCFS、RR、SPN、SRT、HRRN)作業系統演算法
- 07 系統排程
- 作業系統綜合題之“採用實時排程,可排程的限制條件和可排程的最大X值是是多少ms的CPU時間”作業系統
- 系統設計:如何設計一個分散式作業排程器 ?- Rakshesh分散式
- 解決方案| 快對講排程系統:高效協作
- linux之 修改磁碟排程演算法Linux演算法
- ucore作業系統學習(六) ucore lab6執行緒排程器作業系統執行緒
- 【作業系統2】作業系統啟動過程與異常/中斷,系統呼叫作業系統
- 作業系統啟動的過程作業系統
- oracle排程程式作業dbms_schedulerOracle
- oracle使用DBMS_SCHEDULER排程作業Oracle
- 系統架構設計之-任務排程系統的設計架構
- 【作業系統】銀行家演算法作業系統演算法
- [作業系統]銀行家演算法作業系統演算法
- 程式排程演算法之先到先服務演算法
- 排程系統設計精要
- Ubuntu系統定時作業無效果的排錯Ubuntu
- 作業系統課程實踐報告作業系統
- docker作業系統的攢建過程Docker作業系統
- Apache Oozie 教程:使用 Oozie 排程 Hadoop 作業ApacheHadoop
- 批處理作業排程-分支界限法
- 作業系統---之fork()函式作業系統函式
- 讀懂作業系統(x64)之堆疊幀(過程呼叫)作業系統
- 讀懂作業系統(x86)之堆疊幀(過程呼叫)作業系統
- 作業系統(1)——作業系統概述作業系統
- 作業系統(一):作業系統概述作業系統
- APS高階計劃排程系統和生產排產系統
- Android系統“資源排程框架”Android框架
- 猿考研之作業系統篇二(處理機排程)作業系統
- async-await:協作排程 vs 搶佔排程AI
- 實現Quartz.NET的HTTP作業排程quartzHTTP
- 作業系統(二):作業系統結構作業系統