云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 银行家算法的模拟实现

银行家算法的模拟实现

  • 62 次阅读
  • 3 次下载
  • 2025/5/6 14:32:24

}

}while(tmp==0);

void proc_require0(void) {

int j,tmp;

require0: }

/*请求资源超过需求资源*/ int over_need() { }

/*请求资源超过可利用资源*/ int over_avail() {

int j;

for(j=0;j

if(request[serial_proc][j]>available[j]) int j;

for(j=0;j

if(request[serial_proc][j]>need[serial_proc][j]) { }

printf(\请求资源超过需求资源\\n\ return 1;

printf(\现在第?进程请求\\n\ scanf(\

if (serial_proc<0 ||serial_proc>=n_proc)

{ }

printf(\进程号非法(越界)\\n\ goto require0;

tmp=0;

for(j=0;j

tmp+=need[serial_proc][j];

if (!tmp) { }

printf(\对[%d]进程,各资源要求\\n\ for(j=0;j

scanf(\ printf(\该进程处于完成状态\\n\ goto require0;

printf(\

return 0;

}

{ }

printf(\请求资源超过可利用资源\\n\ return 1;

return 0;

/*资源申请成功*/

int apply_success(int be_need,int be_avail) {

if (be_need==0 && be_avail==0)

{

return 1; }

0;

return }

/*安全性检查*/ int check_security() { L2:

for(i=0;i

if(finish[i]==0) {

tmp=1;

for(j=0;j

if(need[i][j]>work[j]) { }

tmp=0; break;

/*没有进行安全检查*/

int i,j,tmp;

for(j=0;j

work[j]=available[j];

for(i=0;i

finish[i]=0;

t=0;

if(!tmp)

continue;

else {

for(j=0;j

work[j]+=allocation[i][j];

finish[i]=1; tmp=0;

for(j=0;j

}

}

tmp+=need[i][j];

if(tmp)

index[t++]=i;

goto L2; }

for(j=0;j

if(finish[j]==0)

return 0;

return 1;

/*银行家算法主体*/ void banker() { int

allocation_t[10],available_t[10],need_t[10];/*临时变量*/

int tmp; int

j;

/*保留当前的资源分配*/ for(j=0;j

{ }

available_t[j]=available[j];

allocation_t[j]=allocation[serial_proc][j]; need_t[j]=need[serial_proc][j];

/*修改available,allocation,need矩阵*/ for(j=0;j

if(check_security(type_src,n_proc))

{ }

tmp=0;

for(j=0;j

tmp+=need[serial_proc][j];

available[j]-=request[serial_proc][j];

need[serial_proc][j]-=request[serial_proc][j]; allocation[serial_proc][j]+=request[serial_proc][j];

if(!tmp)

for(j=0;j

available[j]+=allocation[serial_proc][j];

else {

for(j=0;j

}

}

allocation[serial_proc][j]=allocation_t[j]; need[serial_proc][j]=need_t[j]; available[j]=available_t[j]; }

int finish_all(void) { }

/*结果输出*/ void output() { int i,j;

printf(\安全序列输出格式:[进程号,进程数]\\n\ for(i=0;i

printf(\

printf(\依次为:最大需求矩阵,已分配矩阵,需求矩阵,可利用矩阵\\n\ for(i=0;i

printf(\

printf(\ for(i=0;i

for(j=0;j

if(need[i][j]!=0)

return 1;

int i,j;

return 0;

for(j=0;j

printf(\

printf(\

for(j=0;j

printf(\

printf(\

for(j=0;j

printf(\

printf(\ if (i==serial_proc)

for(j=0;j

printf(\

printf(\

搜索更多关于: 银行家算法的模拟实现 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

} }while(tmp==0); void proc_require0(void) { int j,tmp; require0: } /*请求资源超过需求资源*/ int over_need() { } /*请求资源超过可利用资源*/ int over_avail() { int j; for(j=0;javailable[j]) int j; for(j=0;j

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com