计算机操作系统 第三章:处理机调度与死锁(2)
目錄
3.3? 進(jìn) 程 調(diào) 度
3.3.1? 進(jìn)程調(diào)度的任務(wù)、機(jī)制和方式??
3.3.2? 輪轉(zhuǎn)調(diào)度算法
?3.3.3? 優(yōu)先級調(diào)度算法
3.3.4? 多隊列調(diào)度算法
3.3.5? 多級反饋隊列(multileved feedback queue)調(diào)度算法?
3.3.6? 基于公平原則的調(diào)度算法??
3.4? 實 時 調(diào) 度
3.4.1? 實現(xiàn)實時調(diào)度的基本條件
3.4.2? 實時調(diào)度算法的分類???
?3.4.3? 最早截止時間優(yōu)先EDF(Earliest Deadline First)算法?
?3.4.4? 最低松弛度優(yōu)先LLF(Least Laxity First)算法
?3.4.5? 優(yōu)先級倒置(priority inversion problem)??
3.3? 進(jìn) 程 調(diào) 度
進(jìn)程調(diào)度是OS中必不可少的一種調(diào)度。因此在三種類型的OS中,都無一例外地配置了進(jìn)程調(diào)度。此外它也是對系統(tǒng)性能影響最大的一種處理機(jī)調(diào)度,相應(yīng)的,有關(guān)進(jìn)程調(diào)度的算法也較多。
3.3.1? 進(jìn)程調(diào)度的任務(wù)、機(jī)制和方式??
1. 進(jìn)程調(diào)度的任務(wù)
進(jìn)程調(diào)度的任務(wù)主要有三:
(1) 保存處理機(jī)的現(xiàn)場信息。
(2) 按某種算法選取進(jìn)程。
(3) 把處理器分配給進(jìn)程。 ?
2. 進(jìn)程調(diào)度機(jī)制
為了實現(xiàn)進(jìn)程調(diào)度,在進(jìn)程調(diào)度機(jī)制中,應(yīng)具有如下三個基本部分,如圖3-1所示。
(1) 排隊器。
(2) 分派器。
(3) 上下文切換器。
?3. 進(jìn)程調(diào)度方式
1) 非搶占方式(Nonpreemptive Mode)
在采用這種調(diào)度方式時,一旦把處理機(jī)分配給某進(jìn)程后,就一直讓它運行下去,決不會因為時鐘中斷或任何其它原因去搶占當(dāng)前正在運行進(jìn)程的處理機(jī),直至該進(jìn)程完成,或發(fā)生某事件而被阻塞時,才把處理機(jī)分配給其它進(jìn)程。
2) 搶占方式(Preemptive Mode)
這種調(diào)度方式允許調(diào)度程序根據(jù)某種原則,去暫停某個正在執(zhí)行的進(jìn)程,將已分配給該進(jìn)程的處理機(jī)重新分配給另一進(jìn)程。在現(xiàn)代OS中廣泛采用搶占方式,這是因為:對于批處理機(jī)系統(tǒng),可以防止一個長進(jìn)程長時間地占用處理機(jī),以確保處理機(jī)能為所有進(jìn)程提供更為公平的服務(wù)。在分時系統(tǒng)中,只有采用搶占方式才有可能實現(xiàn)人—機(jī)交互。在實時系統(tǒng)中,搶占方式能滿足實時任務(wù)的需求。但搶占方式比較復(fù)雜,所需付出的系統(tǒng)開銷也較大。
3.3.2? 輪轉(zhuǎn)調(diào)度算法
1. 輪轉(zhuǎn)法的基本原理
在輪轉(zhuǎn)(RR)法中,系統(tǒng)將所有的就緒進(jìn)程按FCFS策略排成一個就緒隊列。系統(tǒng)可設(shè)置每隔一定時間(如30?ms)便產(chǎn)生一次中斷,去激活進(jìn)程調(diào)度程序進(jìn)行調(diào)度,把CPU分配給隊首進(jìn)程,并令其執(zhí)行一個時間片。當(dāng)它運行完畢后,又把處理機(jī)分配給就緒隊列中新的隊首進(jìn)程,也讓它執(zhí)行一個時間片。這樣,就可以保證就緒隊列中的所有進(jìn)程在確定的時間段內(nèi),都能獲得一個時間片的處理機(jī)時間。
2. 進(jìn)程切換時機(jī)
在RR調(diào)度算法中,應(yīng)在何時進(jìn)行進(jìn)程的切換,可分為兩種情況:① 若一個時間片尚未用完,正在運行的進(jìn)程便已經(jīng)完成,就立即激活調(diào)度程序,將它從就緒隊列中刪除,再調(diào)度就緒隊列中隊首的進(jìn)程運行,并啟動一個新的時間片。② 在一個時間片用完時,計時器中斷處理程序被激活。如果進(jìn)程尚未運行完畢,調(diào)度程序?qū)阉屯途w隊列的末尾。
3. 時間片大小的確定
在輪轉(zhuǎn)算法中,時間片的大小對系統(tǒng)性能有很大的
影響。
圖3-2示出了時間片大小對響應(yīng)時間的影響,其中圖(a)是時間片略大于典型交互的時間,而圖(b)是時間片小于典型交互的時間。圖3-3示出了時間片分別為q?=?1和q?=?4時對平均周轉(zhuǎn)時間的影響。
?
?3.3.3? 優(yōu)先級調(diào)度算法
1. 優(yōu)先級調(diào)度算法的類型
優(yōu)先級進(jìn)程調(diào)度算法,是把處理機(jī)分配給就緒隊列中優(yōu)先級最高的進(jìn)程。這時,又可進(jìn)一步把該算法分成如下兩種。
(1) 非搶占式優(yōu)先級調(diào)度算法。
(2) 搶占式優(yōu)先級調(diào)度算法。
2. 優(yōu)先級的類型
1) 靜態(tài)優(yōu)先級
靜態(tài)優(yōu)先級是在創(chuàng)建進(jìn)程時確定的,在進(jìn)程的整個運行期間保持不變。優(yōu)先級是利用某一范圍內(nèi)的一個整數(shù)來表示的,例如0~255中的某一整數(shù),又把該整數(shù)稱為優(yōu)先數(shù)。確定進(jìn)程優(yōu)先級大小的依據(jù)有如下三個:
(1) 進(jìn)程類型。
(2) 進(jìn)程對資源的需求。
(3) 用戶要求。
2) 動態(tài)優(yōu)先級
動態(tài)優(yōu)先級是指在創(chuàng)建進(jìn)程之初,先賦予其一個優(yōu)先級,然后其值隨進(jìn)程的推進(jìn)或等待時間的增加而改變,以便獲得更好的調(diào)度性能。
3.3.4? 多隊列調(diào)度算法
如前所述的各種調(diào)度算法,尤其在應(yīng)用于進(jìn)程調(diào)度時,由于系統(tǒng)中僅設(shè)置一個進(jìn)程的就緒隊列,即低級調(diào)度算法是固定的、單一的,無法滿足系統(tǒng)中不同用戶對進(jìn)程調(diào)度策略的不同要求,在多處理機(jī)系統(tǒng)中,這種單一調(diào)度策略實現(xiàn)機(jī)制的缺點更顯突出,由此,多級隊列調(diào)度算法能夠在一定程度上彌補(bǔ)這一缺點
3.3.5? 多級反饋隊列(multileved feedback queue)調(diào)度算法?
1. 調(diào)度機(jī)制
多級反饋隊列調(diào)度算法的調(diào)度機(jī)制可描述如下:
(1) 設(shè)置多個就緒隊列。
圖3-4是多級反饋隊列算法的示意圖。
?(2) 每個隊列都采用FCFS算法。當(dāng)新進(jìn)程進(jìn)入內(nèi)存后,首先將它放入第一隊列的末尾,按FCFS原則等待調(diào)度。當(dāng)輪到該進(jìn)程執(zhí)行時,如它能在該時間片內(nèi)完成,便可撤離系統(tǒng)。否則,即它在一個時間片結(jié)束時尚未完成,調(diào)度程序?qū)⑵滢D(zhuǎn)入第二隊列的末尾等待調(diào)度;如果它在第二隊列中運行一個時間片后仍未完成,再依次將它放入第三隊列,……,依此類推。當(dāng)進(jìn)程最后被降到第n隊列后,在第n隊列中便采取按RR方式運行。
(3) 按隊列優(yōu)先級調(diào)度。調(diào)度程序首先調(diào)度最高優(yōu)先級隊列中的諸進(jìn)程運行,僅當(dāng)?shù)谝魂犃锌臻e時才調(diào)度第二隊列中的進(jìn)程運行;換言之,僅當(dāng)?shù)?/span>1~(i-1)所有隊列均空時,才會調(diào)度第i隊列中的進(jìn)程運行。如果處理機(jī)正在第i隊列中為某進(jìn)程服務(wù)時又有新進(jìn)程進(jìn)入任一優(yōu)先級較高的隊列,此時須立即把正在運行的進(jìn)程放回到第i隊列的末尾,而把處理機(jī)分配給新到的高優(yōu)先級進(jìn)程。
2. 調(diào)度算法的性能
在多級反饋隊列調(diào)度算法中,如果規(guī)定第一個隊列的時間片略大于多數(shù)人機(jī)交互所需之處理時間時,便能較好地滿足各種類型用戶的需要。
(1) 終端型用戶。
(2) 短批處理作業(yè)用戶。
(3) 長批處理作業(yè)用戶。
3.3.6? 基于公平原則的調(diào)度算法??
1. 保證調(diào)度算法
保證調(diào)度算法是另外一種類型的調(diào)度算法,它向用戶所做出的保證并不是優(yōu)先運行,而是明確的性能保證,該算法可以做到調(diào)度的公平性。一種比較容易實現(xiàn)的性能保證是處理機(jī)分配的公平性。如果在系統(tǒng)中有n個相同類型的進(jìn)程同時運行,為公平起見,須保證每個進(jìn)程都獲得相同的處理機(jī)時間1/n。
在實施公平調(diào)度算法時系統(tǒng)中必須具有這樣一些功能:
(1) 跟蹤計算每個進(jìn)程自創(chuàng)建以來已經(jīng)執(zhí)行的處理時間。
(2) 計算每個進(jìn)程應(yīng)獲得的處理機(jī)時間,即自創(chuàng)建以來的時間除以n。
(3) 計算進(jìn)程獲得處理機(jī)時間的比率,即進(jìn)程實際執(zhí)行的處理時間和應(yīng)獲得的處理機(jī)時間之比。
(4) 比較各進(jìn)程獲得處理機(jī)時間的比率。如進(jìn)程A的比率最低,為0.5,而進(jìn)程B的比率為0.8,進(jìn)程C的比率為1.2等。
(5) 調(diào)度程序應(yīng)選擇比率最小的進(jìn)程將處理機(jī)分配給它,并讓該進(jìn)程一直運行,直到超過最接近它的進(jìn)程比率為止。
2. 公平分享調(diào)度算法
分配給每個進(jìn)程相同的處理機(jī)時間,顯然,這對諸進(jìn)程而言,是體現(xiàn)了一定程度的公平,但如果各個用戶所擁有的進(jìn)程數(shù)不同,就會發(fā)生對用戶的不公平問題。
3.4? 實 時 調(diào) 度
在實時系統(tǒng)中,可能存在著兩類不同性質(zhì)的實時任務(wù),即HRT任務(wù)和SRT任務(wù),它們都聯(lián)系著一個截止時間。為保證系統(tǒng)能正常工作,實時調(diào)度必須能滿足實時任務(wù)對截止時間的要求。為此,實現(xiàn)實時調(diào)度應(yīng)具備一定的條件。
3.4.1? 實現(xiàn)實時調(diào)度的基本條件
1. 提供必要的信息
為了實現(xiàn)實時調(diào)度,系統(tǒng)應(yīng)向調(diào)度程序提供有關(guān)任務(wù)的信息:
(1) 就緒時間,是指某任務(wù)成為就緒狀態(tài)的起始時間,在周期任務(wù)的情況下,它是事先預(yù)知的一串時間序列。
(2) 開始截止時間和完成截止時間,對于典型的實時應(yīng)用,只須知道開始截止時間,或者完成截止時間。
(3) 處理時間,一個任務(wù)從開始執(zhí)行,直至完成時所需的時間。
(4) 資源要求,任務(wù)執(zhí)行時所需的一組資源。
(5) 優(yōu)先級,如果某任務(wù)的開始截止時間錯過,勢必引起故障,則應(yīng)為該任務(wù)賦予“絕對”優(yōu)先級;如果其開始截止時間的錯過,對任務(wù)的繼續(xù)運行無重大影響,則可為其賦予“相對”優(yōu)先級,供調(diào)度程序參考。
2. 系統(tǒng)處理能力強(qiáng)
在實時系統(tǒng)中,若處理機(jī)的處理能力不夠強(qiáng),則有可能因處理機(jī)忙不過,而致使某些實時任務(wù)不能得到及時處理,從而導(dǎo)致發(fā)生難以預(yù)料的后果。假定系統(tǒng)中有m個周期性的硬實時任務(wù)HRT,它們的處理時間可表示為Ci,周期時間表示為Pi,則在單處理機(jī)情況下,必須滿足下面的限制條件系統(tǒng)才是可調(diào)度的:
?提高系統(tǒng)處理能力的途徑有二:一是采用單處理機(jī)系統(tǒng),但須增強(qiáng)其處理能力,以顯著地減少對每一個任務(wù)的處理時間;二是采用多處理機(jī)系統(tǒng)。假定系統(tǒng)中的處理機(jī)數(shù)為N,則應(yīng)將上述的限制條件改為:
?3. 采用搶占式調(diào)度機(jī)制
在含有HRT任務(wù)的實時系統(tǒng)中,廣泛采用搶占機(jī)制。這樣便可滿足HRT任務(wù)對截止時間的要求。但這種調(diào)度機(jī)制比較復(fù)雜。
4. 具有快速切換機(jī)制
為保證硬實時任務(wù)能及時運行,在系統(tǒng)中還應(yīng)具有快速切換機(jī)制,使之能進(jìn)行任務(wù)的快速切換。該機(jī)制應(yīng)具有如下兩方面的能力:
(1) 對中斷的快速響應(yīng)能力。對緊迫的外部事件請求中斷能及時響應(yīng),要求系統(tǒng)具有快速硬件中斷機(jī)構(gòu),還應(yīng)使禁止中斷的時間間隔盡量短,以免耽誤時機(jī)(其它緊迫任務(wù))。
(2) 快速的任務(wù)分派能力。為了提高分派程序進(jìn)行任務(wù)切換時的速度,應(yīng)使系統(tǒng)中的每個運行功能單位適當(dāng)?shù)男?#xff0c;以減少任務(wù)切換的時間開銷。
3.4.2? 實時調(diào)度算法的分類???
??
可以按不同方式對實時調(diào)度算法加以分類:① 根據(jù)實時任務(wù)性質(zhì),可將實時調(diào)度的算法分為硬實時調(diào)度算法和軟實時調(diào)度算法;② 按調(diào)度方式,則可分為非搶占調(diào)度算法和搶占調(diào)度算法。
?1. 非搶占式調(diào)度算法
(1) 非搶占式輪轉(zhuǎn)調(diào)度算法。
(2) 非搶占式優(yōu)先調(diào)度算法。
2. 搶占式調(diào)度算法
可根據(jù)搶占發(fā)生時間的不同而進(jìn)一步分成以下兩種調(diào)度算法:
(1) 基于時鐘中斷的搶占式優(yōu)先級調(diào)度算法。
(2) 立即搶占(Immediate Preemption)的優(yōu)先級調(diào)度算法。
圖3-5中的(a)、(b)、(c)、(d)分別示出了四種情況的調(diào)度時間。
?3.4.3? 最早截止時間優(yōu)先EDF(Earliest Deadline First)算法?
1. 非搶占式調(diào)度方式用于非周期實時任務(wù)
圖3-6示出了將該算法用于非搶占調(diào)度方式之例。
?2. 搶占式調(diào)度方式用于周期實時任務(wù)
圖3-7示出了將該算法用于搶占調(diào)度方式之例。在該例中有兩個周期任務(wù),任務(wù)A和任務(wù)B的周期時間分別為20 ms和50 ms,每個周期的處理時間分別為10?ms和25?ms。
?3.4.4? 最低松弛度優(yōu)先LLF(Least Laxity First)算法
該算法在確定任務(wù)的優(yōu)先級時,根據(jù)的是任務(wù)的緊急(或松弛)程度。任務(wù)緊急程度愈高,賦予該任務(wù)的優(yōu)先級就愈高,以使之優(yōu)先執(zhí)行。
該算法主要用于可搶占調(diào)度方式中。假如在一個實時系統(tǒng)中有兩個周期性實時任務(wù)A和B,任務(wù)A要求每20?ms執(zhí)行一次,執(zhí)行時間為10?ms,任務(wù)B要求每50?ms執(zhí)行一次,執(zhí)行時間為25?ms。由此可知,任務(wù)A和B每次必須完成的時間分別為:A1、A2、A3、…和B1、B2、B3、…,見圖3-8。
?
?3.4.5? 優(yōu)先級倒置(priority inversion problem)??
1. 優(yōu)先級倒置的形成
當(dāng)前OS廣泛采用優(yōu)先級調(diào)度算法和搶占方式,然而在系統(tǒng)中存在著影響進(jìn)程運行的資源而可能產(chǎn)生“優(yōu)先級倒置”的現(xiàn)象,即高優(yōu)先級進(jìn)程(或線程)被低優(yōu)先級進(jìn)程(或線程)延遲或阻塞。我們通過一個例子來說明該問題。
假如P3最先執(zhí)行,在執(zhí)行了P(mutex)操作后,進(jìn)入到臨界區(qū)CS-3。在時刻a,P2就緒,因為它比P3的優(yōu)先級高,P2搶占了P3的處理機(jī)而運行,如圖3-10所示。
?2. 優(yōu)先級倒置的解決方法
一種簡單的解決方法是規(guī)定:假如進(jìn)程P3在進(jìn)入臨界區(qū)后P3所占用的處理機(jī)就不允許被搶占。
??????? 一個比較實用的方法是建立在動態(tài)優(yōu)先級繼承基礎(chǔ)上的。當(dāng)高優(yōu)先級進(jìn)程P1要進(jìn)入臨界區(qū),去使用臨界資源R,如果已有一個低優(yōu)先級進(jìn)程P3正在使用該資源,此時一方面P1被阻塞,另一方面由P3繼承P1的優(yōu)先級,并一直保持到P3退出臨界區(qū)。
圖3-11示出了采用動態(tài)優(yōu)先級繼承方法后,P1、P2、P3三個進(jìn)程的運行情況。
?
總結(jié)
以上是生活随笔為你收集整理的计算机操作系统 第三章:处理机调度与死锁(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 批量修改文件名.bat
- 下一篇: 【转换输出流小练习 】现有一字符串:”我