




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#include <string.h>#include <stdio.h> #include <iostream.h>#define FALSE 0 #define TRUE 1#define W 10 #define R 10int M ; / 总进程数int N ; / 资源种类 int ALL_RESOURCEW;/ 各种资源的数目总和int MAXWR; / M个进程对N类资源最大资源需求量int AVAILABLER; / 系统可用资源数int ALLOCATIONWR; / M个进程已经得到N类资源的资源量int NEEDWR; / M个进程还需
2、要N类资源的资源量int RequestR; / 请求资源个数void output() int i,j; cout<<endl<<"-"<<endl; cout<<"各种资源的总数量:"<<endl; for (j=0;j<N;j+) cout<<" 资源"<<j<<": "<<ALL_RESOURCEj; cout<<endl; cout<<"-"<
3、<endl; cout<<"目前各种资源可利用的数量为:"<<endl; for (j=0;j<N;j+) cout<<" 资源"<<j<<": "<<AVAILABLEj; cout<<endl; cout<<"-"<<endl; cout<<"各进程还需要的资源数量:"<<endl<<endl; for(i=0;i<N;i+) co
4、ut<<" 资源"<<i; cout<<endl; for (i=0;i<M;i+) cout<<"进程"<<i<<": " for (j=0;j<N;j+) cout<<NEEDij<<" " cout<<endl; cout<<endl; cout<<"-"<<endl; cout<<"各进程已经得到的资源量: &q
5、uot;<<endl<<endl; for(i=0;i<N;i+) cout<<" 资源"<<i; cout<<endl; for (i=0;i<M;i+) cout<<"进程"<<i<<": " for (j=0;j<N;j+) cout<<ALLOCATIONij<<" " cout<<endl; cout<<endl; void distribute
6、(int k) int j; for (j=0;j<N;j+) AVAILABLEj=AVAILABLEj-Requestj; ALLOCATIONkj=ALLOCATIONkj+Requestj; NEEDkj=NEEDkj-Requestj; void restore(int k) int j; for (j=0;j<N;j+) AVAILABLEj=AVAILABLEj+Requestj; ALLOCATIONkj=ALLOCATIONkj-Requestj; NEEDkj=NEEDkj+Requestj; int check() int WORKR,FINISHW; int
7、 i,j; for(j=0;j<N;j+) WORKj=AVAILABLEj; for(i=0;i<M;i+) FINISHi=FALSE; for(i=0;i<M;i+) for(j=0;j<N;j+) if(FINISHi=FALSE&&NEEDij<=WORKj) WORKj=WORKi+ALLOCATIONij; FINISHi=TRUE; for(i=0;i<M;i+) if(FINISHi=FALSE) cout<<endl; cout<<" 系统不安全! 本次资源申请不成功!"<
8、<endl; cout<<endl; return 1; else cout<<endl; cout<<" 经安全性检查,系统安全,本次分配成功。"<<endl; cout<<endl; return 0; void bank() / 银行家算法 int i=0,j=0; char flag='Y' while(flag='Y'|flag='y') i=-1; while(i<0|i>=M) cout<<"-"<
9、<endl; cout<<endl<<" 请输入需申请资源的进程号:" cin>>i; if(i<0|i>=M) cout<<" 输入的进程号不存在,重新输入!"<<endl; cout<<" 请输入进程"<<i<<"申请各类资源的数量:"<<endl; for (j=0;j<N;j+) cout<<" 资源"<<j<<"
10、;: " cin>>Requestj; if(Requestj>NEEDij) / 若请求的资源数大于进程还需要i类资源的资源量j cout<<endl<<" 进程"<<i<<"申请的资源数大于进程"<<i<<"还需要"<<j<<"类资源的数量!" cout<<" 若继续执行系统将处于不安全状态!"<<endl; flag='N' b
11、reak; else if(Requestj>AVAILABLEj) / 若请求的资源数大于可用资源数 cout<<endl<<" 进程"<<i<<"申请的资源数大于系统可用"<<j<<"类资源的数量!" cout<<" 若继续执行系统将处于不安全状态!"<<endl; flag='N' break; if(flag='Y'|flag='y') distribute(
12、i); / 调用change(i)函数,改变资源数 if(check() / 若系统安全 restore(i); / 调用restore(i)函数,恢复资源数 output(); / 输出资源分配情况 else / 若系统不安全 output(); / 输出资源分配情况 else / 若flag=N|flag=n cout<<endl; cout<<" 是否继续银行家算法演示,按'Y'或'y'键继续,按'N'或'n'键退出演示: " cin>>flag; void versi
13、on() cout<<endl; cout<<"t 银 行 家 算 法(2013811104张素虎) "<<endl; void main() / 主函数 int i=0,j=0,p; version(); getchar(); cout<<endl<<"请输入总进程数:" cin>>M; cout<<endl<<"-"<<endl; cout<<"请输入总资源种类:" cin>>N;
14、 cout<<endl<<"-"<<endl; cout<<"请输入各类资源总数:(需要输入数为"<<N<<"个)" for(i=0;i<N;i+) cin>>ALL_RESOURCEi; cout<<endl<<"-"<<endl; cout<<"输入各进程所需要的各类资源的最大数量:(需要输入数为"<<M*N<<"个)&q
15、uot; for (i=0;i<M;i+) for (j=0;j<N;j+) do cin>>MAXij; if (MAXij>ALL_RESOURCEj) cout<<endl<<"占有资源超过了声明的该资源总数,请重新输入"<<endl; while (MAXij>ALL_RESOURCEj); cout<<endl<<"-"<<endl; cout<<"输入各进程已经占据的各类资源的数量:(需要输入数为"<<M *N<<"个)" for (i=0;i<M;i+) for (j=0;j<N;j+) do cin>>ALLOCATIONij; if (ALLOCATIONij>MAXij) cout<<endl<<"占有资源超过了声明的最大资源,请重新输入"<<endl; while (ALLOCATIONij
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年智能家居系统配备下的二手房交易物业服务合同范本
- 2025年度油气田采矿权出让合同范本
- 2025年度爆破拆除工程安全生产责任及事故赔偿合同
- 2025年免疫治疗对自身免疫性多发性硬化症治疗的应用进展报告
- 2025房产代持及不动产交易保障服务合同
- 2025版聘用外籍IT专家合同范本
- 2025年度绿色建筑推广房屋代销合作协议
- 2025年拆墙工程智能化管理系统租赁合同
- 2025年度国有企业财务共享服务中心升级改造合同
- 2025年度企业高级管理人员综合素质提升协议
- 眼的生物化学讲义
- GB/T 3098.15-2023紧固件机械性能不锈钢螺母
- 陈琦《教育心理学》课件
- 封头理论重量计算公式
- 护理副高职称答辩5分钟简述范文
- (3)-2-1-药物的跨膜转运
- 幼小衔接资料合集汇总
- 八年级数学平面直角坐标系测试题
- GB/T 28575-2020YE3系列(IP55)三相异步电动机技术条件(机座号63~355)
- 储油罐有限空间作业安全技术措施表
- 传媒公司员工劳动合同(标准版)
评论
0/150
提交评论