




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、多资源银行家算法多资源银行家算法1 .设计思想当进程申请系统多种资源时,并且每种资源可以申请多个时,为了避免死锁,采用多资源的银行家算法。本程序设计思想是采用试分配机制,当有请求提出时,先判读请求是否合理,再试将资源分给它,然后检查系统是否安全,若安全则将试分配作为实际分配;若安全则作废试分配,恢复原来的系统状态若安全则将试分配作为实际分配。2 .数据结构的说明intM;资源种类intP;进程数目intflag;structprocess/虚拟PCBcharname10;/进程名int*H;已分配资源int*N;尚需资源int*R;申请资源intfinish;H,R,N经过系统初始化后各自指向
2、一个长度为M的intM数组,数组的每一位代表一种资源process*PRO=newprocessP;o进程由通过动态申请后由指针向的数组实现。3各模块的算法流程图初始化系统资源种类,进程个数以及各进程使用,即申请资源情况PROCEnumber.Ri<=PROCEnumber.Ni)4程序清单#include"iostreamusingnamespacestd;intM;资源种类intP;进程数目intflag;structprocess/虚拟PCBcharname10;/进程名int*H;已分配资源int*N;尚需资源int*R;申请资源intfinish;voidPRIN(p
3、rocess*PROCE,int*source,intM,intP)/y为第几次输出cout<<”*<<en*”dl;cout«"进程名以分配设备尚需设备当前可用设备"«endl;cout«"设备编号for(intq=0;q<3;q+)for(intl=0;l<M;l+)cout«l«"H.cout«"";)cout«endl;cout«"M«endl;inti;intpp=O;flag=O;for(
4、inte=O;e<P;e+)if(PROCEe.finish=0)II.pp=1;/有进程得到满足)有输出cout«"cout<<PROCE;cout<<""for(i=0;i<M;i+)cout<<PROCEe.Hi<<""cout<<""for(i=0;i<M;i+)cout<<PROCEe.Ni<<""cout<<""if(flag=1)cout
5、<<endl;if(flag=0)for(i=0;i<M;i+)cout<<sourcei<<""flag=1;cout<<endl;if(pp=0)cout<<"ii.for(i=0;i<M;i+)cout<<sourcei<<""cout<<endl;cout<<”*<<en*”dl;intISSAFE(process*PROCE,int*source,intM,intP,int*no)/试分配inti=0,j
6、=0,k=0;for(inth=0;h<P;h+)for(j=0;j<P;j+)if(PROCEj.finish=0)/进程PROCEi尚未完成for(k=0;k<M;k+)if(PROCEj.Nk>sourcek)break;)if(k=M)for(inth=0;h<M;h+)sourceh+=PROCEj.Hh;PROCEj.finish=1;noi=j;/进程完成序列PRIN(PROCE,source,M,P);cout<<”请按任意键继续:"i+;getchar();)if(i=P)return1;/安全)return0;/不安全in
7、tTEST(process*PRO,int*SOURCE,intM,intP)intnumber=0;int*no;no=newintP;/安全序列for(intk=0;k<P;k+)nok=0;inti=0,j=0;process*PROCE=newprocessP;int*source;source=newintM;for(i=0;i<M;i+)sourcei=SOURCEi;for(i=0;i<P;i+)PROCEi.H=newintM;PROCEi.N=newintM;PROCEi.R=newintM;PROCEi.finish=0;for(j=0;j<M;j+
8、)PROCEi.Hj=PROi.Hj;PROCEi.Nj=PROi.Nj;PROCEi.Rj=PROi.Rj;for(i=0;i<P;i+)for(j=0;j<10;j+)PROCEj=PROj;PRIN(PROCE,source,M,P);getchar();docout<<"请输入请求资源的进程编号:";cin>>number;if(number>=P|number<0)cout<<"输入进程编号非法!"<<endl;while(number>=M|
9、number<0);cout<<”请输入进程"<<number<<"请求的各资源数目:"<<endl;/输入请求序列cout<<"资源号为:"for(j=0;j<M;j+)cout<<j<<""cout<<endl;II.cout<<"for(j=0;j<M;j+)cin>>PROCEnumber.Rj;*算法*for(i=0;i<M;i+)if(PROCEnumber.R
10、i>PROCEnumber.Ni)cout<<"出错!R"<<i<<"大于"<<"P"<<i<<"尚需资源"<<endl;return0;for(i=0;i<M;i+)if(PROCEnumber.Ri>sourcei)cout<<"出错!R"<<i<<"大于"<<"系统可用资源"<<endl;f
11、or(i=0;i<M;i+)sourcei=sourcei-PROCEnumber.Ri;PROCEnumber.Hi=PROCEnumber.Hi+PROCEnumber.Ri;PROCEnumber.Ni=PROCEnumber.Ni-PROCEnumber.Ri;PRIN(PROCE,source,M,P);getchar();intFLAG=0;FLAG=ISSAFE(PROCE,source,M,P,no);试分配判断是否安全if(FLAG=1)cout<<"安全序列:"<<endl;for(i=0;i<P;i+)cout<
12、;<noi<<""cout<<endl;if(FLAG=0)cout<<"警告:当前状态不安全!不存在安全序列!"<<endl;free(source);free(PROCE);voidmain()系统初始化|/*cout<<"请输入进程数:";cin>>P;cout<<"请输入系统总的资源种类数:";cin>>M;process*PRO=newprocessP;inti=0,j=0;for(i=0;i<P;
13、i+)PROi.H=newintM;PROi.N=newintM;PROi.R=newintM;PROi.finish=0;for(j=0;j<M;j+)PROi.Hj=0;PROi.Nj=0;PROi.Rj=0;*输入系统初态*cout<<"输入系统初态"<<endl;for(i=0;i<P;i+)cout<<"请输入进程"<<i<<"名称:“;cin>>PRO;cout<<"请输入进程"<<i<&
14、lt;"已获得的各资源数目"<<endl;cout<<"资源号:";for(j=0;j<M;j+)cout<<j<<""cout<<endl;cout<<""for(j=0;j<M;j+)cin>>PROi.Hj;cout<<"请输入进程"<<i<<"尚需分配的各资源数目"<<endl;cout«"资源号:&quo
15、t;for(j=0;j<M;j+)cout«j«"cout«endl;cout«"for(j=0;j<M;j+)cin»PROi.Nj;)int*SOURCE=newintM;/当前系统可用资源cout«"请输入系统当前可用的各资源数目:"«endl;cout«H资源号:"for(j=0;j<M;j+)cout«j«"cout«endl;cout<<""for(j=0;j<
16、;M;j+)cin>>SOURCEj;*while(1)TEST(PRO,SOURCE,M,P);5、使用说明由于没有对输入进行精确的异常处理,所以作者在输入界面提供了详细的输入引导信息,请按提示要求输入数字或字母。程序运行过程中为了便于用户查看程序的详细用行流程,作者设计了适当时候的停止等待,此时用户只需简单敲击回车键程序便会继续运行。本程序对用户输入的一组初始状态,可以多次根据每次某个进程的资源请求进行循环处理,不用多次初始化,为用户节省了时间。这门课的成绩对我尤其重要,有关我下半年考中科院研究生(我一个化学基地班同学已被确定保送为中科院研究生,他们要平时成绩)或保研,恳请请老师多给几分。注意:除了进程名可以输入字符串外,其他的全部应为数字。运行情况截图:IS221编号:工三源数目;号名编以分配设备尚需设备当前可用设备012012012p234321235q462010r342213ifg以分配设备尚需设备当前可用设备殳亩编石»12M12U12p234321697p342213青按任意键继续,号名编1注殳以分配设备尚需设备当前可用设备012012012p2343219139有按任意键继续,号名编I3XX以分配设备尚需设备当前可用设备012012012111613青按任意键继续:翻入埴米格的进程编号式输入强径请求的各资源数目:源号为
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 遴选政协面试真题及答案
- 遴选笔试河南真题及答案
- 儿牙治疗的护理
- 眩晕的治疗神经内科
- 2021-2022学年山东省聊城市高二上学期期末考试英语试题(解析版)(不含听力音频)
- 软件开发行业趋势分析-全面剖析
- 2024-2025学年四川省成都市武侯区北京第二外国语学院成都附属中学八年级上学期期中考试英语试卷
- 饮料行业并购重组趋势分析-全面剖析
- 2024年山东泰安岱岳区职业教育中心招聘真题
- 2024年景洪市事业单位选调真题
- SB/T 10482-2008预制肉类食品质量安全要求
- JJF 1863-2020声发射传感器校准规范(互易法)
- GB/T 25413-2010农田地膜残留量限值及测定
- 110kv主变压器选择计算书
- 一例巨大儿分娩的个案护理-课件
- 苏教版三年级科学下册单元测试卷及答案(全册)
- 室内质控-检验科课件
- (完整)人力资源六大模块ppt
- 小学四年级下学期英语阅读理解
- 彩色手绘卡通儿科小儿护理高热惊厥健康宣教教案PPT课件讲义
- DB43∕T 498-2009 博落回叶-行业标准
评论
0/150
提交评论