時間片輪轉演算法
在分時系統中,最簡單最常用的是基於時間片的輪轉排程演算法,讓就緒佇列上的每個程序僅執行乙個時間片。
輪**的基本原理:
在就緒佇列中,系統可設定每隔一定時間便產生乙個中斷,去啟用程序排程程式進行排程,把cpu
分配給隊首程序,並令其執行乙個時間片,當其執行完畢後,又把處理機分配給佇列的新的隊首程序,也讓其執行一段時間。
程序切換時機:
2 :乙個時間片已經用完,計時器中斷處理程式被啟用,如果程序尚未執行完畢,排程程式會把它送往就緒佇列的末尾。
在輪轉演算法中,時間片的大小對系統效能影響很大。
優先順序排程演算法:
在時間片輪轉排程演算法中,做了乙個隱含的假設,即系統中所有的程序的緊迫性是相同的,但實際並非如此。為了滿足實際要求引入了優先順序,從而形成優先順序排程演算法。
優先順序排程演算法的型別:
非搶占式優先順序排程演算法:該演算法規定一旦os
將處理機分配給就緒佇列中的優先順序高的程序,該程序會一直執行下去直至完成,或者因為某些原因放處理機,
os會將處理機分配給其他高優先順序程序。
搶占式優先順序排程演算法:
把處理機分配給優先順序高的程序,使其執行,但在其執行期間,只要出現了另乙個優先順序更高的程序,排程程式會就將處理機重新分配給新的優先順序高的程序。
優先順序的型別:
靜態優先順序:
靜態優先順序就是在建立程序的時候確定的,程序的整個執行期間保持不變。
確定程序優先順序的大小的依據:
程序型別:
通常系統程序的優先順序高於一般使用者程序的優先順序。
程序對資源的需求:
對資源要求少的程序應賦予更高的程序。
使用者要求:
根據程序的緊迫程度及使用者所付的費用來確定。
動態優先順序:
動態優先順序是指在建立程序之初,先賦予乙個優先順序,然後其值隨程序的推進或等待時間的增加而改變,以便或的更好的排程效能。這樣可以防止乙個長作業的長期壟斷處理機。
多佇列排程演算法:
在系統中僅設定乙個程序的就緒佇列,這種設計方式在多處理機上,這種單一的排程策略缺點就會更多。多級排程演算法
多佇列排程演算法:
上述的各種排程演算法中,尤其在應用程序排程時,由於系統中僅設計乙個程序就緒佇列,低階排程演算法是固定的,單一的,無法滿足系統中不同使用者對程序排程排程策略的不同要求,在多處理機系統中,這種單一策略實現的缺點更突出。因此引入多佇列排程演算法
該演算法將系統中的就緒佇列從乙個拆分為若干個,將不同型別或性質的程序固定分配在不同的就緒佇列中,不同的就緒佇列採用不同的排程演算法,乙個就緒佇列中的程序可以設定不同的優先順序,不同的就緒佇列也可以設計不同的優先順序。在多處理機系統中,該演算法由於安排了多個就緒佇列,因此很方便的為每個處理機設定乙個單獨的就緒佇列。
多級反饋佇列排程演算法:
對於前面的各種排程演算法其實都有一定的侷限性,如果為指明程序長度,則段程序優先和基於程序長度的搶占式排程演算法都將無法使用,而多級反饋佇列排程演算法則不必實現知道各種程序所需執行的時間,還可以較好的滿足各種型別程序的要求。因此被認為是一種較好的程序排程演算法。
排程機制:
1:設定多個就緒佇列,並未每個就緒佇列賦予不同的優先順序,並且該演算法為不同佇列中的程序所賦予的執行時間片的大小也各不相同,在優先順序高的佇列中,其時間片就越小。
2:每個佇列採用
fcfs
演算法,當新程序進入記憶體後,首先將它存放在第一佇列的末尾,按
fcfs
原則等待排程,當輪到該程序執行時,如它能在該時間片內完成,便可撤離系統,否則,排程程式會將其轉入第二佇列的末尾等待排程,如果在第二佇列中執行的時間片仍未完成,再依次放入第三。。。。。。直到該程序完成,則撤離系統。
3:按佇列優先順序排程:
排程程式首先排程最高優先順序佇列中的各程序執行,僅當高優先順序佇列空,則才會下乙個次優先順序佇列中的程序。
基於公平原則的排程演算法:
前面排程演算法,所保證的只是優先順序執行,沒有考慮到排程的公平性。
1:保證排程演算法:
如果在系統中有n
個相同型別的金恆同時執行,為公平起見,保證每個程序獲得相同的處理機時間
1/n。
2:公平分享排程演算法:
OS之程序排程
處理機排程 在多道程式程式的環境中,記憶體中存在著多個程序,程序往往大於處理機數目,這就要系統按照某種演算法,動態的將處理機分配給處於就緒狀態的程序。是之執行,分配處理機的任務就是由處理機排程完成的。排程實質上是一種資源分配。處理機排程演算法的目標 處理價排程演算法的共同目標 1 資源利用率,為了提...
OS 程序排程演算法
最近學習自考學到程序排程,其中的排程演算法看著很複雜,細想又很簡單,接下來簡單介紹一下 先來先服務演算法 理論定義 我的理解 排程演算法 從就緒佇列的隊首選擇最先到達就緒佇列的程序,為該程序分配cpu 排隊,先到先得 效能分析 適合長程序,不利於短程序,短程序等待時間相對於執行時間而言太長 排隊要做...
程序排程(二)
緊接上一文!3 程序選擇 在cfs排程裡面,當需要選擇下乙個程序的時候,將會選擇最小的vruntime的程序。這個其實就是cfs排程的演算法的核心。cfs使用紅黑樹來組織可執行程序佇列,並利用其迅速找到最小的vruntime值的程序。在linux中,紅黑樹是乙個子平衡的二叉搜尋樹。下面我們就來看一下...