1、等待態:等待某個事件的完成;
2、就緒態:等待系統分配處理器以便執行
3、執行態:占有處理器正在執行
執行態到等待態:往往是由於等待外設,等待主存等資源分配或等待人工干預而引起的;
等待態到就緒態:等待的條件已經滿足,只需要分配到處理器後就能執行;
就緒態到執行態:系統按某種策略選中就緒佇列中的乙個程序占用處理器;
執行態到就緒態:由於外界原因是執行狀態的程序讓出處理器,例如有更高優先順序的程序來搶占處理器,或時間片(時間片是系統分配給程式的執行時間)用完。
剝奪方式:當乙個程序正在執行時,系統可以基於某種原則,剝奪已分配給他的處理機,將之分配給其他程序,剝奪原則有:優先權原則、短程序優先原則、時間片原則。
非剝奪方式:分配程式一旦吧處理機分配給某程序後便讓他一直執行下去,知道程序完成或發生事件而阻塞時,才把處理機分配給另乙個程序。
主要有以下幾種,本文旨在簡單複習總結,詳細的演算法實現請有興趣的讀者自行**。
1、先來先服務排程演算法(fcfs,first come first served):誰第乙個排隊,誰就先被執行,在它執行過程中,不會中斷它;
2、短作業優先排程演算法(sjf,shortest job first):對預計執行時間短的程序有限分配處理機,通常後來的短程序不會搶先正在執行的程序;對長程序非常不利,可能長時間得不到執行。
基於優先順序的排程演算法
優先權排程演算法的型別:
非搶占式優先權演算法
在這種方式下,系統一旦把處理機分配給就緒佇列中優先權最高的程序後,該程序便一直執行下去,直至完成;
或因發生某事件使該程序放棄處理機時,系統方可再將處理機重新分配給另一優先權最高的程序。這種排程演算法主要用於批處理系統中;也可用於某些對實時性要求不嚴的實時系統中。
搶占式優先權排程演算法
3、最高響應比優先法(hrrn,highest response radio next):對於fcfs和sjf的平衡,fcfs方式只考慮每個作業的等待時間而未考慮執行時間的長短,而sjf只考慮了執行時間而未考慮等待時間的長短,因此兩種演算法在某種極端的情況下會帶來某些不便。hrrn通過綜合這兩種情況算出響應比r,根據響應比完成排程。
作業的優先順序隨著等待時間的增加而以速率a 提高,響應比rp的計算公式如下:
優點:長作業也有機會投入執行,缺點:每次排程前要計算響應比。
基於時間片的排程演算法:
4、時間片輪轉法(rr,round-robin):採用剝奪方式,每個程序被分配乙個時間段,按照在佇列中的順序交替執行;不利於處理緊急作業。
時間片長度變化的影響
過長->退化為fcfs演算法,程序在乙個時間片內都執行完,響應時間長。
過短->使用者的一次請求需要多個時間片才能處理完,上下文切換次數增加,響應時間長。
乙個較為可取的時間片的大小是略大於一次典型的互動所需時間,是大多數互動程式能在乙個時間片內完成。
對響應時間的要求:t(響應時間)=n(程序數目)*q(時間片)
就緒程序的數目:數目越多,時間片越小
系統的處理能力:應當使使用者輸入通常在乙個時間片內能處理完,否則使響應時間,平均周轉時間和平均帶權周轉時間延長。
5、多級反饋佇列(multilevel feedback queue): unix使用這種排程演算法;程序在進入待排程的佇列等待時,首先進入優先順序最高的q1中等待;首先排程優先順序高的佇列中的程序。若高優先順序佇列中已經沒有排程的程序,則排程次優先順序佇列的程序;同一佇列中的各個程序按照時間片輪轉排程;在低優先順序佇列中的程序在執行時,又有新到達的作業,那麼在執行完這個時間片後,cpu馬上分配給新到達的作業(剝奪)。
通常在使用多級佇列排程演算法時,程序進入系統時被永久地分配到某個佇列。但是,多級反饋佇列排程演算法允許程序在佇列之間遷移。如果程序使用過多的 cpu 時間,那麼它會被移到更低的優先順序佇列。在較低優先順序佇列中等待過長的程序會被移到更高優先順序佇列。這種形式可阻止飢餓的發生。
詳細的請看程序排程演算法:
程序排程演算法(程序排程策略)
程序排程演算法 排程演算法是指 根據系統的資源分配策略所規定的資源分配演算法。一 先來先服務和短作業 程序 優先排程演算法 1.先來先服務排程演算法。先來先服務 fcfs 排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。fcfs演算法比較有利於長作業 程序 而不利於短...
程序排程演算法
排程演算法是指 根據系統的資源分配策略所規定的資源分配演算法。一 先來先服務和短作業 程序 優先排程演算法 1.先來先服務排程演算法。先來先服務 fcfs 排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。fcfs演算法比較有利於長作業 程序 而不利於短作業 程序 由此...
程序排程演算法
先來先服務 first come first service,fcfs 排程演算法按照程序進入就緒佇列的先後順序選擇可以占用處理器的程序。這是一種不可搶占方式的排程演算法,優點是實現簡單,缺點是後來的程序等待cpu的時間較長。它現今主要用作輔助排程法 例如結合在優先順序排程演算法中使用,當有兩個最高...