版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 計算機操作系統(tǒng)程序設(shè)計</p><p><b> 課程考核報告</b></p><p><b> 銀行家算法模擬實現(xiàn)</b></p><p> 班 級: 09軟件(1) </p><p> 學(xué) 號: </p><p>
2、 姓 名: </p><p> 指導(dǎo)老師: </p><p> 2011年12月 19日</p><p><b> 目錄</b></p><p> 1. 課程設(shè)計簡介------------------------------------------------3</
3、p><p> 1.1課程設(shè)計題目------------------------------------------------------------- 3</p><p> 1.2課程設(shè)計目的-----------------------------------------3</p><p> 1.3 課程設(shè)計要求-----------------------
4、-----------------3</p><p> 2 實驗原理分析-------------------------------------------4</p><p> 2.1 算法的來源及基本思想---------------------------------4</p><p> 2.2 死鎖產(chǎn)生的條件--------------------
5、-------------------4</p><p> 2.3 模擬進程申請資源-------------------------------------5</p><p> 3 概要設(shè)計------------------------------------------------5</p><p> 4 詳細(xì)設(shè)計----------------
6、--------------------------------7</p><p> 5 代碼設(shè)計------------------------------------------------8</p><p> 6 調(diào)試分析----------------------------------------------- 14</p><p> 7
7、心得體會------------------------------------------------21</p><p> 8 參考文獻------------------------------------------------21 </p><p> 1 課程設(shè)計簡介:</p><p> 1.1 課程設(shè)計題目</p><
8、p> 銀行家算法的模擬實現(xiàn)。應(yīng)用銀行家算法驗證進程安全性檢查及分配資源。</p><p> 1.2 課程設(shè)計目的</p><p> 本設(shè)計的目的是通過編寫和調(diào)試一個系統(tǒng)動態(tài)分配資源的簡單模擬程序,觀察死鎖產(chǎn)生的條件,并采用適當(dāng)?shù)乃惴?,有效地防止和避免死鎖地發(fā)生。</p><p> A、了解進程產(chǎn)生死鎖的原因,了解為什么要進行死鎖的避免。</p&
9、gt;<p> B、掌握銀行家算法的數(shù)據(jù)結(jié)構(gòu),了解算法的執(zhí)行過程,加深對銀行家算法的理解。</p><p> 1.3 課程設(shè)計要求</p><p> 設(shè)計一個n 個并發(fā)進程共享m 個系統(tǒng)資源的系統(tǒng)。進程可動態(tài)申請資源和釋放資源,系統(tǒng)按各進程的申請動態(tài)的分配資源。要求采用銀行家算法實現(xiàn)。</p><p> 初始化這組進程的最大資源請求和依次申請
10、的資源序列。把各進程已占用和需求資源情況記錄在進程控制塊中。假定進程控制塊的內(nèi)容包括:進程名,狀態(tài),當(dāng)前申請量,資源需求總量,已占資源量,能執(zhí)行完標(biāo)志。其中,進程的狀態(tài)有:就緒、等待和完成。當(dāng)系統(tǒng)不能滿足進程的資源請求時,進程處于等待態(tài)。資源需求總量表示進程運行過程中對資源的總的需求量。</p><p> 已占資源量表示進程目前已經(jīng)得到但還未歸還的資源量。因此,進程在以后還需要的剩余資源量等于資源需要總量減去已
11、占資源量。顯然每個進程的資源需求總量不應(yīng)超過系統(tǒng)擁有的資源總量。</p><p> 銀行家算法分配資源的原則是:當(dāng)某個進程提出資源請求時,假定先分配資源給它,然后查找各進程的剩余請求,檢查系統(tǒng)的剩余資源量是否由于進程的分配而導(dǎo)致系統(tǒng)死鎖。若能,則讓進程等待,否則,讓進程的假分配變?yōu)檎娣峙洹?lt;/p><p> 查找各進程的剩余請求,檢查系統(tǒng)的剩余資源量是否能滿足其中一進程。如果能,則轉(zhuǎn)b
12、)。</p><p> 將資源分配給所需的進程,這樣,該進程已獲得資源最大請求,最終能運行完成。標(biāo)記這個進程為終止進程,并將其占有的全部資源歸還給系統(tǒng)。</p><p> 重復(fù)第a)步和第b )步,直到所有進程都標(biāo)記為終止進程,或直到一個死鎖發(fā)生。若所有進程都標(biāo)記為終止進程,則系統(tǒng)的初始狀態(tài)是安全的,否則為不安全的。若安全,則正式將資源分配給它,否則假定的分配作廢,讓其等待。</
13、p><p> 2 實驗原理分析:</p><p> 2.1 算法的來源及基本思想</p><p> 銀行家算法,顧名思義是來源于銀行的借貸業(yè)務(wù),通過這個算法可以用來解決生活中的實際問題,如銀行貸款等。一定數(shù)量的本金要應(yīng)多個客戶的借貸周轉(zhuǎn),為了防止銀行加資金無法周轉(zhuǎn)而倒閉,對每一筆貸款,必須考察其是否能限期歸還。在操作系統(tǒng)中研究資源分配策略時也有類似問題,系統(tǒng)中
14、有限的資源要供多個進程使用,必須保證得到的資源的進程能在有限的時間內(nèi)歸還資源,以供其他進程使用資源。如果資源分配不得到就會發(fā)生進程循環(huán)等待資源,則進程都無法繼續(xù)執(zhí)行下去的死鎖現(xiàn)象。</p><p> 2.2 死鎖產(chǎn)生的條件</p><p> 銀行家算法是用來避免死鎖的一種重要方法,通過編寫一個簡單的銀行家算法程序,加深了解有關(guān)資源申請、避免死鎖等概念,并體會和了解死鎖和避免死鎖的具體實
15、施方法。</p><p> 死鎖的產(chǎn)生,必須同時滿足四個條件:</p><p> A、即一個資源每次只能由一個進程使用;</p><p> B、第二個為等待條件,即一個進程請求資源不能滿足時,它必須等待,單它仍繼續(xù)寶石已得到的所有其他資源;</p><p> C、第三個為非剝奪條件,即在出現(xiàn)死鎖的系統(tǒng)中一定有不可剝奪使用的資源;<
16、;/p><p> D、第四個為循環(huán)等待條件,系統(tǒng)中存在若干個循環(huán)等待的進程,即其中每一個進程分別等待它前一個進程所持有的資源。</p><p> 防止死鎖的機構(gòu)只能確保上述四個條件之一不出現(xiàn),則系統(tǒng)就不會發(fā)生死鎖。銀行家算法是避免死鎖的方法中,施加的限制條件較弱的,有利于獲得令人滿意的系統(tǒng)性能的方法。在該方法中把系統(tǒng)的狀態(tài)分為安全狀態(tài)和不安全狀態(tài),只要能使系統(tǒng)始終都處于安全狀態(tài),便可以避免
17、發(fā)生死鎖。</p><p> 2.3 模擬進程申請資源</p><p> 把一個進程需要和已占有資源的情況記錄在進程控制中,假定進程控制塊PCB其中“狀態(tài)”有就緒態(tài)、等待態(tài)和完成態(tài)。當(dāng)進程在處于等待態(tài)時,表示系統(tǒng)不能滿足該進程當(dāng)前的資源申請。“資源需求總量”表示進程在整個執(zhí)行過程中總共要申請的資源量。顯然,,每個進程的資源需求總量不能超過系統(tǒng)擁有的資源總數(shù), 銀行算法進行資源分配可以避
18、免死鎖.</p><p><b> 3 概要設(shè)計:</b></p><p> 銀行家算法可分為個主要的功能模塊,其描述如下:</p><p><b> 1.初始化</b></p><p> 由用戶輸入數(shù)據(jù),分別對運行的進程數(shù)、總的資源種類數(shù)、總資源數(shù)、各進程所需要的最大資源數(shù)量(Max),
19、已分配的資源數(shù)量賦值。</p><p><b> 2.安全性檢查算法</b></p><p> (1)設(shè)置兩個工作向量Work=AVAILABLE;FINISH=false;</p><p> (2)從進程集合中找到一個滿足下述條件的進程,</p><p> FINISH==false;</p>&
20、lt;p> NEED<=Work;</p><p> 如找到,執(zhí)行(3);否則,執(zhí)行(4)</p><p> (3)設(shè)進程獲得資源,可順利執(zhí)行,直至完成,從而釋放資源。</p><p> Work+=ALLOCATION;</p><p> Finish=true;</p><p> (4).如
21、所有的進程Finish= true,則表示安全;否則系統(tǒng)不安全。</p><p><b> 3. 銀行家算法</b></p><p> 在避免死鎖的方法中,所施加的限制條件較弱,有可能獲得令人滿意的系統(tǒng)性能。在該方法中把系統(tǒng)的狀態(tài)分為安全狀態(tài)和不安全狀態(tài),只要能使系統(tǒng)始終都處于安全狀態(tài),便可以避免發(fā)生死鎖。</p><p> 銀行家算法的
22、基本思想是分配資源之前,判斷系統(tǒng)是否是安全的;若是,才分配。它是最具有代表性的避免死鎖的算法。</p><p> 設(shè)進程j提出請求REQUEST [i],則銀行家算法按如下規(guī)則進行判斷。</p><p> (1).如果REQUEST [j] [i]<= NEED[j][i],則轉(zhuǎn)(2);否則,出錯。</p><p> (2).如果REQUEST [j]
23、[i]<= AVAILABLE[j][i],則轉(zhuǎn)(3);否則,出錯。</p><p> (3).系統(tǒng)試探分配資源,修改相關(guān)數(shù)據(jù):</p><p> AVAILABLE[i]-=REQUEST[j][i];</p><p> ALLOCATION[j][i]+=REQUEST[j][i];</p><p> NEED[j][i]-
24、=REQUEST[j][i];</p><p><b> 用到的數(shù)據(jù)結(jié)構(gòu):</b></p><p> 實現(xiàn)銀行家算法要有若干數(shù)據(jù)結(jié)構(gòu),它們用來表示資源分配系統(tǒng)的狀態(tài)。令n表示系統(tǒng)中進程的數(shù)目,m表示資源的分類數(shù)。還需要以下數(shù)據(jù)結(jié)構(gòu):</p><p> 1).Available是一個長度為m的向量,它表示每類資源可用的數(shù)量。Availabl
25、e [j]=k,表示j類資源可用的數(shù)量為k。</p><p> 2).Max是一個n×m矩陣,它表示每個進程對資源的最大需求。Max [i,j]=k,表示進程pi至多可以申請k個j類資源單位。</p><p> 3).Allocation是一個n×m矩陣,它表示當(dāng)前分給每個進程的資源數(shù)目。Allocation [i,j]=k,表示進程i當(dāng)前分到k個j類資源。<
26、/p><p> 4).Need是一個n×m矩陣,它表示每個進程還缺少多少資源。Need[i,j]=k,表示進程pi尚需k個j類資源才能完成其任務(wù)。顯然Need[i,j]= Max [i,j]- Allocation [i,j]。</p><p><b> 4 詳細(xì)設(shè)計:</b></p><p> 1主函數(shù)main()</p&
27、gt;<p> 要求在主函數(shù)中輸入運行的進程數(shù)、總的資源種類數(shù)、總資源數(shù)、各進程所需要的最大資源數(shù)量(Max),已分配的資源數(shù)量,并對這些數(shù)據(jù)進行有效性檢驗,不符合條件的數(shù)據(jù)要進行重新輸入。</p><p> 2函數(shù)showdata( )</p><p> Showdata()函數(shù)用來輸出資源的分配情況。對各進程資源的總數(shù)量、系統(tǒng)目前可利用的資源數(shù)量、各進程還需要的資源
28、數(shù)量及各進程已分配的資源數(shù)量進行輸出。</p><p> 3函數(shù)bank( )</p><p> Bank()函數(shù)為銀行家算法,對需申請資源的進程號j和所要申請的資源數(shù)量Request[j]進行輸入,并分別將Request[j]與Need[i][j]和Available[j]進行比較,觀察所要申請的資源數(shù)目是否合理。如合理,則判斷此時系統(tǒng)是否安全,若安全則輸出資源的分配情況,否則輸出原
29、來的系統(tǒng)資源分配情況,重新輸入申請資源的數(shù)量。</p><p> 4函數(shù)changdata( )</p><p> Changdata()函數(shù)用來改變可用資源和已經(jīng)拿到資源和還需要的資源的值。當(dāng)申請的資源數(shù)目合理時,對現(xiàn)在的系統(tǒng)資源分配情況進行刷新。</p><p> 5函數(shù)chkerr()</p><p> Chkerr()函數(shù)用來
30、檢查系統(tǒng)此時的安全性。如果系統(tǒng)能夠找到一個安全執(zhí)行的序列,則各進程能正常運行終結(jié),否則,此進程進入阻塞狀態(tài)。</p><p> 6函數(shù) rstordata( )</p><p> Changdata()函數(shù),改變可用資源和已經(jīng)拿到資源和還需要的資源的值。若判斷出申請資源后系統(tǒng)是安全的,則要改變系統(tǒng)現(xiàn)在的資源分配情況:</p><p> Available[j]
31、= Available[j]+Request[j]; </p><p> Allocation[k][j]= Allocation [k][j]-Request[j]; </p><p> Need[k][j]=Need[k][j]+Request[j]</p><p><b> 代碼設(shè)計:</b></p><p>
32、; #include<string.h></p><p> #include<stdio.h></p><p> #include<stdlib.h></p><p> #define FALSE 0 </p><p> #define TRUE 1 </p><p>
33、#define W 10</p><p> #define R 20</p><p> int M ; //總進程數(shù)</p><p> int N ; //資源種類 </p><p> int ALL_RESOURCE[W];//各種資源的數(shù)目總和</p><p> int MAX[W][R]; //M個進程
34、對N類資源最大資源需求量</p><p> int AVAILABLE[R]; //系統(tǒng)可用資源數(shù)</p><p> int ALLOCATION[W][R]; //M個進程已經(jīng)得到N類資源的資源量</p><p> int NEED[W][R]; //M個進程還需要N類資源的資源量</p><p> int Request[R];
35、//請求資源個數(shù)</p><p> void showdata() //函數(shù)showdata,輸出資源分配情況</p><p><b> { </b></p><p><b> int i,j; </b></p><p> printf("\n\n各種資源的總數(shù)量(all):\n&
36、quot;); </p><p> for (j=0;j<N;j++)</p><p> printf(" 資源 %d: %d\n",j+1,ALL_RESOURCE[j]);</p><p> printf("\n\n"); </p><p> printf("系統(tǒng)目前
37、各種資源可用的數(shù)為(available):\n");</p><p> for (j=0;j<N;j++)</p><p> printf(" 資源 %d: %d\n", j+1, AVAILABLE[j]); </p><p> printf("\n\n"); </p><
38、p> printf("各進程還需要的資源量(need):\n\n"); </p><p> printf(" 進程 ");</p><p> for(i=0;i<N;i++)</p><p> printf(" 資源%d ",i+1); </p><p>
39、printf("\n");</p><p> for (i=0;i<M;i++) </p><p><b> { </b></p><p> printf("進程p%d:",i+1);</p><p> for (j=0;j<N;j++)</p>
40、<p> printf(" %d ",NEED[i][j]);</p><p> printf("\n"); </p><p><b> } </b></p><p> printf("\n\n");</p><p> printf(&
41、quot; 各進程已經(jīng)得到的資源量(allocation): \n\n"); </p><p> printf(" 進程 ");</p><p> for(i=0;i<N;i++)</p><p> printf(" 資源%d ",i+1);</p><p> printf(&
42、quot;\n"); </p><p> for (i=0;i<M;i++) </p><p><b> { </b></p><p> printf("進程p%d: ",i+1);</p><p> for (j=0;j<N;j++)</p><p&
43、gt; printf(" %d ",ALLOCATION[i][j]);</p><p> printf("\n");</p><p><b> } </b></p><p> printf("\n");</p><p><b> }
44、</b></p><p> void changdata(int k) //函數(shù)changdata,改變可用資源和已經(jīng)拿到資源和還需要的資源的值</p><p><b> { </b></p><p><b> int j; </b></p><p> for (j=0;j<
45、;N;j++) </p><p><b> { </b></p><p> AVAILABLE[j]=AVAILABLE[j]-Request[j]; </p><p> ALLOCATION[k][j]=ALLOCATION[k][j]+Request[j]; </p><p> NEED[k][j]=NEED
46、[k][j]-Request[j];}}</p><p> void rstordata(int k) //函數(shù)rstordata,恢復(fù)可用資源和已經(jīng)拿到資源和還需要的資源的值</p><p><b> {int j; </b></p><p> for (j=0;j<N;j++) </p><p> {
47、AVAILABLE[j]=AVAILABLE[j]+Request[j]; </p><p> ALLOCATION[k][j]=ALLOCATION[k][j]-Request[j]; </p><p> NEED[k][j]=NEED[k][j]+Request[j];}}</p><p> int chkerr(int s) //函數(shù)chkerr,檢查是
48、否安全</p><p> { int WORK,FINISH[W]; </p><p> int i,j,k=0; </p><p> for(i=0;i<M;i++)</p><p> FINISH[i]=FALSE; </p><p> for(j=0;j<N;j++) </p>
49、<p><b> {</b></p><p> WORK=AVAILABLE[j]; </p><p><b> i=s; </b></p><p><b> do</b></p><p><b> { </b></p>
50、<p> if(FINISH[i]==FALSE&&NEED[i][j]<=WORK)</p><p><b> {</b></p><p> WORK=WORK+ALLOCATION[i][j]; </p><p> FINISH[i]=TRUE; </p><p><b
51、> i=0; </b></p><p><b> } </b></p><p><b> else </b></p><p><b> { i++; </b></p><p><b> } </b></p><
52、;p> }while(i<M);</p><p> for(i=0;i<M;i++) </p><p> if(FINISH[i]==FALSE) </p><p><b> {</b></p><p> printf("\n");</p><p>
53、 printf(" 系統(tǒng)不安全!!! 本次資源申請不成功!!!\n"); </p><p> printf("\n");</p><p> return 1; </p><p><b> } </b></p><p><b> } </b></
54、p><p> printf("\n");</p><p> printf(" 經(jīng)安全性檢查,系統(tǒng)安全,本次分配成功。\n"); </p><p> printf("\n");</p><p> return 0; </p><p><b> }
55、</b></p><p> void bank() //銀行家算法</p><p><b> {</b></p><p> int i=0,j=0; </p><p> char flag='Y'; </p><p> while(flag=='Y
56、'||flag=='y') </p><p><b> { </b></p><p><b> i=-1; </b></p><p> while(i<0||i>=M) </p><p><b> { </b></p>
57、<p> printf(" 請輸入需申請資源的進程號(從P1到P%d,否則重輸入!):",M); </p><p> printf("p");</p><p> scanf("%d",&i); </p><p> if(i<1||i>M)</p><
58、p> printf(" 輸入的進程號不存在,重新輸入!\n"); </p><p><b> } </b></p><p> printf(" 請輸入進程P%d申請的資源數(shù):\n",i); </p><p> for (j=0;j<N;j++) </p><p>
59、;<b> { </b></p><p> printf(" 資源%d:",j+1); </p><p> scanf("%d",&Request[j]);</p><p> if(Request[j]>NEED[i-1][j]) //若請求的資源數(shù)大于進程還需要i類資源的資源量j&
60、lt;/p><p><b> { </b></p><p> printf(" 進程P%d申請的資源數(shù)大于進程P%d還需要%d類資源的資源量!",i,i,j); </p><p> printf("申請不合理,出錯!請重新選擇!\n\n"); </p><p> flag=
61、39;N'; </p><p><b> break; </b></p><p><b> } </b></p><p><b> else </b></p><p><b> {</b></p><p> if(
62、Request[j]>AVAILABLE[j]) //若請求的資源數(shù)大于可用資源數(shù)</p><p><b> { </b></p><p> printf("進程P%d申請的資源數(shù)大于系統(tǒng)可用%d類資源的資源量!",i,j); </p><p> printf("申請不合理,出錯!請重新選擇!\n\n&
63、quot;); </p><p> flag='N'; </p><p><b> break; </b></p><p><b> } </b></p><p><b> } </b></p><p><b> }
64、</b></p><p> if(flag=='Y'||flag=='y') </p><p><b> { </b></p><p> changdata(i-1); //調(diào)用changdata(i)函數(shù),改變資源數(shù)</p><p> if(chkerr(i-1))
65、//若系統(tǒng)安全</p><p><b> { </b></p><p> rstordata(i-1); //調(diào)用rstordata(i)函數(shù),恢復(fù)資源數(shù)</p><p> showdata(); //輸出資源分配情況</p><p><b> } </b></p><
66、;p> else //若系統(tǒng)不安全 </p><p> showdata(); </p><p> } //輸出資源分配情況 </p><p> else //若flag=N||flag=n</p><p> showdata(); </p><p> printf("
67、\n");</p><p> printf("是否繼續(xù)銀行家算法演示,按'Y'或'y'鍵繼續(xù),按'N'或'n'鍵退出演示: "); </p><p> scanf("%c",&flag);</p><p><b> } <
68、/b></p><p><b> } </b></p><p> void main() //主函數(shù)</p><p><b> { </b></p><p> int i=0,j=0,p; </p><p> printf(" *******
69、******************************** \n");</p><p> printf(" 銀行家算法的模擬實現(xiàn) \n");</p><p> printf(" 20090307143 吳天一 \n&quo
70、t;);</p><p> printf(" *************************************** \n\n");</p><p> printf("請輸入總進程數(shù):");</p><p> scanf("%d",&M);</p><
71、;p> printf("請輸入總資源種類:");</p><p> scanf("%d",&N);</p><p> printf("請輸入總資源數(shù)(all_resource):");</p><p> for(i=0;i<N;i++)</p><p>
72、 scanf("%d",&ALL_RESOURCE[i]);</p><p> printf("依次輸入各進程所需要的最大資源數(shù)量(max):\n");</p><p> for (i=0;i<M;i++)</p><p><b> {</b></p><p>
73、 for (j=0;j<N;j++)</p><p><b> {</b></p><p><b> do</b></p><p><b> {</b></p><p> scanf("%d",&MAX[i][j]);</p&g
74、t;<p> if (MAX[i][j]>ALL_RESOURCE[j])</p><p> printf("\n占有資源超過了聲明的該資源總數(shù),請重新輸入!\n");</p><p> }while (MAX[i][j]>ALL_RESOURCE[j]);</p><p><b> }</b&g
75、t;</p><p><b> }</b></p><p> printf("依次輸入各進程已經(jīng)占據(jù)的資源數(shù)量(allocation):\n");</p><p> for (i=0;i<M;i++)</p><p><b> {</b></p>&l
76、t;p> for (j=0;j<N;j++)</p><p><b> {</b></p><p><b> do</b></p><p><b> {</b></p><p> scanf("%d",&ALLOCATION[i
77、][j]);</p><p> if (ALLOCATION[i][j]>MAX[i][j])</p><p> printf("\n占有資源超過了聲明的最大資源,請重新輸入\n");</p><p> }while (ALLOCATION[i][j]>MAX[i][j]);</p><p><b&
78、gt; }</b></p><p> }//初始化資源數(shù)量</p><p> for (j=0;j<N;j++)</p><p><b> { </b></p><p> p=ALL_RESOURCE[j];</p><p> for (i=0;i<M;i++)
79、</p><p><b> {</b></p><p> p=p-ALLOCATION[i][j];//減去已經(jīng)被占據(jù)的資源</p><p> AVAILABLE[j]=p;</p><p> if(AVAILABLE[j]<0)</p><p> AVAILABLE[j]=0;&
80、lt;/p><p><b> }</b></p><p><b> }</b></p><p> for (i=0;i<M;i++)</p><p> for(j=0;j<N;j++)</p><p> NEED[i][j]=MAX[i][j]-ALLOCA
81、TION[i][j];</p><p> showdata();</p><p><b> bank();</b></p><p><b> }</b></p><p><b> 調(diào)試分析:</b></p><p> 輸出結(jié)果如下圖所示:<
82、;/p><p> 當(dāng)輸入進程數(shù)和資源種類數(shù)及總資源量、所需最大資源數(shù)量Max和已分配資源量時,系統(tǒng)調(diào)用后showdata()函數(shù),顯示現(xiàn)在系統(tǒng)的資源分配情況。當(dāng)輸入需要申請的進程號和其所需的資源數(shù)目時,系統(tǒng)調(diào)用bank()函數(shù),在進行安全性檢驗,若此時系統(tǒng)安全,則系統(tǒng)為其分配資源,若此時系統(tǒng)沒有通過安全性檢驗,則顯示提示語句,恢復(fù)系統(tǒng)原來的資源分配情況,再重新進行選擇。</p><p>
83、下圖所顯示的程序運行結(jié)果所輸入的數(shù)據(jù)都是有效的,無效數(shù)據(jù)的輸入這里因為篇幅的原因沒有給出。當(dāng)輸入的結(jié)果大于其范圍時,程序會輸出提示語句,此后再重新輸入數(shù)據(jù)。</p><p> 以課本P110銀行家算法之例為例</p><p><b> 資源不足時</b></p><p><b> 資源足夠時</b></p>
84、;<p> 資源足夠且請求分配資源足夠時</p><p> 資源足夠但請求資源不足時</p><p><b> 心得體會</b></p><p> 一周的操作系統(tǒng)課程設(shè)計,我學(xué)到了很多課本上沒有的知識。想要完成模擬銀行家算法的C語言程序,首先就是要徹底熟悉算法,了解算法的基本原理,才能開始著手程序設(shè)計在程序設(shè)計設(shè)計過程中,
85、遇到了一些困難,通過向同學(xué)詢問,翻閱資料等,問題被一一解決了。首先就是在知識層面上了解了銀行家算法這種進程調(diào)度和避免死鎖的算法,并用C語言程序真正模擬出安全性檢查和銀行家算法過程,復(fù)習(xí)了之前所學(xué)C語言和數(shù)據(jù)結(jié)構(gòu)的知識;在編程過程中雖然遇到很多困難,解決問題的過程中,同時也鍛煉了我不怕困難,勇于迎接挑戰(zhàn)的精神,為以后的挑戰(zhàn)磨練了必勝的信心。</p><p><b> 參考文獻</b><
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計--銀行家算法的模擬實現(xiàn)
- 課程設(shè)計--銀行家算法
- 課程設(shè)計--銀行家算法
- 銀行家算法—課程設(shè)計
- 銀行家算法-課程設(shè)計
- 銀行家算法課程設(shè)計
- 銀行家算法課程設(shè)計
- 銀行家算法的實現(xiàn)課程設(shè)計報告
- 銀行家算法課程設(shè)計報告
- 銀行家算法課程設(shè)計報告
- 操作系統(tǒng)課程設(shè)計報告---模擬實現(xiàn)銀行家算法
- 操作系統(tǒng)課程設(shè)計——銀行家算法的模擬實現(xiàn)
- 銀行家算法課程設(shè)計2
- 操作系統(tǒng)課程設(shè)計---模擬銀行家算法
- 操作系統(tǒng)課程設(shè)計-模擬銀行家算法-課程設(shè)計
- 操作系統(tǒng)課程設(shè)計---銀行家算法實現(xiàn)
- 用銀行家算法實現(xiàn)資源分配課程設(shè)計
- 銀行家算法課程設(shè)計報告 (2)
- 銀行家算法的模擬實現(xiàn)
- 操作系統(tǒng)課程設(shè)計--銀行家算法
評論
0/150
提交評論