計算機操作系統(tǒng)第三版第3章_第1頁
計算機操作系統(tǒng)第三版第3章_第2頁
計算機操作系統(tǒng)第三版第3章_第3頁
計算機操作系統(tǒng)第三版第3章_第4頁
計算機操作系統(tǒng)第三版第3章_第5頁
已閱讀5頁,還剩68頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

第三章處理機調(diào)度與死鎖3.1處理機調(diào)度的層次3.2調(diào)度隊列模型和調(diào)度準則3.3調(diào)度算法3.4實時調(diào)度

3.5產(chǎn)生死鎖的原因和必要條件3.6預防死鎖的方法3.7死鎖的檢測與解除

3.1處理機調(diào)度的層次3.1.1高級、中級和低級調(diào)度1.高級調(diào)度(HighScheduling)在每次執(zhí)行作業(yè)調(diào)度時,都須做出以下兩個決定。

1)接納多少個作業(yè)

2)接納哪些作業(yè)2.低級調(diào)度(LowLevelScheduling)1)非搶占方式(Non-preemptiveMode)

在采用非搶占調(diào)度方式時,可能引起進程調(diào)度的因素可歸結(jié)為這樣幾個:①正在執(zhí)行的進程執(zhí)行完畢,或因發(fā)生某事件而不能再繼續(xù)執(zhí)行;②執(zhí)行中的進程因提出I/O請求而暫停執(zhí)行;③在進程通信或同步過程中執(zhí)行了某種原語操作,如P操作(wait操作)、Block原語、Wakeup原語等。這種調(diào)度方式的優(yōu)點是實現(xiàn)簡單、系統(tǒng)開銷小,適用于大多數(shù)的批處理系統(tǒng)環(huán)境。但它難以滿足緊急任務的要求——立即執(zhí)行,因而可能造成難以預料的后果。顯然,在要求比較嚴格的實時系統(tǒng)中,不宜采用這種調(diào)度方式。2)搶占方式(PreemptiveMode)搶占的原則有:優(yōu)先權(quán)原則。(2)短作業(yè)(進程)優(yōu)先原則。(3)時間片原則。3.中級調(diào)度(Intermediate-LevelScheduling)中級調(diào)度又稱中程調(diào)度(Medium-TermScheduling)。引入中級調(diào)度的主要目的,是為了提高內(nèi)存利用率和系統(tǒng)吞吐量。為此,應使那些暫時不能運行的進程不再占用寶貴的內(nèi)存資源,而將它們調(diào)至外存上去等待,把此時的進程狀態(tài)稱為就緒駐外存狀態(tài)或掛起狀態(tài)。當這些進程重又具備運行條件、且內(nèi)存又稍有空閑時,由中級調(diào)度來決定把外存上的哪些又具備運行條件的就緒進程,重新調(diào)入內(nèi)存,并修改其狀態(tài)為就緒狀態(tài),掛在就緒隊列上等待進程調(diào)度。3.2調(diào)度隊列模型和調(diào)度準則3.2.1調(diào)度隊列模型1.僅有進程調(diào)度的調(diào)度隊列模型圖3-1僅具有進程調(diào)度的調(diào)度隊列模型2.具有高級和低級調(diào)度的調(diào)度隊列模型圖3-2具有高、低兩級調(diào)度的調(diào)度隊列模型就緒隊列的形式。

(2)設置多個阻塞隊列。圖3-2示出了具有高、低兩級調(diào)度的調(diào)度隊列模型。該模型與上一模型的主要區(qū)別在于如下兩個方面。3同時具有三級調(diào)度的調(diào)度隊列模型圖3-3具有三級調(diào)度時的調(diào)度隊列模型3.2.2選擇調(diào)度方式和調(diào)度算法的若干準則1.面向用戶的準則(1)周轉(zhuǎn)時間短。

可把平均周轉(zhuǎn)時間描述為:作業(yè)的周轉(zhuǎn)時間T與系統(tǒng)為它提供服務的時間TS之比,即W=T/TS,稱為帶權(quán)周轉(zhuǎn)時間,而平均帶權(quán)周轉(zhuǎn)時間則可表示為:(2)響應時間快。(3)截止時間的保證。(4)優(yōu)先權(quán)準則。2.面向系統(tǒng)的準則系統(tǒng)吞吐量高。(2)處理機利用率好。(3)各類資源的平衡利用。3.3調(diào)度算法3.3.1先來先服務和短作業(yè)(進程)優(yōu)先調(diào)度算法1.先來先服務調(diào)度算法圖3-4FCFS和SJF調(diào)度算法的性能2.短作業(yè)(進程)優(yōu)先調(diào)度算法短作業(yè)(進程)優(yōu)先調(diào)度算法SJ(P)F,是指對短作業(yè)或短進程優(yōu)先調(diào)度的算法。它們可以分別用于作業(yè)調(diào)度和進程調(diào)度。短作業(yè)優(yōu)先(SJF)的調(diào)度算法,是從后備隊列中選擇一個或若干個估計運行時間最短的作業(yè),將它們調(diào)入內(nèi)存運行。而短進程優(yōu)先(SPF)調(diào)度算法,則是從就緒隊列中選出一估計運行時間最短的進程,將處理機分配給它,使它立即執(zhí)行并一直執(zhí)行到完成,或發(fā)生某事件而被阻塞放棄處理機時,再重新調(diào)度。

SJ(P)F調(diào)度算法也存在不容忽視的缺點:(1)該算法對長作業(yè)不利,如作業(yè)C的周轉(zhuǎn)時間由10增至16,其帶權(quán)周轉(zhuǎn)時間由2增至3.1。更嚴重的是,如果有一長作業(yè)(進程)進入系統(tǒng)的后備隊列(就緒隊列),由于調(diào)度程序總是優(yōu)先調(diào)度那些(即使是后進來的)短作業(yè)(進程),將導致長作業(yè)(進程)長期不被調(diào)度。(2)該算法完全未考慮作業(yè)的緊迫程度,因而不能保證緊迫性作業(yè)(進程)會被及時處理。(3)由于作業(yè)(進程)的長短只是根據(jù)用戶所提供的估計執(zhí)行時間而定的,而用戶又可能會有意或無意地縮短其作業(yè)的估計運行時間,致使該算法不一定能真正做到短作業(yè)優(yōu)先調(diào)度。3.3.2高優(yōu)先權(quán)優(yōu)先調(diào)度算法1.優(yōu)先權(quán)調(diào)度算法的類型非搶占式優(yōu)先權(quán)算法在這種方式下,系統(tǒng)一旦把處理機分配給就緒隊列中優(yōu)先權(quán)最高的進程后,該進程便一直執(zhí)行下去,直至完成;或因發(fā)生某事件使該進程放棄處理機時,系統(tǒng)方可再將處理機重新分配給另一優(yōu)先權(quán)最高的進程。這種調(diào)度算法主要用于批處理系統(tǒng)中;也可用于某些對實時性要求不嚴的實時系統(tǒng)中。2)搶占式優(yōu)先權(quán)調(diào)度算法在這種方式下,系統(tǒng)同樣是把處理機分配給優(yōu)先權(quán)最高的進程,使之執(zhí)行。但在其執(zhí)行期間,只要又出現(xiàn)了另一個其優(yōu)先權(quán)更高的進程,進程調(diào)度程序就立即停止當前進程(原優(yōu)先權(quán)最高的進程)的執(zhí)行,重新將處理機分配給新到的優(yōu)先權(quán)最高的進程。因此,在采用這種調(diào)度算法時,是每當系統(tǒng)中出現(xiàn)一個新的就緒進程i時,就將其優(yōu)先權(quán)Pi與正在執(zhí)行的進程j的優(yōu)先權(quán)Pj進行比較。如果Pi≤Pj,原進程Pj便繼續(xù)執(zhí)行;但如果是Pi>Pj,則立即停止Pj的執(zhí)行,做進程切換,使i進程投入執(zhí)行。顯然,這種搶占式的優(yōu)先權(quán)調(diào)度算法,能更好地滿足緊迫作業(yè)的要求,故而常用于要求比較嚴格的實時系統(tǒng)中,以及對性能要求較高的批處理和分時系統(tǒng)中。2.優(yōu)先權(quán)的類型1)靜態(tài)優(yōu)先權(quán)靜態(tài)優(yōu)先權(quán)是在創(chuàng)建進程時確定的,且在進程的整個運行期間保持不變。一般地,優(yōu)先權(quán)是利用某一范圍內(nèi)的一個整數(shù)來表示的,例如,0~7或0~255中的某一整數(shù),又把該整數(shù)稱為優(yōu)先數(shù)。只是具體用法各異:有的系統(tǒng)用“0”表示最高優(yōu)先權(quán),當數(shù)值愈大時,其優(yōu)先權(quán)愈低;而有的系統(tǒng)恰恰相反。確定進程優(yōu)先權(quán)的依據(jù)有如下三個方面:進程類型。(2)進程對資源的需求。(3)用戶要求。2)動態(tài)優(yōu)先權(quán)動態(tài)優(yōu)先權(quán)是指,在創(chuàng)建進程時所賦予的優(yōu)先權(quán),是可以隨進程的推進或隨其等待時間的增加而改變的,以便獲得更好的調(diào)度性能。例如,我們可以規(guī)定,在就緒隊列中的進程,隨其等待時間的增長,其優(yōu)先權(quán)以速率a提高。若所有的進程都具有相同的優(yōu)先權(quán)初值,則顯然是最先進入就緒隊列的進程,將因其動態(tài)優(yōu)先權(quán)變得最高而優(yōu)先獲得處理機,此即FCFS算法。若所有的就緒進程具有各不相同的優(yōu)先權(quán)初值,那么,對于優(yōu)先權(quán)初值低的進程,在等待了足夠的時間后,其優(yōu)先權(quán)便可能升為最高,從而可以獲得處理機。當采用搶占式優(yōu)先權(quán)調(diào)度算法時,如果再規(guī)定當前進程的優(yōu)先權(quán)以速率b下降,則可防止一個長作業(yè)長期地壟斷處理機。3.高響應比優(yōu)先調(diào)度算法優(yōu)先權(quán)的變化規(guī)律可描述為:由于等待時間與服務時間之和,就是系統(tǒng)對該作業(yè)的響應時間,故該優(yōu)先權(quán)又相當于響應比RP。據(jù)此,又可表示為:(1)如果作業(yè)的等待時間相同,則要求服務的時間愈短,其優(yōu)先權(quán)愈高,因而該算法有利于短作業(yè)。(2)當要求服務的時間相同時,作業(yè)的優(yōu)先權(quán)決定于其等待時間,等待時間愈長,其優(yōu)先權(quán)愈高,因而它實現(xiàn)的是先來先服務。(3)對于長作業(yè),作業(yè)的優(yōu)先級可以隨等待時間的增加而提高,當其等待時間足夠長時,其優(yōu)先級便可升到很高,從而也可獲得處理機。3.3.3基于時間片的輪轉(zhuǎn)調(diào)度算法

1.時間片輪轉(zhuǎn)法在早期的時間片輪轉(zhuǎn)法中,系統(tǒng)將所有的就緒進程按先來先服務的原則,排成一個隊列,每次調(diào)度時,把CPU分配給隊首進程,并令其執(zhí)行一個時間片。時間片的大小從幾ms到幾百ms。當執(zhí)行的時間片用完時,由一個計時器發(fā)出時鐘中斷請求,調(diào)度程序便據(jù)此信號來停止該進程的執(zhí)行,并將它送往就緒隊列的末尾;然后,再把處理機分配給就緒隊列中新的隊首進程,同時也讓它執(zhí)行一個時間片。這樣就可以保證就緒隊列中的所有進程,在一給定的時間內(nèi),均能獲得一時間片的處理機執(zhí)行時間。2.多級反饋隊列調(diào)度算法(1)應設置多個就緒隊列,并為各個隊列賦予不同的優(yōu)先級。第一個隊列的優(yōu)先級最高,第二個隊列次之,其余各隊列的優(yōu)先權(quán)逐個降低。該算法賦予各個隊列中進程執(zhí)行時間片的大小也各不相同,在優(yōu)先權(quán)愈高的隊列中,為每個進程所規(guī)定的執(zhí)行時間片就愈小。例如,第二個隊列的時間片要比第一個隊列的時間片長一倍,……,第i+1個隊列的時間片要比第i個隊列的時間片長一倍。圖3-5是多級反饋隊列算法的示意。圖3-5多級反饋隊列調(diào)度算法(2)當一個新進程進入內(nèi)存后,首先將它放入第一隊列的末尾,按FCFS原則排隊等待調(diào)度。當輪到該進程執(zhí)行時,如它能在該時間片內(nèi)完成,便可準備撤離系統(tǒng);如果它在一個時間片結(jié)束時尚未完成,調(diào)度程序便將該進程轉(zhuǎn)入第二隊列的末尾,再同樣地按FCFS原則等待調(diào)度執(zhí)行;如果它在第二隊列中運行一個時間片后仍未完成,再依次將它放入第三隊列,……,如此下去,當一個長作業(yè)(進程)從第一隊列依次降到第n隊列后,在第n隊列中便采取按時間片輪轉(zhuǎn)的方式運行。(3)僅當?shù)谝魂犃锌臻e時,調(diào)度程序才調(diào)度第二隊列中的進程運行;僅當?shù)?~(i-1)隊列均空時,才會調(diào)度第i隊列中的進程運行。如果處理機正在第i隊列中為某進程服務時,又有新進程進入優(yōu)先權(quán)較高的隊列(第1~(i-1)中的任何一個隊列),則此時新進程將搶占正在運行進程的處理機,即由調(diào)度程序把正在運行的進程放回到第i隊列的末尾,把處理機分配給新到的高優(yōu)先權(quán)進程。3.多級反饋隊列調(diào)度算法的性能終端型作業(yè)用戶:較小、短時完成。(2)短批處理作業(yè)用戶:在前幾個隊列完成,周轉(zhuǎn)快。(3)長批處理作業(yè)用戶:長作業(yè)得到處理。3.4實時調(diào)度3.4.1實現(xiàn)實時調(diào)度的基本條件1.提供必要的信息就緒時間。(2)開始截止時間和完成截止時間。(3)處理時間。(4)資源要求。(5)優(yōu)先級。2.系統(tǒng)處理能力強在實時系統(tǒng)中,通常都有著多個實時任務。若處理機的處理能力不夠強,則有可能因處理機忙不過來而使某些實時任務不能得到及時處理,從而導致發(fā)生難以預料的后果。假定系統(tǒng)中有m個周期性的硬實時任務,它們的處理時間可表示為Ci,周期時間表示為Pi,則在單處理機情況下,必須滿足下面的限制條件:系統(tǒng)才是可調(diào)度的。假如系統(tǒng)中有6個硬實時任務,它們的周期時間都是50ms,而每次的處理時間為10ms,則不難算出,此時是不能滿足上式的,因而系統(tǒng)是不可調(diào)度的。解決的方法是提高系統(tǒng)的處理能力,其途徑有二:其一仍是采用單處理機系統(tǒng),但須增強其處理能力,以顯著地減少對每一個任務的處理時間;其二是采用多處理機系統(tǒng)。假定系統(tǒng)中的處理機數(shù)為N,則應將上述的限制條件改為:3.采用搶占式調(diào)度機制當一個優(yōu)先權(quán)更高的任務到達時,允許將當前任務暫時掛起,而令高優(yōu)先權(quán)任務立即投入運行,這樣便可滿足該硬實時任務對截止時間的要求。但這種調(diào)度機制比較復雜。對于一些小的實時系統(tǒng),如果能預知任務的開始截止時間,則對實時任務的調(diào)度可采用非搶占調(diào)度機制,以簡化調(diào)度程序和對任務調(diào)度時所花費的系統(tǒng)開銷。但在設計這種調(diào)度機制時,應使所有的實時任務都比較小,并在執(zhí)行完關鍵性程序和臨界區(qū)后,能及時地將自己阻塞起來,以便釋放出處理機,供調(diào)度程序去調(diào)度那種開始截止時間即將到達的任務。4.具有快速切換機制該機制應具有如下兩方面的能力:(1)對外部中斷的快速響應能力。為使在緊迫的外部事件請求中斷時系統(tǒng)能及時響應,要求系統(tǒng)具有快速硬件中斷機構(gòu),還應使禁止中斷的時間間隔盡量短,以免耽誤時機(其它緊迫任務)。(2)快速的任務分派能力。在完成任務調(diào)度后,便應進行任務切換。為了提高分派程序進行任務切換時的速度,應使系統(tǒng)中的每個運行功能單位適當?shù)男。詼p少任務切換的時間開銷。3.4.2實時調(diào)度算法的分類1.非搶占式調(diào)度算法非搶占式輪轉(zhuǎn)調(diào)度算法。(2)非搶占式優(yōu)先調(diào)度算法。2.搶占式調(diào)度算法基于時鐘中斷的搶占式優(yōu)先權(quán)調(diào)度算法。(2)立即搶占(ImmediatePreemption)的優(yōu)先權(quán)調(diào)度算法。圖3-6實時進程調(diào)度3.4.3常用的幾種實時調(diào)度算法1.最早截止時間優(yōu)先即EDF(EarliestDeadlineFirst)算法圖3-7EDF算法用于非搶占調(diào)度方式2.最低松弛度優(yōu)先即LLF(LeastLaxityFirst)算法該算法是根據(jù)任務緊急(或松弛)的程度,來確定任務的優(yōu)先級。任務的緊急程度愈高,為該任務所賦予的優(yōu)先級就愈高,以使之優(yōu)先執(zhí)行。例如,一個任務在200ms時必須完成,而它本身所需的運行時間就有100ms,因此,調(diào)度程序必須在100ms之前調(diào)度執(zhí)行,該任務的緊急程度(松弛程度)為100ms。又如,另一任務在400ms時必須完成,它本身需要運行150ms,則其松弛程度為250ms。在實現(xiàn)該算法時要求系統(tǒng)中有一個按松弛度排序的實時任務就緒隊列,松弛度最低的任務排在隊列最前面,調(diào)度程序總是選擇就緒隊列中的隊首任務執(zhí)行。該算法主要用于可搶占調(diào)度方式中。假如在一個實時系統(tǒng)中,有兩個周期性實時任務A和B,任務A要求每20ms執(zhí)行一次,執(zhí)行時間為10ms;任務B只要求每50ms執(zhí)行一次,執(zhí)行時間為25ms。圖3-8A和B任務每次必須完成的時間在剛開始時(t1=0),A1必須在20ms時完成,而它本身運行又需10ms,可算出A1的松弛度為10ms;B1必須在50ms時完成,而它本身運行就需25ms,可算出B1的松弛度為25ms,故調(diào)度程序應先調(diào)度A1執(zhí)行。在t2=10ms時,A2的松弛度可按下式算出:A2的松弛度=必須完成時間-其本身的運行時間-當前時間=40ms-10ms-10ms=20ms類似地,可算出B1的松弛度為15ms,故調(diào)度程序應選擇B2運行。在t3=30ms時,A2的松弛度已減為0(即40-10-30),而B1的松弛度為15ms(即50-5-30),于是調(diào)度程序應搶占B1的處理機而調(diào)度A2運行。在t4=40ms時,A3的松弛度為10ms(即60-10-40),而B1的松弛度僅為5ms(即50-5-40),故又應重新調(diào)度B1執(zhí)行。在t5=45ms時,B1執(zhí)行完成,而此時A3的松弛度已減為5ms(即60-10-45),而B2的松弛度為30ms(即100-25-45),于是又應調(diào)度A3執(zhí)行。在t6=55ms時,任務A尚未進入第4周期,而任務B已進入第2周期,故再調(diào)度B2執(zhí)行。在t7=70ms時,A4的松弛度已減至0ms(即80-10-70),而B2的松弛度為20ms(即100-10-70),故此時調(diào)度又應搶占B2的處理機而調(diào)度A4執(zhí)行。圖3-9利用ELLF算法進行調(diào)度的情況3.5產(chǎn)生死鎖的原因和必要條件3.5.1產(chǎn)生死鎖的原因競爭資源。(2)進程間推進順序非法。1.競爭資源引起進程死鎖可剝奪和非剝奪性資源:內(nèi)存VS打印機2)競爭非剝奪性資源:3)競爭臨時性資源:消息、緩沖區(qū)等圖3-12I/O設備共享時的死鎖情況圖3-13進程之間通信時的死鎖2.進程推進順序不當引起死鎖1)進程推進順序合法圖3-14進程推進順序?qū)λ梨i的影響2)進程推進順序非法若并發(fā)進程P1和P2按曲線④所示的順序推進,它們將進入不安全區(qū)D內(nèi)。此時P1保持了資源R1,P2保持了資源R2,系統(tǒng)處于不安全狀態(tài)。因為,這時兩進程再向前推進,便可能發(fā)生死鎖。例如,當P1運行到P1:Request(R2)時,將因R2已被P2占用而阻塞;當P2運行到P2:Request(R1)時,也將因R1已被P1占用而阻塞,于是發(fā)生了進程死鎖。3.5.2產(chǎn)生死鎖的必要條件互斥條件(2)請求和保持條件(3)不剝奪條件(4)環(huán)路等待條件3.5.3處理死鎖的基本方法預防死鎖。(2)避免死鎖。(3)檢測死鎖。(4)解除死鎖。3.6預防死鎖的方法3.6.1預防死鎖摒棄“請求和保持”條件:一次性分配2.摒棄“不剝奪”條件:產(chǎn)生副作用,如打印機3.摒棄“環(huán)路等待”條件:資源編號,順序申請3.6.2系統(tǒng)安全狀態(tài)

1.安全狀態(tài)在避免死鎖的方法中,允許進程動態(tài)地申請資源,但系統(tǒng)在進行資源分配之前,應先計算此次資源分配的安全性。若此次分配不會導致系統(tǒng)進入不安全狀態(tài),則將資源分配給進程;否則,令進程等待。所謂安全狀態(tài),是指系統(tǒng)能按某種進程順序(P1,P2,…,Pn)(稱〈P1,P2,…,Pn〉序列為安全序列),來為每個進程Pi分配其所需資源,直至滿足每個進程對資源的最大需求,使每個進程都可順利地完成。如果系統(tǒng)無法找到這樣一個安全序列,則稱系統(tǒng)處于不安全狀態(tài)。2.安全狀態(tài)之例我們通過一個例子來說明安全性。假定系統(tǒng)中有三個進程P1、P2和P3,共有12臺磁帶機。進程P1總共要求10臺磁帶機,P2和P3分別要求4臺和9臺。假設在T0時刻,進程P1、P2和P3已分別獲得5臺、2臺和2臺磁帶機,尚有3臺空閑未分配,如下表所示:進程最大需求已分配可用P1P2P3104952233.由安全狀態(tài)向不安全狀態(tài)的轉(zhuǎn)換如果不按照安全序列分配資源,則系統(tǒng)可能會由安全狀態(tài)進入不安全狀態(tài)。例如,在T0時刻以后,P3又請求1臺磁帶機,若此時系統(tǒng)把剩余3臺中的1臺分配給P3,則系統(tǒng)便進入不安全狀態(tài)。因為,此時也無法再找到一個安全序列,例如,把其余的2臺分配給P2,這樣,在P2完成后只能釋放出4臺,既不能滿足P1尚需5臺的要求,也不能滿足P3尚需6臺的要求,致使它們都無法推進到完成,彼此都在等待對方釋放資源,即陷入僵局,結(jié)果導致死鎖。3.6.3利用銀行家算法避免死鎖1.銀行家算法中的數(shù)據(jù)結(jié)構(gòu)(1)可利用資源向量Available。這是一個含有m個元素的數(shù)組,其中的每一個元素代表一類可利用的資源數(shù)目,其初始值是系統(tǒng)中所配置的該類全部可用資源的數(shù)目,其數(shù)值隨該類資源的分配和回收而動態(tài)地改變。如果Available[j]=K,則表示系統(tǒng)中現(xiàn)有Rj類資源K個。(2)最大需求矩陣Max。這是一個n×m的矩陣,它定義了系統(tǒng)中n個進程中的每一個進程對m類資源的最大需求。如果Max[i,j]=K,則表示進程i需要Rj類資源的最大數(shù)目為K。(3)分配矩陣Allocation。這也是一個n×m的矩陣,它定義了系統(tǒng)中每一類資源當前已分配給每一進程的資源數(shù)。如果Allocation[i,j]=K,則表示進程i當前已分得Rj類資源的數(shù)目為K。(4)需求矩陣Need。這也是一個n×m的矩陣,用以表示每一個進程尚需的各類資源數(shù)。如果Need[i,j]=K,則表示進程i還需要Rj類資源K個,方能完成其任務。Need[i,j]=Max[i,j]-Allocation[i,j]

2.銀行家算法設Requesti是進程Pi的請求向量,如果Requesti[j]=K,表示進程Pi需要K個Rj類型的資源。當Pi發(fā)出資源請求后,系統(tǒng)按下述步驟進行檢查:(1)如果Requesti[j]≤Need[i,j],便轉(zhuǎn)向步驟2;否則認為出錯,因為它所需要的資源數(shù)已超過它所宣布的最大值。(2)如果Requesti[j]≤Available[j],便轉(zhuǎn)向步驟(3);否則,表示尚無足夠資源,Pi須等待。(3)系統(tǒng)試探著把資源分配給進程Pi,并修改下面數(shù)據(jù)結(jié)構(gòu)中的數(shù)值:

Available[j]∶=Available[j]-Requesti[j];Allocation[i,j]∶=Allocation[i,j]+Requesti[j];Need[i,j]∶=Need[i,j]-Requesti[j];(4)系統(tǒng)執(zhí)行安全性算法,檢查此次資源分配后,系統(tǒng)是否處于安全狀態(tài)。若安全,才正式將資源分配給進程Pi,以完成本次分配;否則,將本次的試探分配作廢,恢復原來的資源分配狀態(tài),讓進程Pi等待。3.安全性算法(1)設置兩個向量:①工作向量Work:它表示系統(tǒng)可提供給進程繼續(xù)運行所需的各類資源數(shù)目,它含有m個元素,在執(zhí)行安全算法開始時,Work∶=Available;②Finish:它表示系統(tǒng)是否有足夠的資源分配給進程,使之運行完成。開始時先做Finish[i]∶=false;當有足夠資源分配給進程時,再令Finish[i]∶=true。(2)從進程集合中找到一個能滿足下述條件的進程:①Finish[i]=false;②Need[i,j]≤Work[j];若找到,執(zhí)行步驟(3),否則,執(zhí)行步驟(4)。(3)當進程Pi獲得資源后,可順利執(zhí)行,直至完成,并釋放出分配給它的資源,故應執(zhí)行:

Work[j]∶=Work[i]+Allocation[i,j];Finish[i]∶=true;gotostep2;(4)如果所有進程的Finish[i]=true都滿足,則表示系統(tǒng)處于安全狀態(tài);否則,系統(tǒng)處于不安全狀態(tài)。4.銀行家算法之例假定系統(tǒng)中有五個進程{P0,P1,P2,P3,P4}和三類資源{A,B,C},各種資源的數(shù)量分別為10、5、7,在T0時刻的資源分配情況如圖3-15所示。圖3-15T0時刻的資源分配表(1)T0時刻的安全性:圖3-16T0時刻的安全序列(2)P1請求資源:P1發(fā)出請求向量Request1(1,0,2),系統(tǒng)按銀行家算法進行檢查:①Request1(1,0,2)≤Need1(1,2,2)②Request1(1,0,2)≤Available1(3,3,2)③系統(tǒng)先假定可為P1分配資源,并修改Available,Allocation1和Need1向量,由此形成的資源變化情況如圖3-15中的圓括號所示。④再利用安全性算法檢查此時系統(tǒng)是否安全。圖3-17P1申請資源時的安全性檢查(3)P4請求資源:P4發(fā)出請求向量Request4(3,3,0),系統(tǒng)按銀行家算法進行檢查:①Request4(3,3,0)≤Need4(4,3,1);②Request4(3,3,0)<Available(2,3,0),讓P4等待。(4)P0請求資源:P0發(fā)出請求向量Requst0(0,2,0),系統(tǒng)按銀行家算法進行檢查:①Request0(0,2,0)≤Need0(7,4,3);②Reque

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論