下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验二死锁的防止――银行家算法实验目的掌握死锁产生的原因。掌握银行家算法。能使用高级语言模拟实现银行家算法。相关数据结构可利用资源向量Available,它是一个含有m个元素的数组,其中的每一个元素代表一类可利用的资源的数目,其初始值是系统中所配置的该类全部可用资源数目。其数值随该类资源的分配和回收而动态地改变。如果Available[j]=k,标是系统中现有j类资源k个。最大需求矩阵Max,这是一个n×m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Max[i][j]=k,表示进程i需要j类资源的最大数目为k。分配矩阵Allocation,这是一个n×m的矩阵,它定义了系统中的每类资源当前分配到每一个进程的资源数。如果Allocation[i][j]=k,表示进程i当前已经分到j类资源的数目为k个。Allocation[i]表示进程i的分配向量。需求矩阵Need,这是一个n×m的矩阵,用以表示每个进程还需要的各类资源的数目。如果Need[i][j]=k,表示进程i还需要j类资源k个,才能完成其任务。Need[i]表示进程i的需求向量。上述三个矩阵间存在关系:Need[i][j]=Max[i][j]-Allocation[i][j];银行家算法Request是进程i的请求向量。Request[j]=k表示进程i请求分配j类资源k个。当进程i发出资源请求后,系统按下述步骤进行检查:如果Request≤Need[i],那么转向步骤2;否那么,认为出错,因为它所请求的资源数已超过它当前的最大需求量。如果Request≤Available,那么转向步骤3;否那么,表示系统中尚无足够的资源满足进程i的申请,进程i必须等待。系统试探性地把资源分配给进程i,并修改下面数据结构中的数值:Available=Available-RequestAllocation[i]=Allocation[i]+RequestNeed[i]=Need[i]-Request系统执行平安性算法,检查此次资源分配后,系统是否处于平安状态。如果平安才正式将资源分配给进程i,以完本钱次分配;否那么,将试探分配作废,恢复原来的资源分配状态,让进程i等待。平安性算法设置两个向量。Work:它表示系统可提供应进程继续运行的各类资源数目,它包含m个元素,开始执行平安性算法时,Work=Available。Finish:它表示系统是否有足够的资源分配给进程,使之运行完成,开始Finish[i]=false;当有足够资源分配给进程i时,令Finish[i]=true;从进程集合中找到一个能满足下述条件的进程。Finish[i]==false;Need[i]≤work;如找到那么执行步骤3;否那么,执行步骤4;当进程i获得资源后,可顺利执行直到完成,并释放出分配给它的资源,故应执行Work=work+Allocation[i]Finish[i]=true;转向步骤2;假设所有进程的Finish[i]都为true,那么表示系统处于平安状态;否那么,系统处于不平安状态。实验内容设计有n个进程共享m个系统资源的系统,进程可动态的申请和释放资源,系统按各进程的申请动态的分配资源。系统能显示各个进程申请和释放资源,以及系统动态分配资源的过程,便于用户观察和分析;程序框架已经给出〔见附件〕,要求将平安性测试算法补充完整。当前资源状态图总的资源向量E=〔1057〕空闲的资源向量C=(357)已分配尚需ABCABCP0010743P1200122P2302600P3211011P40024312.补充完整的平安性算法//平安性检测//返回值:0:未通过平安性测试;1:通过平安性测试intTest_Safty(){//〔请写出平安性测试算法的代码〕 cout<<endl<<"进入平安性检测!"<<endl; inti,j; intWork[MAX_RESOURCE];//定义工作向量 for(i=0;i<RESOURCE_NUM;i++) { Work[i]=Available[i]; } boolFinish[MAX_PROCESS];//定义布尔向量 for(i=0;i<PROCESS_NUM;i++) Finish[i]=false; intsafe[MAX_RESOURCE];//用于保存平安序列 boolfound=false;//判断在一轮查找中是否找到符合条件的进程 intFinishCount=0;//找到满足跳进的进程IDE数目while(FinishCount<5){ for(i=0;i<PROCESS_NUM;i++){if(Finish[i]==true)//检查是否满足条件Finish[i]==falsecontinue; boolHasResource=true; for(j=0;j<RESOURCE_NUM;j++)//检查是否满足条件Need[i]<=Work if(Need[i][j]>Work[j]) HasResource=false; if(HasResource) { for(j=0;j<RESOURCE_NUM;j++) Work[j]=Work[j]+Allocation[i][j]; Finish[i]=true; safe[FinishCount]=i; FinishCount++; found=true; } } if(found) { found=false;}elsebreak;}for(i=0;i<PROCESS_NUM;i++)//判断是否所有进程满足Finish[i]==true{ if(Finish[i]==true) continue; else { cout<<"未通过平安性测试,不分配"<<endl; return0;}}cout<<'\n'<<"找到一个平安序列:";for(i=0;i<PROCESS_NUM;i++)//打印平安序列??{ cout<<"P"<<safe[i]; if(i!=PROCESS_NUM-1) cout<<"--->";}cout<<'\n'<<"已通过平安性测试!"<<endl;return1;}3:截图4:体会:本次实验银行家算法是对死锁的防止很好表达,充分说明了能否设计一个好的资源分派算法是从源头上防止死锁的发生的重要之处。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年生产车间承包与人力资源整合合同范本3篇
- 改装环卫三轮车协议书(2篇)
- 2024年物联网技术在农业中的应用合同
- 2025年珠海道路运输从业资格证考试内容是什么
- 2025年广西货运从业资格模拟考
- 《丰田生产方式图》课件
- 2024年度企业培训与人才发展委托合同3篇
- 2024年特种车辆租赁合同:如救护车、货车等2篇
- 河南省信阳市罗山县2024-2025学年七年级上学期11月期中数学试题(解析版)
- 2024任城区人才公寓租住及物业管理服务合同3篇
- 2024年江苏开放大学《物流信息技术》形成性考核参考试题库(含答案)
- 学校资助主任述职报告
- 白醋的生产工艺设计
- 湘科版五年级科学上册全册教案教学设计
- 青海省西宁市2023-2024学年九年级上学期期末英语试题
- 高素质农民培育培训
- 体验经济2024年消费趋势的转变
- 乐高-人形机器人搭建(图1)
- 专题8-5条件概率与全概率公式贝叶斯公式8类题型
- 基于ABB工业机器人自动化搬运工作站的设计
- 大理石项目商业计划书
评论
0/150
提交评论