2023年計算機操作系統(tǒng)實驗二銀行家算法實驗報告書_第1頁
2023年計算機操作系統(tǒng)實驗二銀行家算法實驗報告書_第2頁
2023年計算機操作系統(tǒng)實驗二銀行家算法實驗報告書_第3頁
2023年計算機操作系統(tǒng)實驗二銀行家算法實驗報告書_第4頁
2023年計算機操作系統(tǒng)實驗二銀行家算法實驗報告書_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

旗海工學浣奸算機學浣

實驗報告書

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

題目:銀行家算法___________

班級:______Z計121_______________

學號:__________________

姓名:薛慧君___________________

評語:

成績:指導教師:

批閱時間:年目H

操作系統(tǒng)原理實驗一一銀行家算法實驗報告

1目的與規(guī)定:

1)本實驗目的是通過使用銀行家算法實現(xiàn)系統(tǒng)資源的分派和安全性檢查模擬,提高學生對

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

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

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

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

相關實驗數(shù)據(jù)與運營結果)

5)于2023年5月10日以前提交本次實驗報告(含電子和紙質報告,由學習委員以班為單

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

2實驗內(nèi)容或題目

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

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

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

的申請動態(tài)地分派資源。

3)每當進程動態(tài)申請資源或釋放資源時,模擬程序應能及時顯示或打印各個進程在此時刻的資

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

4)本次實驗內(nèi)容(項目)的具體說明以及規(guī)定請參見實驗指導書。

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

ttinclude<string.h>

ttinclude<stdio.h>

#deFineM5〃定義進程數(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(“各進程的資源需求:\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(“各進程得到資源

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

<

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

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

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

printf("\n");

}

printf(“各進程還需求資源:\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)〃進行資源分配

<

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++)〃輸出運行進程數(shù)組

<

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

>

return0;

:oidshare()〃利用銀行家算法對申請資源對進行判定

{

charch;

inti=0,i=0;

inti=0,j=0;

ch="y';

printf(“\n請輸入要求分配的浪源進程號從(0to4):");

scanf(“%d”,&i);〃輸入須申請的資源號

printf(“請輸入進程%d申請的資源:

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

{

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

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

>

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

<

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

,printf(“進程額申請的資源大于它需要的資源”,i);

printF("error?\n");

ch=*n';

break;

}

else

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

<〃出錯

printf(“進程申請的資源大于available”,i);

printf("error?\n");

ch="n';

break;

iF(ch=='y')

changdata(i);//

showdata();〃根

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

uoidReuision()

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

intchoicel;

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

if(choice1==1)

<

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

intp;

scanf("%d",&p);

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

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

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

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輸入要進行的操作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測試數(shù)據(jù)與實驗結果(可以抓圖粘貼)

(1)程序運營時選擇1,輸入進程prl的請求向量(1,0,2)通過程序計算,資源分派成功。資源具體

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

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

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

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

(3)程序運營時選擇1,進行系統(tǒng)資源的分派。

(4)修改資源分派:

?J:\計算嘰操作系統(tǒng)\實驗二\shiyan22\Debug\2.exe"?;?/p>

進行的操作1:分配資源2:修改浪源3:黑,開2

選:滲散進程還需要的資源:修改進程可用資源

系:122

入統(tǒng)可用貫源

6

可用

4,源

操作

6,的

4,要

入1

修改資源3:離開3

統(tǒng)

3,4,6,求

e:需

UC的

so程

溫馨提示

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

評論

0/150

提交評論