先來先服務(first come first service,fcfs)排程演算法按照程序進入就緒佇列的先後順序選擇可以占用處理器的程序。這是一種不可搶占方式的排程演算法,優點是實現簡單,缺點是後來的程序等待cpu的時間較長。它現今主要用作輔助排程法;例如結合在優先順序排程演算法中使用,當有兩個最高優先順序的程序時,則誰先來,誰就先被排程。
短執行程序優先演算法(shortest process first,spf)就是從就緒佇列中選擇乙個cpu執行時間預期最短的程序,將處理器分配給它。雖然較公平,但實現難度較大,因為要準確預定下乙個程序的cpu執行週期是很困難的。
•最高優先順序優先(highest priority first,hpf)排程演算法的核心是確定程序的優先順序。首先,系統或使用者按某種原則為程序指定乙個優先順序來表示該程序所享有的排程優先權。確定優先順序的方法較多,一般可分為兩類,即靜態法和動態法。靜態法根據程序的靜態特性,在程序開始執行之前就確定它們的優先順序,一旦開始執行之後就不能改變。動態法則不然,它把程序的靜態特性和動態特性結合起來確定程序的優先順序,隨著程序的執行過程,其優先順序不斷變化。
•程序的靜態優先順序確定最基本的方法是按照程序的型別給予不同的優先順序。例如,在有些系統中,程序被劃分為系統程序和使用者程序。系統程序享有比使用者程序高的優先順序;對於使用者程序來說,則可以分為:i/o繁忙的程序、cpu繁忙的程序、i/o與cpu均衡的程序和其他程序等。
•對系統程序,也可以根據其所要完成的功能劃分為不同的型別。例如,排程程序、i/o程序、中斷處理程序、儲存管理程序等。這些程序還可進一步劃分為不同型別並賦予不同的優先順序。例如,在作業系統中,對於鍵盤中斷的處理優先順序和對於電源掉電中斷的處理優先順序是不相同的。
•基於靜態優先順序的排程演算法實現簡單,系統開銷小,但由於靜態優先順序一旦確定之後,直到執行結束為止始終保持不變,從而系統效率較低,排程效能不高。現在的作業系統中,如果使用優先順序排程的話,則大多採用動態優先順序的排程策略。
•程序的動態優先順序一般可以根據以下兩個方面來確定:
• (1)根據程序占有cpu時間的長短來決定。乙個程序占有處理機的時間愈長,則在被阻塞之後再次獲得排程的優先順序就越低。反之,其獲得排程的可能性就會越大。
• (2)根據就緒程序等待cpu的時間長短來決定。乙個就緒程序在就緒佇列中等待的時間越長,則它獲得排程選中的優先順序就越高。
•由於動態優先順序隨時間的推移而變化,系統要經常計算各個程序的優先順序,因此,系統要為此付出一定的開銷。
•最高優先順序優先排程演算法用於多道批處理系統中較好,但它使得優先順序較低的程序等待時間較長,這對於分時系統中要想獲得較好的響應時間是不允許的,所以在分時系統中多採用時間片輪轉法來進行程序排程。
• 時間片輪轉(round robin,rr)法的基本思路是讓每個程序在就緒佇列中的等待時間與享受服務的時間成比例。在時間片輪轉法中,需要將cpu的處理時間分成固定大小的時間片,例如,幾十毫秒至幾百毫秒。如果乙個程序在被排程選中之後用完了系統規定的時間片,但又未完成要求的任務,則它自行釋放自己所占有的cpu而排到就緒佇列的末尾,等待下一次排程。同時,程序排程程式又去排程當前就緒佇列中的第乙個程序。
•顯然,輪轉法只能用來排程分配一些可以搶占的資源。這些可以搶占的資源可以隨時被剝奪,而且可以將它們再分配給別的程序。cpu是可搶占資源的一種。但印表機等資源是不可搶占的。由於作業排程是對除了cpu之外的所有系統硬體資源的分配,其中包含有不可搶占資源,所以作業排程不使用輪轉法。在輪轉法中,時間片長度的選取非常重要。首先,時間片長度的選擇會直接影響到系統的開銷和響應時間。如果時間片長度過短,則排程程式搶占處理機的次數增多。這將使程序上下文切換次數也大大增加,從而加重系統開銷。反過來,如果時間片長度選擇過長,例如,乙個時間片能保證就緒佇列中所需執行時間最長的程序能執行完畢,則輪轉法變成了先來先服務法。時間片長度的選擇是根據系統對響應時間的要求和就緒佇列中所允許最大的程序數來確定的。
• 在輪轉法中,加入到就緒佇列的程序有3種情況,一種是分給它的時間片用完,但程序還未完成,回到就緒佇列的末尾等待下次排程去繼續執行。另一種情況是分給該程序的時間片並未用完,只是因為請求i/o或由於程序的互斥與同步關係而被阻塞。當阻塞解除之後再回到就緒佇列。第三種情況就是新建立程序進入就緒佇列。如果對這些程序區別對待,給予不同的優先順序和時間片,從直觀上看,可以進一步改善系統服務質量和效率。例如,我們可把就緒佇列按照程序到達就緒佇列的型別和程序被阻塞時的阻塞原因分成不同的就緒佇列,每個佇列按fcfs原則排列,各佇列之間的程序享有不同的優先順序,但同一佇列內優先順序相同。這樣,當乙個程序在執行完它的時間片之後,或從睡眠中被喚醒以及被建立之後,將進入不同的就緒佇列。
程序排程演算法(程序排程策略)
程序排程演算法 排程演算法是指 根據系統的資源分配策略所規定的資源分配演算法。一 先來先服務和短作業 程序 優先排程演算法 1.先來先服務排程演算法。先來先服務 fcfs 排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。fcfs演算法比較有利於長作業 程序 而不利於短...
程序排程演算法
排程演算法是指 根據系統的資源分配策略所規定的資源分配演算法。一 先來先服務和短作業 程序 優先排程演算法 1.先來先服務排程演算法。先來先服務 fcfs 排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。fcfs演算法比較有利於長作業 程序 而不利於短作業 程序 由此...
程序排程演算法
排程演算法 指根據系統的資源分配策略所規定的資源排程演算法。本篇部落格主要介紹了三種程序排程演算法,由於博主經驗還是很low,目前只能看懂這三種。一 先來先服務和短作業 程序 優先排程演算法 1.先來先服務排程演算法。先來先服務 fcfs 排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程...