程序排程也稱為低階排程,它所排程的物件為程序(或者核心級執行緒),而程序排程演算法主要有以下幾種:
先來先服務排程演算法是一種最簡單的排程演算法,可用於作業排程,也可用於程序排程。
在程序排程中採用先來先服務演算法時候,每次排程就從就緒佇列中選乙個最先進入該佇列的程序,為之分配處理機。即誰第乙個排隊的誰就先被執行。
有利於長作業(程序)
有利於cpu繁忙型的作業(程序)
不利於短作業(程序)
不利於i/o繁忙型作業(程序)
短作業(程序)優先排程演算法是指短作業或者短程序的優先排程演算法,它們分別作用於作業排程和程序排程。它是先來先服務排程演算法的一種優化版本。
短程序優先排程演算法是從就緒佇列中選出乙個估計執行時間最短的程序,再將處理機分配給它,直到執行完成。而其他程序一般不搶先正在執行的程序。
有效的降低了程序的平均等待時間,提高了系統高度吞吐量。
演算法對長作業(程序)不利(長作業(程序)長期不被排程)。
未考慮程序的緊迫程度。
由於是估計執行時間而定,而這個時間是由使用者所提供的,所以該演算法不一定能真正做到短作業優先排程。
為了解決在短作業優先排程演算法中程序的緊迫程度問題,我們引入了高優先權優先排程演算法,高優先權排程演算法的方法也很簡單,就是在佇列中選取優先權最高的程序裝入記憶體。該演算法又分為以下兩類:
如果系統已經分配好乙個優先權最高的程序,它會一直被執行,直到結束或者因為某事件放棄執行,此時系統才會選擇另外乙個優先權最高的程序。
這種排程演算法主要被用於批處理系統中。
系統在佇列中把乙個優先權最高的程序執行,但是如果在執行中又出現乙個優先權更高的程序,此時當前程序被停止,換入另外乙個優先權更高的程序執行。
這種排程演算法主要被用於要求比較嚴格的實時系統,以及對效能要求較高的批處理和分時系統中。
優先權的型別被分為靜態優先權和動態優先權。
靜態優先權就是給定某個整型數字來表示程序的優先順序,數字越小表示優先順序越高,反之數字越大,程序優先順序越低。
動態優先權隨著程序的建立而被建立,可以隨著程序的推進或者等待時間而變化。
為了保證能及時相應使用者的請求,所以我們採用了基於時間片的輪轉排程演算法,它的原理通俗來講就是佇列中每乙個程序都獲得了一定的執行時間,從幾ms到幾百ms,當乙個執行時間結束,計時器會發出乙個訊號,此時正在執行的程序將被中斷,同時此程序將放在佇列的末尾,然後執行這時候的佇列的隊首程序,因此佇列中每乙個程序都將獲得一定時間的執行。
平均執行時間短,簡單可行。
這種排程演算法的缺點也很明顯,如果執行時間(時間片)選擇的不好,將對效能產生很大的影響,例如如果選擇了小的時間片,那麼會對短程序將很有利,很快被執行完成,但是會頻繁的發生中斷,增加系統的開銷,但是如果選擇的執行時間過長,此種演算法又和先來先服務演算法效果一樣了。
系統的處理能力,
此就緒時佇列中的程序數目。
系統對相應時間的要求。
前面介紹的四種排程演算法都有各自的缺陷,但是多級反饋排程演算法有很多優點,是目前被公認的一種好的排程演算法。
設定多個就緒佇列,每個佇列的優先順序逐個降低,同時每個佇列的執行時間也各不相同,優先順序越高的佇列,執行時間越短,優先順序越低的佇列,執行時間越長。
當乙個程序進入記憶體後,首先進入第乙個佇列的末尾,按照先來先服務的排程演算法進行排程,如果在第乙個佇列的執行時間內未執行完成,此時把此程序放入第二個佇列的末尾,按照之前的方法進行執行,直到在某乙個佇列的隊首執行完成。
當第乙個佇列全部執行完成,此時系統才會執行第二個佇列,但是如果此時又有新的程序進入,此時執行完畢這個時間段,立刻把此程序分配給新的作業。
在多級反饋佇列排程演算法中,如果我們規定程序在第乙個佇列所規定的時間片內完成,此時能滿足終端型使用者的需求。
常見程序排程演算法
程序排程 實質是一種資源分配。決定將cpu分配給就緒佇列中的某個程序。發生程序排程原因 1 正在執行的程序執行完畢 2 執行中的程序因發生i o請求或等事件而暫停執行 3 時間片用完 4 在程序通訊或同步過程中執行了某項原語操作,如p操作 wait操作 5 高優先順序進入。作業排程 簡單來說就是決定...
常見的程序排程演算法
程序排程程式按一定的策略,動態地把處理機 分配給處於就緒佇列中的某乙個程序 以使之執行。1.先來先服務 fcfs 排程演算法 原理 系統將按照作業到達的先後次序來進行作業排程,或者說它是優先考慮在系統中等待時間最長的作業,而不管該作業所需執行時間的長短,從後備作業佇列中優先選擇幾個最先進入該佇列的作...
程序排程的常見演算法
1.程序排程的常見演算法 1 先來先服務排程演算法 fcfs,first come first server 處於就緒態的程序按先後順序鏈入到就緒佇列中,而fcfs排程演算法按就緒程序進入就緒佇列的先後次序選擇當前最先進入就緒佇列的程序來執行,直到此程序阻塞或結束,才進行下一次的程序選擇排程。fcf...