银行家算法的模拟实现

2026/4/25 21:38:04

}

}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(\


银行家算法的模拟实现.doc 将本文的Word文档下载到电脑
搜索更多关于: 银行家算法的模拟实现 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219