下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验二死锁的防止――银行家算法实验目的掌握死锁产生的原因。掌握银行家算法。能使用高级语言模拟实现银行家算法。相关数据结构可利用资源向量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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025陇塬大数据服务(定西)有限公司招聘53人(甘肃)备考考试题库及答案解析
- 2026内蒙古包头稀土高新区教育系统校园招聘20人(四)(内蒙古师范大学招聘站)模拟笔试试题及答案解析
- 2025天津久大环境检测有限责任公司招聘10人备考笔试题库及答案解析
- 中船集团第七〇八研究所2026届校园招聘模拟笔试试题及答案解析
- 2025福建三明沙县区第一中学高中编内招聘7人参考笔试题库附答案解析
- 2025广西玉林市博白县消防救援大队公开招聘政府专职消防员10人备考笔试试题及答案解析
- 2025年甘肃省新华书店有限责任公司招聘工作人员57人备考考试题库及答案解析
- 2025广西北海市残疾人康复培训中心招聘2人备考笔试题库及答案解析
- 2025海南省海宾酒店管理集团有限公司招聘2人参考考试题库及答案解析
- 2025湖南怀化市教育局直属学校招聘教职工65人模拟笔试试题及答案解析
- 发现自己的闪光点课件
- 2025建筑节能工程监理实施细则
- 2025-2026学年苏教版(新教材)小学科学三年级上册科学期末复习卷及答案
- 发电厂汽轮机副操岗位考试试卷及答案
- 阿里合伙人合同
- 雨课堂在线学堂《临床中成药应用》作业单元考核答案
- 2025年皮肤科年度工作总结报告
- 实施指南(2025)《HGT 6114-2022 废酸中重金属快速检测方法 能量 - 色散 X 射线荧光光谱法》
- 厨师厨工考试题及答案
- 理化检测知识培训课件
- 2025领导干部政治理论知识网络培训题库及参考答案
评论
0/150
提交评论