2023年計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn)二銀行家算法實(shí)驗(yàn)報(bào)告書_第1頁
2023年計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn)二銀行家算法實(shí)驗(yàn)報(bào)告書_第2頁
2023年計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn)二銀行家算法實(shí)驗(yàn)報(bào)告書_第3頁
2023年計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn)二銀行家算法實(shí)驗(yàn)報(bào)告書_第4頁
2023年計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn)二銀行家算法實(shí)驗(yàn)報(bào)告書_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

旗海工學(xué)浣奸算機(jī)學(xué)浣

實(shí)驗(yàn)報(bào)告書

課程名:《操作系統(tǒng)原理A》

題目:銀行家算法___________

班級(jí):______Z計(jì)121_______________

學(xué)號(hào):__________________

姓名:薛慧君___________________

評(píng)語:

成績(jī):指導(dǎo)教師:

批閱時(shí)間:年目H

操作系統(tǒng)原理實(shí)驗(yàn)一一銀行家算法實(shí)驗(yàn)報(bào)告

1目的與規(guī)定:

1)本實(shí)驗(yàn)?zāi)康氖峭ㄟ^使用銀行家算法實(shí)現(xiàn)系統(tǒng)資源的分派和安全性檢查模擬,提高學(xué)生對(duì)

操作系統(tǒng)資源分派功能的深刻理解,并培養(yǎng)學(xué)生對(duì)操作系統(tǒng)開發(fā)的愛好與應(yīng)用能力;

2)實(shí)驗(yàn)前必須認(rèn)真閱讀和理解銀行家算法的基本原理和實(shí)現(xiàn)方法;

3)獨(dú)立使用C或VC++編程語言編寫銀行家算法模擬程序;

4)按照實(shí)驗(yàn)題目規(guī)定獨(dú)立對(duì)的地完畢實(shí)驗(yàn)內(nèi)容(編寫、調(diào)試算法程序,提交程序清單及及

相關(guān)實(shí)驗(yàn)數(shù)據(jù)與運(yùn)營(yíng)結(jié)果)

5)于2023年5月10日以前提交本次實(shí)驗(yàn)報(bào)告(含電子和紙質(zhì)報(bào)告,由學(xué)習(xí)委員以班為單

位統(tǒng)一打包提交)。

2實(shí)驗(yàn)內(nèi)容或題目

1)設(shè)計(jì)五個(gè)進(jìn)程{P0,P1,P2,P3,P4}共享三類資源{A,B,C}的系統(tǒng),{A,B,C}的資源總

數(shù)量分別為10,5,7。(參考書上用例)

2)并行進(jìn)程可動(dòng)態(tài)地申請(qǐng)資源和釋放資源(程序交互輸入申請(qǐng)或釋放資源數(shù)量),系統(tǒng)按各進(jìn)程

的申請(qǐng)動(dòng)態(tài)地分派資源。

3)每當(dāng)進(jìn)程動(dòng)態(tài)申請(qǐng)資源或釋放資源時(shí),模擬程序應(yīng)能及時(shí)顯示或打印各個(gè)進(jìn)程在此時(shí)刻的資

源分派表、系統(tǒng)可用資源量和安全序列等資源分派信息和安全檢查信息。

4)本次實(shí)驗(yàn)內(nèi)容(項(xiàng)目)的具體說明以及規(guī)定請(qǐng)參見實(shí)驗(yàn)指導(dǎo)書。

3實(shí)驗(yàn)環(huán)節(jié)與源程序

ttinclude<string.h>

ttinclude<stdio.h>

#deFineM5〃定義進(jìn)程數(shù)|

defineN3〃定義資源數(shù)

ttdeFineFalse0

ttdeFineTrue1

intMax[][3]=?7,5,3},{3,2,2>,<9,0,2},{2,2,2},{4,3,3>};

intfiualiable[]-<3,3,2>;〃系統(tǒng)可用資源

intAllocation[H3]=((0J,g,<2,O,6,<3,%2〉,〈2,1,1,<G,%2>;〃系統(tǒng)已分配資源

int還需要資源

intRequest[3];

uoidshowdata?!@示資源矩陣

<

inti,j;

printf(“系統(tǒng)可用的資源:\n”);

printFC'resouce:");

for(j=8;j<N;j++)

printf(“%d,”,Aualiable[j]);〃輸出分配資源

printf("\n");

printf(“各進(jìn)程的資源需求:\n");

For(i=0;i<M;i++)

{

printf("prtd:",i);

for(j=0;j<N;j++)

<

printf(TdJ,Max[i][j]);〃輸出最大需求資源數(shù)

>

printF("\n");

>

printf(“各進(jìn)程得到資源

For(i=0;i<M;i++)

<

printF(-pr%d:"?i);

For(j=0;j<N;j++)

printf〃輸出已分配資源數(shù)

printf("\n");

}

printf(“各進(jìn)程還需求資源:\n”);

for(i=0;i<M;i++)

<

printf("prtd:",i);

For(j=0;j<N;j++)

printf(“dJ.NeecHiUj]);〃輸出還需要資源數(shù)

printF(,,\n,i);

intchangdata(inti)〃進(jìn)行資源分配

<

intj;

For(j=0;j<M;j++)

Aualiable[j]=Aualiable[j]-Request[j];

Allocation[i][j]=Allocation[i][j]+Request[j];

Need[i][j]=Need[i][j]-Request[j];

>

return1;

>

intchkerr()〃安全性算法

{

intWork[3],Finish[M]=<0},tenp[M];

inti9k=0,m,apply;

intj;

Work[O]=Aualiable[0];

Work[1]=Aualiable[1];

Work[2]=Aualiable[2];

for(i=0;i<M;i++)

<

apply”;

For(j=8;j<3;j++)

<

if(Finish[i]==False&&Need[i][j]<=Work[j])

<

apply++;

if(apply==3)

<

For(m=0;m<3;n++)

Work[n]=Work[n]+Allocation[i][n]"/變分配數(shù)

Finish[i]=True;

temp[k]=i;

i=-1;

k++;

else

iF(Finish[i]==False)

<

if(i==M-1)

<

printf(“系統(tǒng)不安全\n”);〃不成功系統(tǒng)不安全

return-1;

break;

>

printf(“基統(tǒng)瓷遮分配成功,”);〃如果安全,輸出成功

printf("分配的序列:\n""

for(i=G;i<M;i++)〃輸出運(yùn)行進(jìn)程數(shù)組

<

printf("pr%d",temp[i]);

>

return0;

:oidshare()〃利用銀行家算法對(duì)申請(qǐng)資源對(duì)進(jìn)行判定

{

charch;

inti=0,i=0;

inti=0,j=0;

ch="y';

printf(“\n請(qǐng)輸入要求分配的浪源進(jìn)程號(hào)從(0to4):");

scanf(“%d”,&i);〃輸入須申請(qǐng)的資源號(hào)

printf(“請(qǐng)輸入進(jìn)程%d申請(qǐng)的資源:

For(j=0;j<3;j++)

{

printf("第%d個(gè)資源:",j+1);

scanf(Rd“,&Request[j]);〃輸入需要申請(qǐng)的資源

>

For(j=0;j<N;j++)

<

if(Request[j]>Need[i][j])〃判斷申請(qǐng)是否大于需求,若大于則出錯(cuò)

,printf(“進(jìn)程額申請(qǐng)的資源大于它需要的資源”,i);

printF("error?\n");

ch=*n';

break;

}

else

if(Request]j]>Aualiable[j])〃判斷申請(qǐng)是否大于當(dāng)前資源,若大于則

<〃出錯(cuò)

printf(“進(jìn)程申請(qǐng)的資源大于available”,i);

printf("error?\n");

ch="n';

break;

iF(ch=='y')

changdata(i);//

showdata();〃根

chkerr();〃根據(jù)翳lii鬻㈱

uoidReuision()

printf(“請(qǐng)選擇:1:修改進(jìn)程還需要的資源2:修改進(jìn)程可用資源”);

intchoicel;

scanF(,,%d",&choice1);

if(choice1==1)

<

printf("輸入要修改的資源號(hào)(0-4)”);

intp;

scanf("%d",&p);

printf(”輸入修改后進(jìn)程還需要的資源(1,1,1八n“);

scanF(',%d,%dAd",&Need[p][0],&Need[p][1],&Need[p][2]);

printfL經(jīng)修改后各進(jìn)程還需求資源:\心);

For(inta=0;a<M;a++)

<

printf("pr%d:",a);

For(intb=0;b<N;b++)

printf("%d,”,Need[a][b]);〃輸出還需要資源數(shù)

printfCXn");

>

>

if(choice1==2)

<

printf("輸入系統(tǒng)可用資源EX(1,1,1八n“);

scanF("%d,%d,%d",&Aualiable[0],&Aualiable[1],&Aualiable[2]);

printf(“經(jīng)修改后的系統(tǒng)可用資源為\n”);

for(intk=0;k<N;k++)

printf(aa%d,Aualiable[k]);

>

>

intmain()〃主函數(shù)

(

intchoice;

shuudata();〃顯示各種資源

chkerr();〃用銀行景靠在駒定系統(tǒng)是否安全

do

'printf(“\n輸入要進(jìn)行的操作1:分配資源2:修改資源3:離開“);

scanF(a'%d",&choice);

iF(choice==1)

<

share();

>

iF(choice==2)

<

Reuision();

>

if(choice==3)

<

showdata();

>

iF(choice==4)

break;

>

while((choice==1)||(choice==2)||(choice==3));

return1;

4測(cè)試數(shù)據(jù)與實(shí)驗(yàn)結(jié)果(可以抓圖粘貼)

(1)程序運(yùn)營(yíng)時(shí)選擇1,輸入進(jìn)程prl的請(qǐng)求向量(1,0,2)通過程序計(jì)算,資源分派成功。資源具體

分派過程如下圖所示。得出一個(gè)安全序列為pr1,pr3,pr0,pr2,pr4o

(2)進(jìn)程prO請(qǐng)求資源:prO發(fā)出請(qǐng)求向量⑵2,2),由于Request。不大于Need。,RequestO

不大于Available0。系統(tǒng)試探著為它分派資源。

由結(jié)果可知,系統(tǒng)不安全。則系統(tǒng)不分派資源,并回收系統(tǒng)預(yù)分派給prO的資源。

(3)程序運(yùn)營(yíng)時(shí)選擇1,進(jìn)行系統(tǒng)資源的分派。

(4)修改資源分派:

?J:\計(jì)算嘰操作系統(tǒng)\實(shí)驗(yàn)二\shiyan22\Debug\2.exe"。回

進(jìn)行的操作1:分配資源2:修改浪源3:黑,開2

選:滲散進(jìn)程還需要的資源:修改進(jìn)程可用資源

系:122

入統(tǒng)可用貫源

6

可用

4,源

操作

進(jìn)

6,的

4,要

入1

修改資源3:離開3

統(tǒng)

3,4,6,求

e:需

UC的

so程

進(jìn)

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論