1 / 8
文档名称:

4 死锁检测算法.doc

格式:doc   大小:119KB   页数:8页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

4 死锁检测算法.doc

上传人:文库旗舰店 2020/6/12 文件大小:119 KB

下载得到文件列表

4 死锁检测算法.doc

文档介绍

文档介绍:,但也是非常保守的,因为它限制了进程对资源的存取,从而降低了进程的并发运行程度。死锁检测并不限制进程对资源的申请,只要有,就分配,但这也可能造成死锁。但由于死锁并不是经常发生的,故大大提高了系统运行的效率。通过本实验,可使学生进一步加深理解和掌握死锁的检测算法。“进程—资源循环等待链”的方法,编写死锁检测算法(有参考代码):利用“进程—资源循环等待链”的方法,编写死锁检测算法的具体方法可参考教材的算法,在了解此算法思想的基础上,也可参考给定代码;。对图4-1中的资源分配图完成对该算法的测试。图4-,列出输入数据(进程和所申请的资源数据可用命令行或文件输入);列出运算的输出结果(输入结果包括是否死锁,死锁进程有哪些,也可包含中间结果);实验总结与心得。)输入:“资源分配表”文件,每一行包含资源编号、进程编号两项(均用整数表示,并用空格分隔开),记录资源分配给了哪个进程。“进程等待表”文件,每一行包含进程编号、资源编号两项(均用整数表示,并用空格分隔开),记录进程正在等待哪个资源。下面是一个示例:资源分配表:112233进程等待表:1223312)处理要求:程序运行时,首先提示“请输入资源分配表文件的文件名:”;再提示“请输入进程等待表文件的文件名:”。输入两个文件名后,程序将读入两个文件中的有关数据,并按照死锁检测算法进行检测。3)输出要求:第一行输出检测结果:有死锁或无死锁。第二行输出进程循环等待队列,即进程编号(如果有死锁)。4)死锁检测算法:检测算法通过反复查找进程等待表和资源分配表,来确定进程Pj对资源ri的请求是否导致形成环路,若是,便确定出现死锁。详细代码为:#include<>#include<>#include<>constintMAXQUEUE=100;//定义表的最大行数typedefstructnode{intresource;intprocess;}cell;//边的结构(一个资源节点、一个进程节点)upy[MAXQUEUE];//upy_quantity;//分配边的数量cellwait[MAXQUEUE];//申请边数组intwait_quantity;//申请边的数量//初始化函数voidinitial(){inti;for(i=0;i<MAXQUEUE;i++){occupy[i].process=-1;occupy[i].resource=-1;wait[i].process=-1;wait[i].resource=-1;}occupy_quantity=0;wait_quantity=0;}//读数据文件intreadData(){FILE*fp;charfname[20];inti;cout<<"请输入资源分配表文件的文件名:"<<endl;//strcpy(fname,"d:\tmp\");cin>>fname;if((fp=fopen(fname,"r"))==NULL){cout<<"错误