银行家算法实验报告Word格式文档下载.docx

上传人:b****2 文档编号:6063129 上传时间:2023-05-06 格式:DOCX 页数:14 大小:250.47KB
下载 相关 举报
银行家算法实验报告Word格式文档下载.docx_第1页
第1页 / 共14页
银行家算法实验报告Word格式文档下载.docx_第2页
第2页 / 共14页
银行家算法实验报告Word格式文档下载.docx_第3页
第3页 / 共14页
银行家算法实验报告Word格式文档下载.docx_第4页
第4页 / 共14页
银行家算法实验报告Word格式文档下载.docx_第5页
第5页 / 共14页
银行家算法实验报告Word格式文档下载.docx_第6页
第6页 / 共14页
银行家算法实验报告Word格式文档下载.docx_第7页
第7页 / 共14页
银行家算法实验报告Word格式文档下载.docx_第8页
第8页 / 共14页
银行家算法实验报告Word格式文档下载.docx_第9页
第9页 / 共14页
银行家算法实验报告Word格式文档下载.docx_第10页
第10页 / 共14页
银行家算法实验报告Word格式文档下载.docx_第11页
第11页 / 共14页
银行家算法实验报告Word格式文档下载.docx_第12页
第12页 / 共14页
银行家算法实验报告Word格式文档下载.docx_第13页
第13页 / 共14页
银行家算法实验报告Word格式文档下载.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

银行家算法实验报告Word格式文档下载.docx

《银行家算法实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《银行家算法实验报告Word格式文档下载.docx(14页珍藏版)》请在冰点文库上搜索。

银行家算法实验报告Word格式文档下载.docx

//请求资源向量

inttemp[100]={0};

//存放安全序列

intWork[100]={0};

//存放系统可提供资源

intp[100]={0};

intq[100][100]={0};

intz[100][100]={0};

intM=100;

//作业的最大数为100

intN=100;

//资源的最大数为100

intgg=1;

voidshowdata()//显示资源矩阵

{

inti,j;

cout<

<

endl<

"

此时刻的资源分配情况为:

endl;

MaxAllocationNeedAvaliable"

进程名"

;

for(j=0;

j<

4;

j++){

for(i=0;

i<

N;

i++)

cout<

name[i]<

"

cout<

}

for(i=0;

M;

i++){

for(j=0;

j++)

Max[i][j]<

Allocation[i][j]<

Need[i][j]<

if(i==0)

{

for(j=0;

cout<

Avaliable[j]<

//输出分配资源

}

}

intchangdata(inti)//进行资源分配

{

intj;

for(j=0;

{

Avaliable[j]=Avaliable[j]-Request[j];

//可用资源因为被分配出去而减少

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

//占用资源因为被分配进来而增多

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

//所需要的资源因为被分配到所以减少

return1;

intsafe()//安全性算法

inti,d,k=0,m,h,s,apply,Finish[100]={0};

intflag=0;

Work[i]=Avaliable[i];

安全性检查"

WorkNeedAllocationWork+AllocationFinish"

//输出矩阵的主要组成名

//输出各个进程的名称

for(h=0;

h<

h++)

for(s=0;

s<

s++)

name[s]<

{

apply=0;

//进程已经被满足的个数

{

if(Finish[i]==False&

&

=Work[j])//如果进程还没有被满足,并且所需的资源少于系统拥有的资源

{

apply++;

if(apply==N)//如果全部得到满足

{

cout<

for(d=0;

d<

d++)

cout<

Work[d]<

Need[i][d]<

Allocation[i][d]<

for(m=0;

m<

m++)//变分配数

{

Work[m]=Work[m]+Allocation[i][m];

Work[m]<

}

Finish[i]=True;

temp[k]=i;

true"

i=-1;

k++;

flag++;

}

}

if(Finish[i]==False)//如果进程i不能满足,则说明预分配失败

for(j=0;

j++)//因为预分配失败,所以把预分配表作废,预分配资源全部归还

{

Avaliable[j]=Avaliable[j]+Request[j];

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

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

系统进入不安全状态!

此时系统不分配资源!

//不成功,系统不安全

return0;

此时系统是安全的!

//如果安全,输出成功

安全序列为:

i++)//输出运行进程数组

temp[i];

if(i<

M-1)cout<

->

return0;

voidshare()//利用银行家算法对申请资源对进行判定

charch;

inti=0,j=0;

ch='

y'

请输入要求分配的资源进程号(0-"

M-1<

):

cin>

>

i;

//输入须申请的资源号

请输入进程"

申请的资源:

name[j]<

:

cin>

Request[j];

//输入需要申请的资源

if(Request[j]>

Need[i][j])//判断申请是否大于需求,若大于则出错

进程"

申请的资源大于它需要的资源"

分配不合理,不予分配!

ch='

n'

break;

else{

if(Request[j]>

Avaliable[j])//判断申请是否大于当前资源,若大于则出错

进程"

申请的资源大于系统现在可利用的资源"

分配出错,不予分配!

ch='

break;

if(ch=='

){

changdata(i);

//根据进程需求量变换资源

showdata();

//根据进程需求量显示变换后的资源

safe();

//根据进程需求量进行银行家算法判断

intmain()//主函数

intt=1,i,j,number,choice,m,n,flag;

charming;

*****************银行家算法的设计与实现*****************"

请首先输入系统可供资源种类的数量:

n;

N=n;

资源"

i+1<

的名称:

ming;

name[i]=ming;

资源的数量:

number;

Avaliable[i]=number;

请输入作业的数量:

m;

M=m;

请输入各进程的最大需求量("

*"

n<

矩阵)[Max]:

cin>

Max[i][j];

do{

flag=0;

请输入各进程已经申请的资源量("

矩阵)[Allocation]:

cin>

Allocation[i][j];

if(Allocation[i][j]>

Max[i][j])

flag=1;

Need[i][j]=Max[i][j]-Allocation[i][j];

if(flag)

申请的资源大于最大需求量,请重新输入!

\n"

while(flag);

showdata();

//显示各种资源

safe();

//用银行家算法判定系统是否安全

while

(1){

if(t==1)

利用银行家算法预分配资源"

share();

t=0;

elsebreak;

是否继续银行家算法?

(按1键继续,按其它任意键退出):

t;

三、程序执行结果:

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 中考

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2