




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验四 死锁检测实验(一)实验目的采用银行家算法来预防死锁是可靠的,但也是非常保守的,因为它限制了进程对资源的存取,从而降低了进程的并发运行程度。死锁检测并不限制进程对资源的申请,只要有,就分配,但这也可能造成死锁。但由于死锁并不是经常发生的,故大大提高了系统运行的效率。通过本实验,可使学生进一步加深理解和掌握死锁的检测算法。(二)实验题目两个题目任选其一:1、编写对每种类型多个资源的死锁检测算法。2、使用检测“进程资源循环等待链”的方法,编写死锁检测算法(有参考代码)(三)实验要求题目1:(1) 死锁检测算法的数据结构参考教材3.4.2节图3-6的现有资源矩阵E、可用资源矩阵A、当前分配矩阵C、进程请求资源矩阵R。(2) 完成对教材中图3-7的死锁检测算法例子的测试。(3) 完成在图3-7基础上,修改进程2的请求分别为 2 1 0 1 下的死锁检测。题目2:(1) 利用“进程资源循环等待链”的方法,编写死锁检测算法的具体方法可参考教材3.4.1节的算法,在了解此算法思想的基础上,也可参考给定代码;具体代码描述见附件1。(2) 利用教材图3-5 a)中的资源分配图完成对该算法的测试。(四)实验报告要求 画出所实现算法的详细框图; 说明所采用的数据结构; 列出输入数据(进程和所申请的资源数据可用命令行或文件输入); 列出运算的输出结果(输入结果包括是否死锁,死锁进程有哪些,也可包含中间结果); 实验总结与心得。 根据情况可以列出代码。附件1:模拟死锁检测算法描述1输入:“资源分配表”文件,每一行包含资源编号、进程编号两项(均用整数表示,并用空格分隔开),记录资源分配给了哪个进程。“进程等待表”文件,每一行包含进程编号、资源编号两项(均用整数表示,并用空格分隔开),记录进程正在等待哪个资源。下面是一个示例:资源分配表:1 1 2 2 3 3 进程等待表:1 2 2 3 3 1 2处理要求:程序运行时,首先提示“请输入资源分配表文件的文件名:”;再提示“请输入进程等待表文件的文件名:”。输入两个文件名后,程序将读入两个文件中的有关数据,并按照死锁检测算法进行检测。3输出要求: 第一行输出检测结果:有死锁 或 无死锁。第二行输出进程循环等待队列,即进程编号(如果有死锁)。4死锁检测算法:检测算法通过反复查找进程等待表和资源分配表,来确定进程Pj对资源ri的请求是否导致形成环路,若是,便确定出现死锁。5源代码参考:#include #include #include const int MAXQUEUE=100; /定义表的最大行数 typedef struct node int resource; int process; cell; /边的结构(一个资源节点、一个进程节点)cell occupyMAXQUEUE; /分配边数组int occupy_quantity; /分配边的数量cell waitMAXQUEUE; /申请边数组int wait_quantity; /申请边的数量/初始化函数 void initial() int i; for(i=0;iMAXQUEUE;i+) cess=-1; occupyi.resource=-1; cess=-1; waiti.resource=-1; occupy_quantity=0; wait_quantity=0; /读数据文件 int readData() FILE *fp; char fname20; int i; cout请输入资源分配表文件的文件名:fname; if(fp=fopen(fname,r)=NULL) cout错误,文件打不开,请检查文件名:)endl; return 0; else while(!feof(fp) fscanf(fp,%d %d,&occupyoccupy_quantity.resource,&occupyoccupy_cess); occupy_quantity+; cout请输入进程等待表文件的文件名:fname; if(fp=fopen(fname,r)=NULL) cout错误,文件打不开,请检查文件名:)endl; return 0; else while(!feof(fp) fscanf(fp,%d %d,&waitwait_cess,&waitwait_quantity.resource); wait_quantity+; /输出所读入的数据 coutendlendl输出所读入的数据endl; coutendl; cout资源分配表endl; cout资源编号 进程编号endl; for(i=0;ioccupy_quantity;i+) cout occupyi.resource cessendl; coutendl; cout进程等待表endl; cout进程编号 资源编号endl; for(i=0;iwait_quantity;i+) cout waiti.resource cessendl; return 1; /检测 void check() int tableMAXQUEUEMAXQUEUE; int table1MAXQUEUEMAXQUEUE; int i,j,k; int flag,t,p; int max_process; /初始化表格 for(i=1;iMAXQUEUE;i+) for(j=1;jMAXQUEUE;j+) tableij=0; table1ij=0; /先找到进程最大编号 max_process=-1; for(i=0;imax_process) max_process=cess; for(i=0;imax_process) max_process=cess; for(i=0;iwait_quantity;i+) for(j=0;joccupy_quantity;j+) if(waiti.resource=occupyj.resource) cess=1; cess=1; cout初始等待占用表:endl; for(i=1;imax_process+1;i+) /因为要显示进程0,因为没有进程0,所以加1 for(j=1;jmax_process+1;j+) couttableij ; coutendl; coutendl; for(i=1;imax_process+1;i+) /做进程最大数目次矩阵连接 for(j=1;jmax_process+1;j+) for(k=1;kmax_process+1;k+) tableij=tableij|(tableik&tablekj); /&与,|或 cout检测后的等待占用表:endl; for(i=1;imax_process+1;i+) for(j=1;jmax_process+1;j+) couttableij ; coutendl; flag=-1; for(i=1;imax_process+1;i+) if(tableii=1) flag=i; break; coutendlendl检测结果endl; coutendl; if(flag!=-1) cout存在死锁endl; cout进程循环等待队列:; p=flag; /存在进程循环等待队列的那一进程 /进程循环等待队列中的所有进程是table表中的这一行是1的进程,只是顺序要再确定 /即该进程无法运行,则其他它后面运行的进程也无法运行 t=1; while(t) coutp ; for(j=1;jmax_process+1;j+) if(table1pj=1) if(tablejflag=1) p=j; break; if(p=flag)t=0; /出现节点的重复/即环,结束 coutflagendl; else cout不存在死锁endl; /显示版权信息函数 void version() coutendlendl; cout endl; cout 死 锁 检 测 算 法 endl; cout e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国远洋海运集团校招面试技巧与模拟题解析
- 猪舍清洁消毒流程方案
- 幼儿园施工过程中质量检测与监控方案
- 生猪屠宰场选址与环境评估
- 人防工程后期维护方案
- 精简2025年政府采购评审专家考试题库含答案多选题
- 生猪养殖数据采集与分析
- 2025年边缘AI网络优化策略考题(含答案与解析)
- 2025老牌焕新:拥抱电商实现再爆发
- 六维技术融合赋能初中物理实验教学创新实践
- 2025-2026学年人教版(2024)初中生物八年级上册教学计划及进度表
- 电工电子技术项目教程(第3版)高职PPT完整全套教学课件
- solidworks高级培训钣金件经典课件
- 水污染控制教程第十二章+活性污泥法
- 反应釜泄漏事故应急处置卡
- GA/T 1556-2019道路交通执法人体血液采集技术规范
- GA 1800.5-2021电力系统治安反恐防范要求第5部分:太阳能发电企业
- 《大众传播学研究方法导论(第二版)》课件第一章 导论
- 2023年方正县林业系统事业单位招聘笔试题库及答案解析
- 《基于EXCEL动态模型的定量与定性分析【3000字论文】》
- 中级会计《经济法》最新精编必刷550题(后附答案解析)
评论
0/150
提交评论