1. 程式人生 > >作業系統處理機排程及常見的排程演算法

作業系統處理機排程及常見的排程演算法

一.處理機排程的層次:

1.高階排程:高階排程又稱為作業排程或長程排程,其主要功能是根據某種演算法,把外存上處於後備佇列中的那些作業調入記憶體,也就是說,它的排程物件是作業。

2.中級排程:中級排程又稱中程排程。引入中程排程的主要目的是為了提高記憶體利用率和系統吞吐量。中級排程實際上就是儲存器管理中的對換功能。

3.低階排程:低階排程通常也稱為程序排程或短程排程,它所排程的物件是程序(或核心級執行緒),程序排程是最基本的一種排程,在多道批處理,分時,實時三種類型的OS中,

                        都必須配置這級排程。

二.排程佇列模型:

1.僅有程序排程的排程佇列模型:


2.具有高階和低階排程的排程佇列模型:


3.同時具有三級排程的排程佇列模型:


三.排程演算法:

1.先來先服務和短作業(程序)優先排程演算法

(1)先來先服務排程演算法(FCFS):

        先來先服務排程演算法是一種最簡單的排程演算法,該演算法即可用於作業排程,也可用於程序排程。當在作業排程中採用該演算法時,每次排程都是從後備作業佇列中選擇一個

或多個最先進入該佇列的作業,將它們調入記憶體,為它們分配資源,建立程序,然後放入就緒佇列。在程序排程中採用FCFS演算法時,則每次排程是從就緒佇列中選擇一個最先

進入該佇列的程序,為之分配處理機,使之投入執行。該程序一直執行到完或發生某事件而阻塞後才放棄處理機。

        FCFS演算法比較有利於長作業(程序),而不利於短作業(程序)。

(2)短作業(程序)優先排程演算法:

        短作業(程序)優先排程演算法SJ(P)F,是指對短作業或短程序優先排程的演算法。它們可以分別用於作業排程和程序排程。短作業優先(SJF)的排程演算法是從後備佇列

中選擇一個或若干個估計執行時間最短的作業,將它們調入記憶體執行。而短程序(SPF)排程演算法則是從就緒佇列中選出一個估計執行時間最短的程序,將處理機分配給它,使

它立即執行並一直執行到完成,或發生某事件而被阻塞放棄處理機再重新排程。

        優點:SJ(P)F排程演算法能有效地降低作業(程序)的平均等待時間,提高系統吞吐量。

        缺點:1>該演算法對長作業不利;

                    2>完全未考慮作業的緊迫程度,因而不能保證緊迫性作業(程序)長期不被排程;

                    3>由於作業(程序)的長短只是根據使用者所提供的估計執行時間而定的,而使用者又可能會有意或無意地縮短其作業的估計執行時間,致使該演算法不一定能真正做到  

                         短作業優先排程;

例項:


2.高優先權優先排程演算法:

優先順序排程的含義:

   # 當該演算法用於作業排程時,系統從後備作業佇列中選擇若干個優先順序最高的,且系統能滿足資源要求的作業裝入記憶體執行。

   # 當該演算法用於程序排程時,將把處理機分配給就緒程序佇列中優先順序最高的程序。

優先權排程演算法的型別:

(1)非搶佔式優先順序演算法:

         在這種排程方式下,系統一旦把處理機分配給就緒佇列中優先順序最高的程序後,該程序就能一直執行下去,直至完成;或因等待某事件的發生使該程序不得不放棄處理機

時,系統才能將處理機分配給另一個優先順序高的就緒程序。

使用場合:主要用於一般的批處理系統、分時系統,也常用於某些實時性要求不太高的實時系統。

 (2)搶佔式優先順序排程演算法:

         在這種排程方式下,程序排程程式把處理機分配給當時優先順序最高的就緒程序,使之執行。一旦出現了另一個優先順序更高的就緒程序時,程序排程程式就停止正在執行的

程序,將處理機分配給新出現的優先順序最高的就緒程序。

使用場合:常用於實時要求比較嚴格的實時系統中,以及對實時效能要求高的分時系統。      

優先順序的型別:程序的優先順序可採用靜態優先順序和動態優先順序兩種,優先順序可由使用者自定或由系統確定。

(1)靜態優先權:靜態優先順序是在建立程序時確定程序的優先順序,並且規定它在程序的整個執行期間保持不變。

確定優先順序的依據:①程序的型別。通常系統程序優先順序高於一般使用者程序的優先順序;互動型的使用者程序的優先順序高於批處理作業所對應的程序的優先順序。

                                    ②程序對資源的需求。例如,程序的估計執行時間及記憶體需求量少的程序,應賦於較高的優先順序,這有利縮小作業的平均週轉時間。

                                    ③根據使用者的要求。使用者可以根據自己作業的緊迫程度來指定一個合適的優先順序。

優點:①簡單易行 ②系統開銷小

缺點:①不太靈活,很可能出現低優先順序的作業(程序),長期得不到排程而等待的情況。

            ②靜態優先順序法僅適用於實時要求不太高的系統。

(2)動態優先順序:動態優先順序是在建立程序時賦予該程序一個初始優先順序,然後其優先順序隨著程序的執行情況的變化而改變,以便獲得更好的排程效能。

優缺點:動態優先順序優點是使相應的優先順序排程演算法比較靈活、科學,可防止有些程序一直得不到排程,也可防止有些程序長期壟斷處理機。動態優先順序缺點是需要花費相當多

執行程式時間,因而花費的系統開銷比較大。

3.基於時間片的輪轉排程演算法

時間片輪轉演算法:

        時間片輪轉排程是一種最古老,最簡單,最公平且使用最廣的演算法。每個程序被分配一個時間段,稱作它的時間片,即該程序允許執行的時間。如果在時間片結束時程序正

在執行,則CPU將被剝奪並分配給另一個程序。如果程序在時間片結束前阻塞或結束,則CPU當即進行切換。排程程式所要做的就是維護一張就緒程序列表,當程序用完它的

時間片後,它被移到佇列的末尾。

        時間片輪轉排程中唯一有趣的一點是時間片的長度。從一個程序切換到另一個程序是需要一定時間的--儲存和裝入暫存器值及記憶體映像,更新各種表格和佇列等。假如程序

切換(process switch) - 有時稱為上下文切換(context switch),需要5毫秒,再假設時間片設為20毫秒,則在做完20毫秒有用的工作之後,CPU將花費5毫秒來進行程序切換。

CPU時間的20%被浪費在了管理開銷上。

原理:在早期的時間片輪轉法中,系統將所有的就緒程序按先來先服務的原則,排成一個佇列,每次排程時,把CPU分配給隊首程序,並令其執行一個時間片,時間片的大小從

幾ms到幾百ms。當執行的時間片用完時,由一個計時器發出時鐘中斷請求,排程程式便據此訊號來停止該程序的執行,並將它送往就緒佇列的末尾;然後,再把處理機分配給就

緒佇列中新的隊首程序,同時也讓它執行一個時間片。這樣就可以保證就緒佇列中的所有程序,在一給定的時間內,均能獲得一時間片的處理機執行時間。

例項: