1. 程式人生 > >作業系統——程序排程演算法理解

作業系統——程序排程演算法理解

排程演算法分類:

1. 批處理

2. 互動式

3. 實時

排程演算法的目標:

所有系統:公平、策略強制執行、平衡

批處理系統:吞吐量、週轉時間、CPU利用率

互動式:響應時間、均衡性

實時系統:滿足截止時間、可預測性

批處理系統中的排程

1. 先到先服務(FCFS):在所有排程演算法中,最簡單的是非搶佔式的FCFS演算法。 

演算法原理:

 

演算法優點:易於理解且實現簡單,只需要一個佇列(FIFO),且相當公平

演算法缺點:比較有利於長程序,而不利於短程序,有利於CPU 繁忙的程序,而不利於I/O 繁忙的程序

2. 最短作業優先(SJF):適用於執行時間可以預知的批作業的非搶佔式排程演算法

演算法原理:

 

演算法優點:相比FCFS 演算法,該演算法可改善平均週轉時間和平均帶權週轉時間,縮短程序的等待時間,提高系統的吞吐量。

演算法缺點:對長程序非常不利,可能長時間得不到執行,且未能依據程序的緊迫程度來劃分執行的優先順序,以及難以準確估計程序的執行時間,從而影響排程效能。

3. 最短剩餘時間優先:最短作業優先的搶佔式版本就是最短剩餘時間優先

4. 三級排程:

1>.准入排程:決定那些作業進入系統。

2>.記憶體排程:決定哪個程序留在記憶體,而那個程序換出到磁碟。

3>.CPU排程器:在記憶體中選取下一個將要執行的程式。

演算法原理:

 

互動式系統中的排程

1. 時間片輪轉排程:一種最古老、最簡單、最公平且是使用最廣的演算法。

演算法原理:讓就緒程序以FCFS 的方式按時間片輪流使用CPU 的排程方式,即將系統中所有的就緒程序按照

FCFS 原則,排成一個佇列,每次排程時將CPU 分派給隊首程序,讓其執行一個時間片,時間片的長度從幾個ms 到幾百ms。在一個時間片結束時,發生時鐘中斷,排程程式據此暫停當前程序的執行,將其送到就緒佇列的末尾,並通過上下文切換執行當前的隊首程序,程序可以未使用完一個時間片,就出讓CPU(如阻塞)。

演算法優點:時間片輪轉排程演算法的特點是簡單易行、平均響應時間短。 

演算法缺點:不利於處理緊急作業。在時間片輪轉演算法中,時間片的大小對系統性能的影響很大,因此時間片的大小應選擇恰當 

怎樣確定時間片的大小:

時間片大小的確定 

1.系統對響應時間的要求

2.就緒佇列中程序的數目

3.系統的處理能力

2. 優先順序排程:每一個程序被賦予一個優先順序,率先執行優先順序最高的就緒程序。

3. 多重佇列

4. 最短程序優先

5. 保證排程演算法

6. 彩票排程演算法

7. 公平分享排程

實時系統排程