银行家算法课程设计源码_第1页
银行家算法课程设计源码_第2页
银行家算法课程设计源码_第3页
银行家算法课程设计源码_第4页
银行家算法课程设计源码_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论