操作系统实验二银行家算法实验报告Word格式.docx

上传人:b****1 文档编号:5011571 上传时间:2023-05-04 格式:DOCX 页数:14 大小:222.30KB
下载 相关 举报
操作系统实验二银行家算法实验报告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

intWork[100]={0};

//存放系统可提供资源

intM=100;

//作业的最大数为100

intN=100;

//资源的最大数为100

//显示资源矩阵

voidshowdata()

{

inti,j;

printf("

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

\n"

);

//显示表头

MaxAllocationNeedAvaliable\n"

PCB"

//显示作业名称

for(j=0;

j<

4;

j++){

for(i=0;

i<

N;

i++)

printf("

%c"

name[i]);

printf("

"

}

//显示当前作业资源分配情况

for(i=0;

M;

i++){

%d"

i);

for(j=0;

j++)

%d"

Max[i][j]);

Allocation[i][j]);

Need[i][j]);

if(i==0){

for(j=0;

printf("

Avaliable[j]);

}

}

//进行资源分配

intchangdata(inti)

{

intj;

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];

return1;

//安全性算法

intsafe()

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

intflag=0;

Work[i]=Avaliable[i];

安全性检查\n"

WorkNeedAllocationWork+AllocationFinish\n"

i++){

apply=0;

if(Finish[i]==False&

&

Need[i][j]<

=Work[j])

{

apply++;

if(apply==N)

{

printf("

for(d=0;

d<

d++)

printf("

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){

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];

\n系统进入不安全状态!

此时系统不分配资源!

//不成功系统不安全

return0;

\n此时系统是安全的!

//如果安全,输出成功

安全序列为:

"

i<

M;

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

{

%d"

temp[i]);

if(i<

M-1)

->

return0;

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

voidshare()

charch;

inti=0,j=0;

ch='

y'

\n请输入要求分配的资源进程号(0-%d):

M-1);

scanf("

&

i);

//输入须申请的资源号

\n请输入进程%d申请的资源:

%c:

name[j]);

scanf("

Request[j]);

//输入需要申请的资源

if(Request[j]>

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

{

\n进程%d申请的资源大于它需要的资源"

分配不合理,不予分配!

ch='

n'

break;

}else{

if(Request[j]>

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

{//出错

\n进程%d申请的资源大于系统现在可利用的资源"

分配出错,不予分配!

ch='

break;

if(ch=='

){

changdata(i);

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

showdata();

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

safe();

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

//主函数

intmain()

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

charming;

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

n);

N=n;

n;

资源%d的名称:

i+1);

%s"

ming);

name[i]=ming;

资源的数量:

number);

Avaliable[i]=number;

请输入作业的数量:

m);

M=m;

\n请输入各进程的最大需求量(%d*%d矩阵)[Max]:

m,n);

m;

scanf("

Max[i][j]);

do{

flag=0;

\n请输入各进程已经申请的资源量(%d*%d矩阵)[Allocation]:

scanf("

Allocation[i][j]);

if(Allocation[i][j]>

Max[i][j])

flag=1;

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

if(flag)

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

\n\n"

}while(flag);

showdata();

//显示各种资源

safe();

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

while

(1){

if(t==1){

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

share();

t=0;

elsebreak;

\n是否继续银行家算法?

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

t);

实验结果截图:

运行程序:

输入相应数据并完成首次自检:

进程1请求资源Request(1,0,2):

进程4请求资源Request(3,3,0):

进程0请求资源Request(0,2,0):

 

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

当前位置:首页 > 职业教育 > 其它

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

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