




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上实验四 银行家算法(一)教学要求掌握处理死锁的方法,掌握银行家算法的实现(二)知识点提示死锁的概念,死锁产生的原因和条件,处理死锁的方法,银行家算法,安全状态和不安全状态,安全性算法(三)教学内容银行家算法的模拟实现实验步骤:(1)定义数据结构:allocation; /分配矩阵available; /可用资源向量need; /需求矩阵request; /资源请求向量(2)定义函数:void bank_arithmetic(int i, int request) /银行家算法 void isSafe( ); /安全性算法 主函数中对可用资源向量,分配矩阵和需求矩阵进行
2、初始化(输入数据参照课本P113的例题),输入请求资源的进程编号以及请求的资源向量,通过调用银行家算法判断是否可以把资源分配给请求资源的进程。(3)银行家算法的执行步骤:设Requesti是进程Pi的请求向量。若Requestij=k,表示进程Pi需要k个j类资源。当Pi发出资源请求后,系统按下述步骤进行检查: 若RequestiNeedi ,则转;否则,认为出错。因为它所需要的资源数已超过它所宣布的最大值。 若RequestiAvailable,则转;否则,表示系统中尚无足够的资源,Pi必须等待。 系统试探把要求的资源分配给进程Pi,并修改下面数据结构中的数值。 Available=Avai
3、lable Requesti Allocationi = Allocationi + Requesti Needi = Needi Requesti 系统执行安全性算法,检测此次资源分配后,系统是否处于安全状态。若安全,才正式将资源分给进程Pi;否则,将试探分配作废,恢复资源状态,让Pi等待。(4)安全性算法的执行步骤: 设置两个向量work和finish工作向量work,它表示系统可提供给进程继续运行的各类资源数,含有m个元素,其初始值为:workj=availablej。完成向量finish,它表示系统是否有足够资源使进程推进完成,开始执行安全性算法时,Finishi=false;当有足够
4、资源分配给进程Pi,Pi推进完成时,令Finishi=true。 从进程集合中找到一个进程,其满足: Finishi=false Needi,j Workj 如找到则执行步骤 ,找不到则执行步骤。 当进程Pi获得资源后,便可以向前推进,直至完 成,并释放出分配给它的全部资源,故应执行: Workj=Workj+Allocationi,j; Finishi=true; 执行步骤。 若所有进程的Finish都为true,则系统为安全状态;否则,系统为不安全状态。实验程序:#include <stdio.h>#define M 3#define N 5int available=3,3,
5、2;int allocationNM=0,1,0,2,0,0,3,0,2,2,1,1,0,0,2;int needNM=7,4,3,1,2,2,6,0,0,0,1,1,4,3,1;void banker_arithmetic(int i,int request)int isSafe();int j,k,l;printf("进程P%d请求资源,资源请求向量为: n",i);for(j=0;j<M;j+)printf("%d ",requestj);printf("n");j=0;while(j < M)if(requestj
6、<=needij) j+;elsebreak;if(j=M)k=0;while(k < M)if(requestk<=needik)k+;elsebreak;if(k=M)for(l=0;l<M;l+)availablel=availablel-requestl;allocationil=allocationil+requestl;needil=needil-requestl;if(isSafe()printf("分配是安全的,可以把资源分配给p%dn",i);elseprintf("分配是不安全的,不能把资源分配给P%dn",i
7、);for(l=0;l<M;l+)availablel=availablel+requestl;allocationil=allocationil-requestl;needil=needil+requestl;printf("Allocation:");for(j=0;j<N;j+)for(k=0;k<M;k+)printf("%d ",allocationjk); printf("n");printf("Need:");for(j=0;j<N;j+)for(k=0;k<M;k+)p
8、rintf("%d ",needjk); printf("n");printf("Available:n");for(j=0;j<M;j+)printf("%d ",availablej);printf("n");i+;int isSafe()int workM;int i,j,k,l=0,a=0;int finish=0,0,0,0,0;for(i=0;i<M;i+)worki=availablei;while(l<N|a < N) i=0;while(i<N)
9、if(finishi=0) j=0; while(j<M) if(needij<=workj) j+; else break; if(j=M) printf("P%d ",i); for(k=0;k<M;k+) workk=workk+allocationik; printf("n"); finishi=1; l+; i+;a+;for(i=0;i<N;i+)if(finishi=0)return 0;return 1;int main()int i=1;int request=1,0,2; banker_arithmetic(i,request);return 0;实验结果:进程p1请求资源,资源请求向量为:1 0 2p1p3p4p0p2分配是安全的,可以把资源分配给p1Allocation:0 1 03 0 23 0 22 1 10 0 2Need:7 4 30 2 06 0 00 1 14 3 1Available:2 3 0Press any key to continue.(四)思考题1、死锁产生的原因是什么?死锁产生的原因有竞争不可抢占型资源引起死锁 竞争可消耗资源引起死锁 进程推进顺序不当引发死锁2、处理死锁的方法有哪些?预防死锁:通过设置某些限制条件,去破坏产生死锁的四个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年锂蓄电池行业市场发展分析及前景趋势与投资战略研究报告
- 2025-2030年采购代理行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年运动服装行业市场深度调研及发展趋势与投资研究报告
- 2025-2030年路面砖产业市场发展分析及前景趋势与投资管理研究报告
- 2025-2030年超声仪器行业风险投资发展分析及投资融资策略研究报告
- 2025-2030年西洋工艺陶瓷行业市场发展分析及发展趋势与投资研究报告
- 2025-2030年节能家电行业市场深度调研及前景趋势与投资研究报告
- 2025-2030年美白祛斑护肤品行业市场发展分析及发展趋势与投资研究报告
- 2025-2030年网游行业风险投资发展分析及运作模式与投融资研究报告
- 2025-2030年章鱼产业行业市场现状供需分析及投资评估规划分析研究报告
- 医学简易呼吸器操作及并发症和处理措施课件
- 肾性高血压患者的护理查房课件
- 医学影像数据库建设与应用研究
- 胎儿宫内窘迫的护理查房课件
- 海南跨境电商行业前景分析报告
- 妇科科室全面质量与安全管理手册
- 2023年湖北宜昌市住建局所属事业单位人才引进笔试参考题库(共500题)答案详解版
- 农产品集中交易市场等级技术规范
- 第12课-拓印的魅力(课件)
- 卡氏儿童孤独症评定量表(CARS)
- 钢箱梁制造运输及安装合同
评论
0/150
提交评论