首页 > 编程知识 正文

银行家算法计算过程,c语言银行取款编程

时间:2023-05-06 09:50:56 阅读:37302 作者:3714

《C语言实现银行家算法》可供会员共享,在线阅读。 更多相关《C语言实现银行家算法(8页珍藏版)》请在人人文库网搜索。

1、用c语言实现银行家算法(源代码、运行结果)一、源代码/*银行家算法10-22*/#include/函数声明voidinit(int*pcount,int * scount,) intneeeter voidprint(intpcount,int scount,int Allocation1010,int Need1010,int Available10 ); intrequs(intscount,int Ne请求编号,int请求10,int Allocation1010,int Ne )。

2、ed1010、int Available10; 语音打印2 (intisreque,int number ); voidyhj(intnumber,int pcount,int scount,int Allocation1010,int Need1010,int Available10 ); intmain(intconti=1; /0结束int pcount=0,scount=0; /进程数和资源数int Allocation1010; int Need1010; int Available10; /分配矩阵Allocation需求矩阵Need可以利用资源向量Available。

3、int number=0,请求10=0; /用于记录进程的号码请求向量while (真) init ) scount、scount、Allocation、Need、Available ); /调用初始化函数print(pcount、scount、Allocation、Need、Available ); /打印函数调用intisreque=requs(scount、number、Request、Allocation、Need、Available ); /调用是否请求函数if (isreque=1)将资源分配给printf(n ) n进程P%d后,资源分配如下: n,number );

4、打印(计数、计数、分配、新建、可用); /调用打印函数yhj(number、pcount、scount、Allocation、Need、Available ); /银行家算法函数elseif(isreque=0) yhj ) number,pcount,scount,Allocation,Need,Available ); /银行家算法函数调用elseprint2(isreque,number ); printf (继续吗? 退出0并继续Scanf(%d,conti ); printf(n; if(conti=0) break; 打印(。

五、n; 返回0; (初始化函数) voidinit(int*pcount、int * scount、int Allocation1010、int Need1010、int avaiability ),例如进程数、资源数和配置矩阵printf (进程数: 扫描(% d,p ); *pcount=p; printf (资源数: 扫描(% d,s ); *计数=s; 打印机(allocation n; for(I=0; I=0numberneednumberj(for(j=0; Javailablej (恢复。

6、rn 4; 返回2; /判断请求向量是否合理:是否小于可用资源向量bool isrun2=true; for(j=0; javailablej (返回3; /如果请求向量合理则分配资源/向被请求的进程分配资源for(j=0; jWorkj ) iscan=false; /printf (进程P%d无法运行n,I; 布雷克; if(Iscan=true ) Finishi=1; printf(p%d,I ); /在释放此进程之前,资源数量workfor(j=0; JS计数; j ) printf(=,Workj ); printf (; /此进程要求变量needfor(j=0; jscoun。

七、t; j ) printf(=,Needij ); printf (; /此进程占用的资源数allocationfor(j=0; JS计数; j ) printf(=,Allocationij ); printf (; for(j=0; JS计数; j ) /流程执行完成,工作向量资源数量增加Workj =Allocationij; printf (; /安全序列/printf(k=%d,i=%dn,k,I ); xk=i; k; /释放此进程后,资源数量workallocationfor(j=0; JS计数; j ) printf(=,Workj ); printf(t1; P。

8、rintf(n ); /如果可用资源不能满足进程的需要/例如,n=1 done1,则退出done=0; for(I=0; IP计数; I ) if (完成=1) done; if(Donen ) printf )系统不安全、P%d等待nn、number ); 布雷克; ELSEif(done=pcount ) printf )系统安全性,存在安全序列); for(I=0; IP计数; I ) if(I=pcount-1 ) printf (p % d,xi ); ELSEprintf(p%d,xi ); printf(nn; 布雷克; n; 二、运行结果注:安全序列不一定唯一。 该算法只能输出一个安全序列。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。