ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:16.33KB ,
资源ID:6691366      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6691366.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(亲测银行家和随机算法在一个主函数里.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

亲测银行家和随机算法在一个主函数里.docx

1、亲测银行家和随机算法在一个主函数里#include string.h #include iostreamusing namespace std;#define FALSE 0 #define TRUE 1 #define W 10#define R 20int M ; /总进程数int N ; /资源种类 int ALL_RESOURCEW;/各种资源的数目总和int MAXWR; /M个进程对N类资源最大资源需求量int AVAILABLER; /系统可用资源数int ALLOCATIONWR; /M个进程已经得到N类资源的资源量int NEEDWR; /M个进程还需要N类资源的资源量int

2、 RequestR; /请求资源个数void showdata() /函数showdata,输出资源分配情况 int i,j; cout各种资源的总数量(all):endl; cout ; for (j=0;jN;j+)cout 资源j: ALL_RESOURCEj; coutendlendl; cout系统目前各种资源可用的数为(available):endl; cout ; for (j=0;jN;j+)cout 资源j: AVAILABLEj; coutendlendl; cout 各进程还需要的资源量(need):endlendl; cout 资源 资源 资源endl;for (i=0

3、;iM;i+) for (i=0;iM;i+) cout进程pi: ; for (j=0;jN;j+)coutNEEDij ; coutendl; coutendl; cout 各进程已经得到的资源量(allocation): endlendl; cout 资源 资源 资源endl;for (i=0;iM;i+) cout进程pi: ; for (j=0;jN;j+)coutALLOCATIONij ; coutendl; coutendl; ; void changdata(int k) /函数changdata,改变可用资源和已经拿到资源和还需要的资源的值 int j; for (j=0;

4、jN;j+) AVAILABLEj=AVAILABLEj-Requestj; ALLOCATIONkj=ALLOCATIONkj+Requestj; NEEDkj=NEEDkj-Requestj; ; void rstordata(int k) /函数rstordata,恢复可用资源和已经拿到资源和还需要的资源的值 int j; for (j=0;jN;j+) AVAILABLEj=AVAILABLEj+Requestj; ALLOCATIONkj=ALLOCATIONkj-Requestj; NEEDkj=NEEDkj+Requestj; ; int chkerr(int s) /函数chk

5、err,检查是否安全 int WORK,FINISHW,tempR; int i,j,k=0; for(i=0;iM;i+)FINISHi=FALSE; for(j=0;jN;j+) WORK=AVAILABLEj; i=s; while(iM) if (FINISHi=FALSE&NEEDij=WORK) WORK=WORK+ALLOCATIONij; FINISHi=TRUE; tempk=i; k+; i=0; else i+; for(i=0;iM;i+) if(FINISHi=FALSE) coutendl; cout 系统不安全! 本次资源申请不成功!endl; coutendl;

6、 return 1; coutendl; cout 经安全性检查,系统安全,本次分配成功。endl; coutendl; cout 本次安全序列:; for(i=0;iM;i+)coutptempi; coutendlendl;return 0; int chkerr2(int s) /函数chkerr2,检查是否安全 int WORK,FINISHW,tempR; int i,j,k=0; for(i=0;iM;i+)FINISHi=FALSE; for(j=0;jN;j+) WORK=AVAILABLEj; i=s; while(iM) if (FINISHi=FALSE&NEEDij=W

7、ORK) WORK=WORK+ALLOCATIONij; FINISHi=TRUE; tempk=i; k+; i=0; else i+; for(i=0;iM;i+) if(FINISHi=FALSE) coutendl; cout 本次资源申请成功!但系统不安全! endl; coutendl; return 1; coutendl; cout 经安全性检查,系统安全,本次分配成功。endl; coutendl; cout 本次安全序列:; for(i=0;iM;i+)coutptempi; coutendlendl;return 0; void bank() /银行家算法 int i=0

8、,j=0; char flag=Y; while(flag=Y|flag=y) i=-1; while(i=M) cout 请输入需申请资源的进程号(从P0到PM-1,否则重输入!):; couti; if(i=M)cout 输入的进程号不存在,重新输入!endl; cout 请输入进程Pi申请的资源数:endl; for (j=0;jN;j+) cout 资源jRequestj; if(RequestjNEEDij) cout 进程Pi申请的资源数大于进程Pi还需要j类资源的资源量!; cout申请不合理,出错!请重新选择!endlAVAILABLEj) cout 进程Pi申请的资源数大于系

9、统可用j类资源的资源量!; cout申请不合理,出错!请重新选择!endlendl; flag=N; break; if(flag=Y|flag=y) changdata(i); if(chkerr(i) rstordata(i); showdata(); else showdata(); else showdata(); coutendl; coutflag; void randomallocation() /随机分配算法int i=0,j=0; char flag=Y; while(flag=Y|flag=y) i=-1; while(i=M) cout 请输入需申请资源的进程号(从P0到

10、PM-1,否则重输入!):; couti; if(i=M)cout 输入的进程号不存在,重新输入!endl; cout 请输入进程Pi申请的资源数:endl; for (j=0;jN;j+) cout 资源jRequestj; if(RequestjAVAILABLEj) cout 进程Pi申请的资源数大于系统可用j类资源的资源量!; cout申请不合理,出错!请重新选择!endlendl; flag=N; break; if(flag=Y|flag=y) changdata(i); showdata(); chkerr2(i); coutflag; void main() /主函数 cout

11、endl;cout 欢迎使用本系统! endl;cout endl;cout=endl;int i=0,j=0,p; cout输入总进程数:M;cout输入总资源种类:N;cout请输入各类总资源数(all_resource):endl;for(i=0;iALL_RESOURCEi;cout依次输入各进程所需要的最大资源数量(max):endl;for (i=0;iM;i+) for (j=0;jMAXij; if (MAXijALL_RESOURCEj) coutendl占有资源超过了声明的该资源总数,请重新输入ALL_RESOURCEj); cout依次输入各进程已经占据的资源数量(all

12、ocation):endl;for (i=0;iM;i+) for (j=0;jALLOCATIONij; if (ALLOCATIONijMAXij) coutendl占有资源超过了声明的最大资源,请重新输入MAXij); /初始化资源数量 for (i=0;iN;i+) p=ALL_RESOURCEi; for (j=0;jM;j+) p-=ALLOCATIONji;/减去已经被占据的资源 AVAILABLEi=p; if(AVAILABLEi0) AVAILABLEi=0; for (i=0;iM;i+) for(j=0;jN;j+) NEEDij=MAXij-ALLOCATIONij;showdata();docoutendl1-随机分配算法 2-银行家算法endl;coutendli;if(i=2) /m=2表赋值,m=2表判断bank();else randomallocation();while(!(i=1)|(i=2);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1