A. 進程調度的實時系統
最簡單最直觀的進程調度策略是基於優先順序的調度,多數實時系統採用基於優先順序的調度,每個進程根據它重要程度的不同被賦予不同的優先順序,調度器在每次調度時,總選擇優先順序最高的進程開始執行.
首先要考慮的問題是如何分配優先順序,對於進程優先順序的分配可以採用靜態和動態兩種方式,靜態優先順序調度演算法:這種調度演算法給那些系統中得到運行的所有進程都靜態地分配一個優先順序.靜態優先順序的分配可以根據應用的屬性來進行,比如進程的周期,用戶優先順序,或者其它的預先確定的策略.單調率演算法(RM)調度演算法是一種典型的靜態優先順序調度演算法,它根據進程的執行周期的長短來決定調度優先順序,那些具有小的執行周期的進程具有較高的優先順序.動態優先順序調度演算法:這種調度演算法根據進程的資源需求來動態地分配進程的優先順序,其目的就是在資源分配和調度時有更大的靈活性.在實時系統中,最早期限優先演算法(EDF)演算法是使用最多的一種動態優先順序調度演算法,該演算法給就緒隊列中的各個進程根據它們的截止期限(Deadline)來分配優先順序,具有最近的截止期限的進程具有最高的優先順序.
分配好優先順序之後下一個要考慮的問題是何時讓高優先順序進程掌握CPU的使用權,這取決於操作系統的內核,有不可搶占式和可搶占式兩種.
不可搶占式內核要求每個進程自我放棄CPU的所有權,各個進程彼此合作共享一個CPU.非同步事件還是由中斷服務來處理.中斷服務可以使一個高優先順序的進程由掛起狀態變為就緒狀態.但中斷服務以後控制權還是回到原來被中斷了的那個進程,直到該進程主動放棄CPU的使用權時,那個高優先順序的進程才能獲得CPU的使用權.這就出現了響應時間的問題,高優先順序的進程已經進入了就緒狀態但不能執行,這樣進程的響應時間變得不再確定這與實時系統的要求不符,因此一般的實時操作系統都要求是可搶占式的內核,當一個運行著的進程使一個比它優先順序高的進程進入了就緒態,當前進程的CPU使用權就被剝奪了,或者說被掛起了,那個高優先順序的進程立刻得到了CPU的控制權,如果是中斷服務子程序使一個高優先順序的進程進入就緒態,中斷完成時,中斷了的進程被掛起,優先順序高的那個進程開始運行.在這種內核設置下,多個進程可能處於並發的狀態,這就出現了多個進程共享資源的情況,因此我們需要設置信號量來保證臨界資源的正確使用,任何一個想使用臨界資源的進程在進入臨界區之前必須擁有使用臨界資源的信號量,否則不可以執行臨界區代碼.
這樣基於優先順序的可搶占式進程調度策略就基本架構完成,但此時仍然有系統崩潰的危險,假設系統中有3個進程,分別為p1,p2和p3. p1的優先權高於p2,而p2的優先權高於p3.恰在此時p1和p2 因某種原因被阻塞,這時候系統調度p3執行.p3執行一段時間後,p1被喚醒.由於採取的是PBP的調度策略,因此p1搶占 p3的CPU, p1執行.p1執行一段時間後要進入臨界區,但此時p3佔有此臨界資源的信號量.因此p1被阻塞,處於等待狀態,等待p3 釋放此信號量.經過這么一段時間後,p2此時此刻處於就緒狀態.因此系統調度p2執行.如果p3在p2的執行期間一直沒有能夠被調度執行的話,那p1和p3將一直等到p2執行完後才能執行,p1更要等到p3釋放它所把持的信號量才能執行;而這段時間完全有可能超出p1的Deadline,使得p1崩潰.我們看到在這個過程中,由於臨界資源的使用問題使得優先順序低的進程先於優先順序高的進程先執行,這就出現了優先順序反轉的問題,從而造成了系統崩潰,對於這個問題可以採用優先順序繼承的辦法來進行解決.在優先順序繼承方案中,當高優先順序進程在等待低優先順序的進程佔有的信號量時,讓低優先順序進程繼承高優先順序進程的優先順序,即把低優先順序進程的優先權提高到高優先順序進程的優先順序;當低優先順序進程釋放高優先順序進程等待的信號量時,立即把其優先權降低到原來的優先權.採用這種方法可以有效地解決上面所述的優先權反轉的問題.當高優先順序進程p1想要進入臨界區時,由於低優先順序進程p3佔有這個臨界資源的信號量,導致p1被阻塞.這時候,系統把p3的優先權升到p1的優先權,此時優先權處於p1和p3之間的進程p2,即使處於就緒狀態也不可以被調度執行,因為此時p3的優先權已經高於p2,所以p3此時被調度執行.當p3釋放p1需要的信號量時,系統立即把p3的優先權降到原來的高度,來保證p1和p2正常有序執行,有許多實時系統是採用這種方法來防止優先順序反轉的,如VXWORKS. 對於那些具有穩定,已知輸入的簡單系統,可以使用時間驅動的調度演算法,它能夠為數據處理提供很好的預測性.這種調度演算法本質上是一種設計時就確定下來的離線的靜態調度方法.在系統的設計階段,在明確系統中所有的處理情況下,對於各個進程的開始,切換,以及結束時間等就事先做出明確的安排和設計.這種調度演算法適合於那些很小的嵌入式系統,自控系統,感測器等應用環境.這種調度演算法的優點是進程的執行有很好的可預測性,但最大的缺點是缺乏靈活性,並且會出現有進程需要被執行而 CPU 卻保持空閑的情況.
對於不同要求下的實時系統可以採用不同的進程調度策略來進行設計,也可以將這些方法進行綜合之後得到更適合的調度策略.
B. 在操作系統中,常見的調度演算法有哪些
1.批處理系統:增加系統吞吐量和提高系統資源的利用率;
2.分時系統:保證每個分時用戶能容忍的響應時間。
3.實時系統:保證對隨機發生的外部事件做出實時響應。
先來先服務隊列
最短優先優先隊列
高優先權優先調度演算法
優先權調度演算法的類型
高響應比優先調度演算法
基於時間片的輪轉調度演算法
時間片輪轉法
多級反饋隊列調度演算法
電梯調度演算法
C. 實時操作系統常用任務調度演算法有哪些
實時操作系統常用任務調度演算法有哪些
操作系統常用的批處理作業調度演算法
1.先來先服務調度演算法
先來先服務(FCFS)調度演算法是一種最簡單的調度演算法,該演算法既可用於作業調度,也可用於進程調度。當在作業調度中採用該演算法時,每次調度都是從後備作業隊列中選擇一個或多個最先進入該隊列的作業,將它們調入內存,為它們分配資源、創建進程,然後放入就緒隊列。在進程調度中採用FCFS演算法時,則每次調度是從就緒隊列中選擇一個最先進入該隊列的進程,為之分配處理機,使之投入運行。該進程一直運行到完成或發生某事件而阻塞後才放棄處理機。
2.短作業(進程)優先調度演算法
D. 進程常用的調度方式有哪三種
進程調度有以下兩種基本方式:
非剝奪方式
分派程序一旦把處理機分配給某進程後便讓它一直運行下去,直到進程完成或發生某事件而阻塞時,才把處理機分配給另一個進程。
剝奪方式
當一個進程正在運行時,系統可以基於某種原則,剝奪已分配給它的處理機,將之分配給其它進程。剝奪原則有:優先權原則、短進程、優先原則、時間片原則。
例如,有三個進程P1、P2、P3先後到達,它們分別需要20、4和2個單位時間運行完畢。
假如它們就按P1、P2、P3的順序執行,且不可剝奪,則三進程各自的周轉時間分別為20、24、
26個單位時間,平均周轉時間是23.33個時間單位。
假如用時間片原則的剝奪調度方式,可得到:
可見:P1、P2、P3的周轉時間分別為26、10、6個單位時間,平均周轉時間為14個單位時間。
衡量進程調度性能的指標有:周轉時間、響應時間、CPU-I/O執行期。
E. 8.在批處理系統、分時系統和實時系統中,各採用哪幾種進程(作業)調度演算法
批處理系統常用調度演算法:
①、先來先服務:FCFS
②、最短作業優先
③、最短剩餘時間優先
④、響應比最高者優先
分時系統調度演算法:
①、輪轉調度
②、優先順序調度
③、多級隊列調度
④、彩票調度
實時系統調度演算法:
①、單比率調度
②、限期調度
③、最少裕度法
F. 進程調度有哪幾種方式有哪幾種評價方式
進程調度的幾種方式:
1、非剝奪(非搶占)調度方式:當一個進程正在處理機上執行時,即使有某個更為重要或者緊迫的進程進入就緒隊列,仍然讓正在執行的進程繼續執行,知道該進程完成或發生某種事件而進入阻塞態時,才把處理機分配給更為重要或緊迫(優先順序更高)的進程。其優點是實現簡單,系統開銷小,適用於大多數批處理系統,但它不能用於分時系統和大多數實時系統。
2、剝奪(搶占)調度方式:當一個進程正在處理機上執行時,若有某個更為重要或緊迫的進程(優先順序更高)的進程需要使用處理機,則立即暫停正在執行的進程,將處理機分配給這個更重要的進程。這種方式對提高系統吞吐率和響應效率都有明顯的好處。但搶占也要遵循一定原則。
(6)實時系統常用的調度方法擴展閱讀:
為了比較處理機調度演算法的性能,人們提出了很多評價准則,主要有一下幾種:
1、CPU利用率:CPU是計算機系統中最重要和最昂貴的資源之一,所以應該盡可能使得CPU保持忙的狀態,資源利用率盡可能高。
2、系統吞吐量:單位時間內CPU完成的作業數量。長作業需要消耗較長的處理機時間,會降低系統的吞吐量。對於短作業,他們所需消耗的處理機時間較短,因此能提高系統吞吐量。調度演算法和方式不同,也會對系統的吞吐量產生較大影響。
3、周轉時間:周轉時間是指從作業提交到作業完成所經歷的時間,是作業等待、在就緒隊列中排隊,在處理機上運行及輸入輸出操作所花費的時間的總和。
4、等待時間:進程處於等處理機狀態的時間之和。等待時間越長,用戶滿意度越低。實際上,處理機調度演算法實際上並不影響作業執行或輸入輸出操作的時間,隻影響作業在就緒隊列中等待所花的時間。因此,衡量一個調度演算法的優劣,常常只需簡單地考察等待時間。
5、響應時間:用戶提交請求到系統首次產生響應所用的時間。在互動式系統中,周轉時間不可能是最好的評價准則,一般採用響應時間作業衡量調度演算法的重要准則之一。從用戶角度來看,調度策略應該盡量降低響應時間,使得響應時間處在用戶能接受的范圍之內。
G. 操作系統中進程調度策略有哪幾種
linux內核的三種調度方法:
1,SCHED_OTHER 分時調度策略,
2,SCHED_FIFO實時調度策略,先到先服務
3,SCHED_RR實時調度策略,時間片輪轉
實時進程將得到優先調用,實時進程根據實時優先順序決定調度權值,分時進程則通過nice和counter值決定權值,nice越小,counter越大,被調度的概率越大,也就是曾使用了cpu最少的進程將會得到優先調度。
SHCED_RR和SCHED_FIFO的不同:
當採用SHCED_RR策略的進程的時間片用完,系統將重新分配時間片,並置於就緒隊列尾。放在隊列尾確保了任何具備相同優先順序的RR任務的調度公平。