版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 銀行家算法</b></p><p><b> 課程設(shè)計(jì)的目的</b></p><p> 了解多道程序系統(tǒng)中,多個(gè)進(jìn)程并發(fā)執(zhí)行的資源分配,及死鎖的產(chǎn)生原因、必要條件和處理死鎖的基本方法,掌握預(yù)防死鎖的方法,系統(tǒng)安全狀態(tài)的基本概念,了解銀行家算法,及資源在進(jìn)程并發(fā)執(zhí)行中的資源分配策略,并且理解死鎖避免在當(dāng)前計(jì)算機(jī)系統(tǒng)
2、不常使用的原因。根據(jù)設(shè)計(jì)題目的要求,充分地分析和理解題目,敘述系統(tǒng)的要求,明確程序要求實(shí)現(xiàn)的功能以及限制條件。明白自己需要用代碼實(shí)現(xiàn)的功能,清楚編寫每部分代碼的目的,做到有的放矢,有條理不遺漏的用代碼實(shí)現(xiàn)銀行家算法。</p><p><b> 2.設(shè)計(jì)方案論證</b></p><p><b> 2.1題目描述</b></p>&
3、lt;p> 銀行家算法是一種最有代表性的避免死鎖的算法。在多道程序系統(tǒng)中,多個(gè)進(jìn)程的并發(fā)執(zhí)行來改善系統(tǒng)的資源利用率,提高系統(tǒng)的吞吐量,但可能發(fā)生一種危險(xiǎn)——死鎖。所謂死鎖(Deadlock),是指多個(gè)進(jìn)程在運(yùn)行過程中因爭(zhēng)奪資源而造成的一種僵局(DeadlyEmbrace),當(dāng)進(jìn)程處于這種狀態(tài)時(shí),若無外力作用,他們都無法在向前推進(jìn)。要預(yù)防死鎖,有摒棄“請(qǐng)求和保持”條件,摒棄“不剝奪”條件,摒棄“環(huán)路等待”條件等方法。但是,在預(yù)防死
4、鎖的幾種方法之中,都施加了較強(qiáng)的限制條件;而在避免死鎖的方法中,所施加的限制條件較弱,有可能獲得令人滿意的系統(tǒng)性能。在該方法中把系統(tǒng)狀態(tài)分為安全狀態(tài)和不安全狀態(tài),便可避免死鎖的發(fā)生。要解釋銀行家算法,必須先解釋操作系統(tǒng)安全狀態(tài)和不安全狀態(tài)。安全狀態(tài)是指系統(tǒng)能按照某種進(jìn)程順序{P1,P2,…,Pn}(稱{P1,P2,…,Pn }序列為安全序列),來為每個(gè)進(jìn)程Pi分配其所需資源,直至滿足每個(gè)進(jìn)程對(duì)資源的最大需求,使每個(gè)進(jìn)程都可以順利完成。安
5、全狀態(tài)一定沒有死鎖發(fā)生。如果系統(tǒng)無法找到這樣一個(gè)安全序列,則稱系統(tǒng)處于不安全狀態(tài)。</p><p> 安全序列:一個(gè)進(jìn)程序列{P1,…,Pn}是安全的,如果對(duì)于每一個(gè)進(jìn)程Pi(1≤i≤n),它以后尚需要的資源量不超過系統(tǒng)當(dāng)前剩余資源量與所有進(jìn)程Pj (j < i )當(dāng)前占有資源量之和,則稱此進(jìn)程序列{P1,P2,…,Pn}是安全的,稱作安全序列。</p><p> 銀行家算法:我
6、們可以把操作系統(tǒng)看作是銀行家,操作系統(tǒng)管理的資源相當(dāng)于銀行家管理的資金,進(jìn)程向操作系統(tǒng)請(qǐng)求分配資源相當(dāng)于用戶向銀行家貸款。操作系統(tǒng)按照銀行家制定的規(guī)則為進(jìn)程分配資源,當(dāng)進(jìn)程首次申請(qǐng)資源時(shí),要測(cè)試該進(jìn)程對(duì)資源的最大需求量,如果系統(tǒng)現(xiàn)存的資源可以滿足它的最大需求量則按當(dāng)前的申請(qǐng)量分配資源,否則就推遲分配。當(dāng)進(jìn)程在執(zhí)行中繼續(xù)申請(qǐng)資源時(shí),先測(cè)試該進(jìn)程已占用的資源數(shù)與本次申請(qǐng)的資源數(shù)之和是否超過了該進(jìn)程對(duì)資源的最大需求量。若超過則拒絕分配資源,若
7、沒有超過則再測(cè)試系統(tǒng)現(xiàn)存的資源能否滿足該進(jìn)程尚需的最大資源量,若能滿足則按當(dāng)前的申請(qǐng)量分配資源,否則也要推遲分配。</p><p><b> 2.2設(shè)計(jì)思路</b></p><p><b> 2.2.1算法思路</b></p><p> 先對(duì)用戶提出的請(qǐng)求進(jìn)行合法性檢查,即檢查請(qǐng)求是否大于需要的,是否大于可利用的。若
8、請(qǐng)求合法,則進(jìn)行預(yù)分配,對(duì)分配后的狀態(tài)調(diào)用安全性算法進(jìn)行檢查。若安全,則分配;若不安全,則拒絕申請(qǐng),恢復(fù)到原來的狀態(tài),拒絕申請(qǐng)。</p><p> 2.2.2銀行家算法中的數(shù)據(jù)結(jié)構(gòu)</p><p> ?。?)可利用資源向量Available。這是一個(gè)含有m個(gè)元素的數(shù)組,其中的每一個(gè)元素代表一類可利用的資源數(shù)目,其初始值是系統(tǒng)中所配置的該類全部可用資源的數(shù)目,其數(shù)值隨該類資源的分配和回收而
9、動(dòng)態(tài)地改變。如果Available [j]= K,則表示系統(tǒng)中現(xiàn)有R類資源K個(gè)</p><p> ?。?)最大需求矩陣Max。這是一個(gè)n*m的矩陣,它定義了系統(tǒng)中n個(gè)進(jìn)程對(duì)m類資源的最大需求。如果Max[i,j]=K,則表示進(jìn)程i需要R類資源的數(shù)目為K。</p><p> ?。?)分配矩陣Allocation。這也是一個(gè)n*m的矩陣,它定義了系統(tǒng)中每一類資源當(dāng)前已分配給每一進(jìn)程的資源數(shù)。如
10、果Allocation [i,j]=K,則表示進(jìn)程i當(dāng)前已分得R類資源的數(shù)目為K。</p><p> (4)需求矩陣Need[][]。這也是一個(gè)n*m的矩陣,用以表示每一個(gè)進(jìn)程尚需的各類資源數(shù)。如果Need [i,j]=K,則表示進(jìn)程i還需要R類資源K個(gè),才能完成其任務(wù)。</p><p> 上述矩陣存在關(guān)系:Need[i,j]= Max[i,j]﹣Allocation[i,j]<
11、/p><p> 2.2.3銀行家算法</p><p> 設(shè)Requesti是進(jìn)程Pi的請(qǐng)求向量,Requesti=K表示進(jìn)程Pi需要K個(gè)j類資源。Pi發(fā)出資源請(qǐng)求后,按下列步驟進(jìn)行檢查:</p><p> ?。?)如果requesti[j]≤need[i,j],轉(zhuǎn)向步驟(2);否則認(rèn)為錯(cuò)誤,所需要的資源數(shù)已超過它所宣布的最大值。</p><p&g
12、t; ?。?)如果requesti[j]≤available[j],轉(zhuǎn)向步驟(3);否則,表示尚無足夠資源,Pi需等待。</p><p> ?。?)系統(tǒng)嘗試將資源分配給進(jìn)程Pi,并修改下面數(shù)據(jù)結(jié)構(gòu)中的數(shù)值:</p><p> Available[j]:=Available[j]-Requesti[j];</p><p> Allocation[i,j]:=All
13、ocation[i,j]+ Requesti[j];</p><p> Need[i,j]:=Need[i,j]- Requesti[j];</p><p> ?。?)執(zhí)行安全性算法,檢查此次資源分配后,系統(tǒng)是否出于安全狀態(tài)。若安全,才正式將資源分配給進(jìn)程Pi,已完成本次分配;否則,將本次試探分配作廢,恢復(fù)原來的資源分配狀態(tài),讓Pi等待。</p><p> 2.
14、1.4安全性檢查算法</p><p> ?。?)設(shè)置兩個(gè)向量:</p><p> ?、俟ぷ飨蛄縲ork:表示系統(tǒng)可提供給進(jìn)程繼續(xù)運(yùn)行所需的各類資源數(shù)目,執(zhí)行安全性算法開始時(shí)work:=available。</p><p> ②finish標(biāo)志:表示系統(tǒng)是否有足夠的資源分配給進(jìn)程,使之運(yùn)行完成。初始化finish[i]:=false;有足夠資源分配給進(jìn)程時(shí),令fin
15、ish[i]:=true。</p><p> ?。?)從進(jìn)程集合中找到一個(gè)能滿足下述條件的進(jìn)程</p><p> ?、賔inish[i]=false; </p><p> ?、贜eed[i,j]≤work[j];找到執(zhí)行步驟(3),否則執(zhí)行步驟(4)。</p><p> ?。?)當(dāng)進(jìn)程Pi獲得資源后,可順利執(zhí)行,直至完成,并釋放出分配給它的資
16、源,故應(yīng)執(zhí)行:</p><p> Work[j]:=work[i]+allocation[i,j];</p><p> Finish[i]:=true;</p><p> Go to step ②;</p><p> ?。?)如果所有進(jìn)程的finish[i]=true都滿足,則表示系統(tǒng)處于安全狀態(tài);否則,</p><
17、p> 系統(tǒng)處于不安全狀態(tài)。</p><p><b> 2.3設(shè)計(jì)方法</b></p><p> 2.3.1基本要求 </p><p> ?。?)可以輸入某系統(tǒng)的資源以及T0時(shí)刻進(jìn)程對(duì)資源的占用及需求情況的表項(xiàng),以及T0時(shí)刻系統(tǒng)的可利用資源數(shù)。</p><p> ?。?)對(duì)T0時(shí)刻的進(jìn)行安全性檢測(cè),即檢測(cè)在T0
18、時(shí)刻該狀態(tài)是否安全。</p><p> ?。?)進(jìn)程申請(qǐng)資源,用銀行家算法對(duì)其進(jìn)行檢測(cè),分為以下三種情況:</p><p> A. 所申請(qǐng)的資源大于其所需資源,提示分配不合理不予分配并返回。</p><p> B.所申請(qǐng)的資源未大于其所需資源,但大于系統(tǒng)此時(shí)的可利用資源,提示分配不合理不予分配并返回。</p><p> C. 所申請(qǐng)的資
19、源未大于其所需資源,亦未大于系統(tǒng)此時(shí)的可利用資源,預(yù)分配并進(jìn)行安全性檢查:</p><p> a. 預(yù)分配后系統(tǒng)是安全的,將該進(jìn)程所申請(qǐng)的資源予以實(shí)際分配并打印后返回。</p><p> b. 與分配后系統(tǒng)進(jìn)入不安全狀態(tài),提示系統(tǒng)不安全并返回。</p><p> ?。?)對(duì)輸入進(jìn)行檢查,即若輸入不符合條件,應(yīng)當(dāng)報(bào)錯(cuò)并返回重新輸入。</p><
20、p><b> 2.3.2流程圖:</b></p><p> ?。?)銀行家算法,如圖1所示。</p><p><b> Y</b></p><p><b> N</b></p><p><b> N</b></p><p&
21、gt;<b> Y</b></p><p> 圖1銀行家算法流程圖</p><p> ?。?)安全性算法,如圖2所示。</p><p><b> Y</b></p><p><b> N</b></p><p><b> Y</
22、b></p><p><b> N</b></p><p><b> Y</b></p><p><b> Y</b></p><p><b> Y</b></p><p><b> N</b>
23、</p><p> 圖2安全性算法流程圖</p><p><b> 2.3.3調(diào)試結(jié)果</b></p><p> ?。?)資源分配情況,如圖3所示。</p><p><b> 圖3資源分配情況</b></p><p> ?。?)安全判斷,如圖4所示。</p>
24、<p><b> 圖4安全判斷 </b></p><p> ?。?)為1分配資源,如圖5所示。</p><p><b> 圖5為1分配資源 </b></p><p> ?。?)為4分配資源,如圖6所示。</p><p><b> 圖6為4分配資源</b>&l
25、t;/p><p> ?。?)為0分配資源,如圖7所示。</p><p><b> 圖7為0分配資源</b></p><p><b> 3.設(shè)計(jì)體會(huì)</b></p><p> 通過本次課程設(shè)計(jì),我收獲很多,首先我對(duì)十大算法之一的銀行家算法有了清楚的認(rèn)識(shí),認(rèn)真分析了進(jìn)程產(chǎn)生死鎖的原因,了解為什么要進(jìn)行
26、死鎖的避免,掌握銀行家算法的數(shù)據(jù)結(jié)構(gòu),了解了算法的執(zhí)行過程,加深了對(duì)銀行家算法的理解。其次,我對(duì)編程有了個(gè)清楚的認(rèn)識(shí),編程就是將先現(xiàn)實(shí)中的規(guī)律模擬成電腦能運(yùn)行的程序,方便我們的工作和學(xué)習(xí)生活。最后,我也清楚認(rèn)識(shí)到理論聯(lián)系實(shí)際重要性,動(dòng)手操作能力和編程邏輯思維能力的提高的重要性,對(duì)自己所編寫的程序要學(xué)會(huì)調(diào)試,不斷改進(jìn),向更加全面的方向考慮,同時(shí)也要考慮程序的可行性和健壯性??偠灾?,我在編寫程序方面有了更加深入的認(rèn)識(shí)。不同的算法可以實(shí)現(xiàn)相
27、同的功能,這是我從本次實(shí)驗(yàn)中深深體會(huì)到的,因而在今后的學(xué)習(xí)中遇到問題我會(huì)嘗試著用的不同的方法來解決,有時(shí)候換個(gè)角度可以很方便的解決問題</p><p> 課程設(shè)計(jì)是我們對(duì)專業(yè)課程知識(shí)綜合應(yīng)用的實(shí)踐訓(xùn)練,只有認(rèn)真的進(jìn)行課程設(shè)計(jì),學(xué)會(huì)腳踏實(shí)地認(rèn)真思考學(xué)習(xí),課程設(shè)計(jì)是培養(yǎng)我們綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn)、提出、分析和解決實(shí)際問題、鍛煉實(shí)踐能力的重要環(huán)節(jié),是對(duì)我們實(shí)際能力的考察過程。</p><p>
28、<b> 4.參考文獻(xiàn)</b></p><p> [1] 湯小丹,梁紅兵,哲鳳屏,湯子瀛.計(jì)算機(jī)操作系統(tǒng).[M] 西安:西安電子科技大學(xué)出版社,2007. 150-220</p><p> [2] 嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu). [M] 北京:清華大學(xué)出版社,2006. 14-99</p><p> [3] 趙莉,楊國梁,孫喁喁,徐飛.Ja
29、va程序設(shè)計(jì)教程. [M] 西安:西安科技大學(xué)出版社,2009.25-99</p><p> [4] 劉璟等.高級(jí)語言C++程序設(shè)計(jì).[M]西安電子科技大學(xué)出版社,2009.66-102</p><p><b> 附錄</b></p><p> #include<iostream.h></p><p>
30、 #include<string.h></p><p> #define False 0</p><p> #define True 1</p><p> char name[50]={0};//資源名稱</p><p> int Max[50][50]={0};//進(jìn)程所需各類資源的最大需求</p>&l
31、t;p> int Allocation[50][50]={0};//系統(tǒng)已分配資源</p><p> int Need[50][50]={0};//進(jìn)程需求資源</p><p> int Available[50]={0};//系統(tǒng)可用資源向量</p><p> int Request[50]={0};//進(jìn)程請(qǐng)求資源向量</p><
32、;p> int Work[50]={0};//存放系統(tǒng)可提供進(jìn)程繼續(xù)運(yùn)行所需各類資源數(shù)目</p><p> int temp[50]={0};//存放安全序列</p><p> int b[50]={0};//系統(tǒng)各類資源總數(shù)</p><p> int M=50;//進(jìn)程的最大數(shù)目為50</p><p> int N=50;/
33、/資源的最大數(shù)目為50</p><p> void display()</p><p><b> {</b></p><p> int i,j,number,m,n;</p><p> char ming;</p><p> int a[50]={0};</p><p
34、> cout<<"請(qǐng)輸入系統(tǒng)中資源的種類:";</p><p><b> cin>>n;</b></p><p><b> N=n;</b></p><p> for(i=0;i<n;i++){ </p><p> cout<
35、;<"資源"<<i+1<<"的名稱和數(shù)量:";</p><p> cin>>ming>>number;</p><p> name[i]=ming;</p><p> b[i]=number;</p><p><b> }</
36、b></p><p> cout<<"請(qǐng)輸入進(jìn)程的數(shù)量:";</p><p><b> cin>>m;</b></p><p><b> M=m;</b></p><p> cout<<"請(qǐng)輸入各進(jìn)程的最大需求(&quo
37、t;<<m<<"*"<<n<<"矩陣)[Max]:"<<endl;</p><p> for(i=0;i<m;i++)</p><p> for(j=0;j<n;j++)</p><p> cin>>Max[i][j];</p>
38、;<p> cout<<"請(qǐng)輸入各進(jìn)程的已分配("<<m<<"*"<<n<<"矩陣)[Allocation]:"<<endl;</p><p> for(i=0;i<m;i++)</p><p> for(j=0;j<n;j++
39、){</p><p> cin>>Allocation[i][j];</p><p> Need[i][j]=Max[i][j]-Allocation[i][j];</p><p> if(Need[i][j]<0){</p><p> cout<<"您輸入的第"<<i+1
40、<<"個(gè)進(jìn)程所擁有的第"<<j+1<<"個(gè)資源數(shù)錯(cuò)誤,請(qǐng)重新輸入:"<<endl;</p><p><b> j--;</b></p><p><b> continue;</b></p><p><b> }</
41、b></p><p><b> }</b></p><p> cout<<"目前可用的資源:"<<endl;</p><p> for(i=0;i<N;i++)</p><p> cout<<name[i]<<" &quo
42、t;;</p><p> cout<<endl;</p><p> for (j=0;j<N;j++){</p><p> for(i=0;i<M;i++){</p><p> a[j]+=Allocation[i][j];</p><p><b> }</b>&
43、lt;/p><p> Available[j]=b[j]-a[j];</p><p><b> }</b></p><p> for(i=0;i<N;i++)</p><p> cout<<Available[i]<<" ";//輸出分配資源</p>&
44、lt;p> cout<<endl;</p><p><b> }</b></p><p> void print()//顯示資源分配情況</p><p><b> {</b></p><p><b> int i,j;</b></p>
45、<p> cout<<" Max Allocation Need"<<endl;</p><p> cout<<"進(jìn)程名 ";</p><p> for(j=0;j<3;j++){</p><p> for(i=0;
46、i<N;i++)</p><p> cout<<name[i]<<" ";</p><p> cout<<" ";</p><p><b> }</b></p><p> cout<<endl;</p&g
47、t;<p> for(i=0;i<M;i++){</p><p> cout<<" "<<i<<" ";</p><p> for(j=0;j<N;j++)</p><p> cout<<Max[i][j]<<&quo
48、t; ";</p><p> cout<<" ";</p><p> for(j=0;j<N;j++)</p><p> cout<<Allocation[i][j]<<" ";</p><p> cout<<"
49、 ";</p><p> for(j=0;j<N;j++)</p><p> cout<<Need[i][j]<<" ";</p><p> cout<<endl;</p><p><b> }</b></p>&l
50、t;p><b> }</b></p><p> int changdata(int i)//進(jìn)行資源分配</p><p><b> { </b></p><p><b> int j;</b></p><p> for (j=0;j<M;j++) {<
51、;/p><p> Available[j]=Available[j]-Request[j];</p><p> Allocation[i][j]=Allocation[i][j]+Request[j];</p><p> Need[i][j]=Need[i][j]-Request[j];</p><p><b> }</b
52、></p><p><b> return 1;</b></p><p><b> }</b></p><p> int safe(int num,int M,int N)//安全性算法對(duì)系統(tǒng)進(jìn)行分析</p><p><b> {</b></p>&
53、lt;p> int i,j,k=0,m,apply,Finish[5]={0};</p><p><b> int flag;</b></p><p> int flag1;</p><p> for(j=0;j<M;j++)</p><p> { Work[j]=Available[j];
54、 }</p><p> for(flag=0;flag<M;flag++){</p><p> for(i=0;i<M;i++){</p><p><b> apply=0;</b></p><p> for(j=0;j<N;j++){</p><p> if (F
55、inish[i]==False&&Need[i][j]<=Work[j]){ </p><p> apply++;</p><p> if(apply==N){</p><p> for(m=0;m<N;m++){</p><p> Work[m]=Work[m]+Allocation[i][m
56、];//變分配數(shù)</p><p><b> }</b></p><p> Finish[i]=True;</p><p> temp[k]=i;</p><p> k++;</p><p><b> }</b></p><p>&
57、lt;b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> for(i=0;i<M;i++){</p><p> if(
58、Finish[i]==False){</p><p> cout<<"系統(tǒng)不安全"<<endl;//不成功系統(tǒng)不安全</p><p> for(i = 0;i<N;i++){ </p><p> Available[i]=Available[i]+Request[i];</p><p&g
59、t; Allocation[num][i]=Allocation[num][i]-Request[i];</p><p> Need[num][i]=Need[num][i]+Request[i]; </p><p><b> }</b></p><p> return -1;</p><p><b>
60、 }</b></p><p><b> }</b></p><p> cout<<"系統(tǒng)是安全的!"<<endl;//如果安全,輸出成功</p><p> cout<<"分配的序列:";</p><p> for(i=0
61、;i<M;i++){//輸出運(yùn)行進(jìn)程數(shù)組</p><p> cout<<temp[i];</p><p> if(i<M-1) cout<<"->";</p><p><b> }</b></p><p> cout<<endl;<
62、;/p><p> for(i = 0;i<N;i++){</p><p> if(Max[num][i] == Allocation[num][i])</p><p> { flag1 = 1; }</p><p><b> else{</b></p><p> flag1 =
63、0;</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> if(flag1 == 1){</p><p> for(i=0;i<N;i++){&l
64、t;/p><p> Available[i] = Available[i] + Allocation[num][i];</p><p> Allocation[num][i] = 0;</p><p><b> }</b></p><p><b> }</b></p>&l
65、t;p><b> return 0;</b></p><p><b> }</b></p><p> void bank(int M,int N)//銀行家算法對(duì)申請(qǐng)資源對(duì)進(jìn)行判定</p><p><b> {</b></p><p><b> cha
66、r ch;</b></p><p> int i=0,j=0;</p><p><b> ch='y';</b></p><p> cout<<"請(qǐng)輸入要求分配的資源進(jìn)程號(hào)(0-"<<M-1<<"):"; </p><
67、;p> cin>>i;//輸入須申請(qǐng)的資源號(hào)</p><p> cout<<"請(qǐng)輸入進(jìn)程 "<<i<<" 申請(qǐng)的資源:"<<endl;</p><p> for(j=0;j<N;j++){</p><p> cout<<name[j]&
68、lt;<":";</p><p> cin>>Request[j];//輸入需要申請(qǐng)的資源</p><p><b> }</b></p><p> for (j=0;j<N;j++){</p><p> if(Request[j]>Need[i][j]){//判斷
69、申請(qǐng)是否大于需求,若大于則出錯(cuò) </p><p> cout<<"進(jìn)程 "<<i<<"申請(qǐng)的資源大于它需要的資源";</p><p> cout<<" 分配不合理,不予分配!"<<endl;</p><p><b> ch=
70、39;n';</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> else {</b></p><p> if(Request[j]>Available[j]){//判斷申請(qǐng)是
71、否大于當(dāng)前資源,若大于則出錯(cuò)</p><p> cout<<"進(jìn)程"<<i<<"申請(qǐng)的資源大于系統(tǒng)現(xiàn)在可利用的資源";</p><p> cout<<" 分配出錯(cuò),不予分配!"<<endl;</p><p><b> ch='
72、;n';</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> if
73、(ch=='y') {</p><p> changdata(i);//根據(jù)進(jìn)程需求量變換資源</p><p> print();//根據(jù)進(jìn)程需求量顯示變換后的資源</p><p> safe(i,M,N);//根據(jù)進(jìn)程需求量進(jìn)行銀行家算法判斷</p><p><b> }</b></p&g
74、t;<p><b> }</b></p><p> void main()</p><p><b> {</b></p><p><b> int i;</b></p><p> display();</p><p><b&
75、gt; print();</b></p><p> safe(0,M,N);</p><p> for(i=0;i<M;i++)</p><p> { bank(M,N); }</p><p><b> print();</b></p><p><b>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)課程設(shè)計(jì)---銀行家算法
- 操作系統(tǒng)課程設(shè)計(jì)銀行家算法
- 操作系統(tǒng)課程設(shè)計(jì)--銀行家算法
- 操作系統(tǒng)課程設(shè)計(jì)(銀行家算法)
- 操作系統(tǒng)課程設(shè)計(jì)-銀行家算法
- 操作系統(tǒng)課程設(shè)計(jì)--銀行家算法
- 操作系統(tǒng)課程設(shè)計(jì)--銀行家算法
- 操作系統(tǒng)課程設(shè)計(jì)(銀行家算法設(shè)計(jì))
- 操作系統(tǒng)課程設(shè)計(jì)--銀行家算法 (3)
- 操作系統(tǒng)課程設(shè)計(jì)---銀行家算法 (2)
- 操作系統(tǒng)課程設(shè)計(jì)--銀行家算法 (2)
- 操作系統(tǒng)課程設(shè)計(jì)---模擬銀行家算法
- 操作系統(tǒng)課程設(shè)計(jì)---銀行家算法實(shí)現(xiàn)
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告—銀行家算法
- 操作系統(tǒng)原理課程設(shè)計(jì)--銀行家算法
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告—銀行家算法
- 操作系統(tǒng)課程設(shè)計(jì)---銀行家算法報(bào)告
- 操作系統(tǒng)課程設(shè)計(jì)-模擬銀行家算法-課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告---模擬實(shí)現(xiàn)銀行家算法
- 操作系統(tǒng)課程設(shè)計(jì)——銀行家算法的模擬實(shí)現(xiàn)
評(píng)論
0/150
提交評(píng)論