1:先來先服務排程演算法【fcfs】
(1):按照作業提交,或程序變為就緒狀態的先後次序分派cpu
(2):新作業只有噹噹期那作業或程序執行完成或阻塞才獲得cpu執行
(3):被喚醒的作業或程序不立即恢復執行,通常等到當前作業或程序讓出cpu(預設非搶占方式)
(4):有利於cpu繁忙型的作業,而不利於i/o繁忙的作業(程序)
2:短作業【程序】優先排程sjf(非搶占)/spf(搶占)
(1)平均周轉時間、平均帶權周轉時間都有明顯改善。sjf/spf排程演算法能有效的降低作業的平均等待時間,提高系統吞吐量。
(2)未考慮作業的緊迫程度,因而不能保證緊迫性作業(程序)的及時處理、對長作業的不利、作業(程序)的長短含主觀因素,不一定能真正做到短作業優先。
3、高優先權優先排程演算法hpf
(1)兩種方式:非搶占式優先權演算法、搶占式優先權演算法(關鍵點:新作業產生時)
(2)型別:靜態優先權:建立程序時確定,整個執行期間保持不變。動態優先權:建立程序時賦予的優先權可隨程序的推進或隨其等待時間的增加而改變。
(3)高響應比優先排程演算法hrrn
hrrn為每個作業引入動態優先權,使作業的優先順序隨著等待時間的增加而以速率a提高:優先權 =(等待時間+要求服務時間)/要求服務時間= 響應時間 / 要求服務時間。
什麼時候計算各程序的響應比優先權?(作業完成時、新作業產生時(搶占、非搶占)、時間片完成時、程序阻塞時)
4、基於時間片的輪轉排程演算法rr
(1)時間片輪轉演算法
過程:1、排成乙個佇列。
2、每次排程時將cpu分派給隊首程序。
3、時間片結束時,發生時鐘中斷。
4、暫停當前程序的執行,將其送到就緒佇列的末尾,並通過上下文切換執行當前就緒的隊首程序。
說明:1、程序阻塞情況發生時,未用完時間片也要出讓cpu。
2、能夠及時響應,但沒有考慮作業長短等問題。
3、系統的處理能力和系統的負載狀態影響時間片長度。
(2)多級反饋佇列演算法fb
過程:1、準備排程:先將它放入第乙個佇列的末尾,按fcfs原則排隊等待排程。
2、if時間片內完成,便可準備撤離系統。
3、if時間片內未能完成,排程程式便將該程序轉入第二佇列的末尾等待再次被排程執行。
4、當第一佇列中的程序都執行完,系統再按fcfs原則排程第二佇列。在第二佇列的稍放長些的時間片內仍未完成,再依次將它放入第三佇列。
5、依次降到第n佇列後,在第n佇列中便採取按時間片輪轉的方式執行。
說明:1、設定多個就緒佇列,各佇列有不同的優先順序,優先順序從第乙個佇列依次降低。
2、賦予各佇列程序執行時間片大小不同, 優先權越高,時間片越短。
3、僅當優先權高的佇列(如第一佇列)空閒時,排程程式才排程第二佇列中的程序執行。
4、高優先順序搶占時,被搶占的程序放回原就緒佇列末尾。
作業系統排程演算法
include include include include using namespace std const int maxnum 101 typedef struct information node struct node1 此結構體用於優先順序演算法的搶占式 int priority i...
作業系統排程演算法
在作業系統中存在多種排程演算法,其中有的排程演算法適用於作業排程,有的排程演算法適用於程序排程,有的排程演算法兩者都適用。下面介紹幾種常用的排程演算法。fcfs排程演算法是一種最簡單的排程演算法,該排程演算法既可以用於作業排程也可以用於程序排程。在作業排程中,演算法每次從後備作業佇列中選擇最先進入該...
作業系統 排程演算法
fcfs是最簡單的排程演算法,既可以用於作業排程,也可以用於程序排程,系統將按照作業到達的先後次序來進行排程。sjf演算法是以作業的長短來計算優先順序,作業越短,優先順序越高。作業的長短是以作業所要求的執行時間來衡量的。可以分別用於作業排程和程序排程。缺點 必須預知作業的執行時間 對長作業很不利,長...