在作業系統中資源是有限的,當有多個程序或執行緒要使用這些資源時,因為資源的有限性,必須按照一定的原則選擇程序來使用資源。
所以排程演算法就是 :根據系統的資源分配策略所規定的資源分配演算法。
排程演算法要求 :高資源利用率,高吞吐量,使用者滿意等原則。
排程演算法設計目標:
1. 批處理系統
增加系統吞吐量和提高系統資源利用率。
2. 分時系統
保證每個分時使用者能容忍的響應時間。
3. 實時系統
保證對隨機發生的外部時間做出實時相應。
常見排程演算法:
一 1. 先來先服務(fcfs)
fcfs 演算法
按照作業提交或程序變為就緒態的先後次序,分配 cpu。當前作業或程序占用 cpu ,直到執行完或阻塞,才讓出 cpu。在作業或程序喚醒後並不立即恢復執行,通常等到當前作業或程序讓出 cpu。
特點 有利於長作業,不利於短作業。有利於 cpu 繁忙的作業,而不利於 i/o 繁忙的作業。 二
2. 短作業(程序)優先排程演算法sj(p)f
概念 對預計執行時間短的作業/程序優先分派處理。通常後來的短作業不搶先正在進行的作業。
優點 比fcfs改善平均周轉時間和平均帶權周轉時間,縮短作業的等待時間;
提高系統吞吐量。
缺點 對長作業不利,可能長時間得不到執行。
未能根據作業的緊迫程度設定優先順序。
難以準確估計作業的執行時間,從而影響排程效能。 三
3. 輪轉演算法
概念 讓每個程序在就緒佇列中的等待時間與享受服務的時間成正比。
定義 系統把所有就緒態程序按先入先出的原則排成乙個佇列。新來的程序加到就緒佇列的末尾。每當執行排程時,程序排程程式總是選出就緒佇列的隊首程序,讓它在 cpu 上執行乙個時間片的時間。當程序用完分給它的時間片時,排程程式停止該程序的執行,並將其新增到就緒佇列末尾。
程序可以未使用完乙個時間片就讓出 cpu。
就緒程序數目越多,時間片越小。
缺點 當時間片過長時,將退化為fcfs演算法,程序在乙個時間片內都執行完,響應時間過長。
當時間片過短時,使用者的一次請求需要多個時間片才能處理完,上下文切換次數增加,響應時間長。 四
4. 多級反饋佇列演算法
概念 多級反饋佇列演算法是時間輪片演算法和優先順序演算法的綜合發展。
定義 設定多個就緒佇列,分別賦予不同的優先順序。如逐級降低,佇列1優先順序最高。
每個優先順序佇列的執行時間也不同,規定優先順序越低時間片越長。
新程序進入記憶體後,先投入佇列1的末尾,按fcfs演算法排程;若按佇列1乙個時間片未能執行完,則降低投入到佇列2的末尾,同樣按fcfs演算法排程;如此下去,降低到最後的佇列,則按「時間片輪轉」演算法排程直到完成。
僅當較高優先順序的隊列為空,才排程較低優先順序的佇列中的程序執行。如果程序執行時有新程序進入較高優先順序的佇列,則搶先執行新程序,並把被搶先的程序投入原佇列的末尾。
優點 提高了系統吞吐量和縮短平均周轉時間而照顧短程序。
獲得較好的 i/o 裝置利用率和縮短響應時間而照顧 i/o 型程序。
不必估計程序的執行時間,動態調節。
常見的Linux程序排程演算法
程序排程 在作業系統中,排程是指一種資源分配 排程演算法 就是根據作業系統的資源分配策略所規定的資源分配的演算法 1.先來先去服務 如果早就緒的程序排在就緒佇列的前面,遲就緒的程序排在就緒佇列的後面,那麼先來先服務 fcfs first come first service 總是把當前處於就緒佇列之...
linux 幾種常見的程序排程演算法
先來先服務 fcfs 排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。當在作業排程中採用該演算法時,每次排程都是從後備作業佇列中選擇乙個或多個最先進入該佇列的作業,將它們調入記憶體,為它們分配資源 建立程序,然後放入就緒佇列。在程序排程中採用fcfs演算法時,則每次排...
常見程序排程演算法
程序排程 實質是一種資源分配。決定將cpu分配給就緒佇列中的某個程序。發生程序排程原因 1 正在執行的程序執行完畢 2 執行中的程序因發生i o請求或等事件而暫停執行 3 時間片用完 4 在程序通訊或同步過程中執行了某項原語操作,如p操作 wait操作 5 高優先順序進入。作業排程 簡單來說就是決定...