二死锁的检测与解除.doc

二死锁的检测与解除.doc

ID:50083450

大小:178.50 KB

页数:10页

时间:2020-03-04

二死锁的检测与解除.doc_第1页
二死锁的检测与解除.doc_第2页
二死锁的检测与解除.doc_第3页
二死锁的检测与解除.doc_第4页
二死锁的检测与解除.doc_第5页
资源描述:

《二死锁的检测与解除.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验二死锁的检测与解除一、实验目的:当系统为进程分配资源时,若未采取任何限制性措施,则系统必须提供检测和解除死锁的手段,为此,系统必须做到:(1)保存有关资源的请求和分配信息;(2)提供一种算法,以利用这些信息来检测系统是否已进入死锁状态。某一状态为死锁状态的充分条件是:当且仅当某一状态的资源分配图是不可完全简化的。通过该实验,可以充分理解死锁的检测与解除的基本原理。二、实验题目:设计一个m 个并发进程共享n个系统资源的系统。进程可动态申请资源和释放资源,系统按各进程的申请动态的分配资源。要求用死锁检测算法检测当某一进程提出资源分配请求时,系统会不

2、会陷入死锁状态;如若陷入死锁状态要求用某种算法解除死锁三.实验源程序文件名:sisuo.cpp执行文件名:sisuo.exe四、实验分析1)本实验采用死锁检测算法检测死锁,死锁检测的数据结构如下(1)可利用资源向量available,它表示了n类资源中每一类资源的可用数目。(2)把不占用资源的进程用finish[i]=true标示(3)从进程集合中找到一个request[i]<=work的进程,做如下处理:将其资源分配图简化,释放出资源,增加工作向量work:=work+allocation[i],并将其finish[i]置1(4)若不能把所有的进

3、程都标记为finish[i]==1,则表明该系统状态将发生死锁当发现进程死锁时,便应立即把它们从死锁状态中解脱出来。本实验采用的解除死锁的方法是:撤销进程。本实验采用撤销的进程数目最小的方法,把死锁进程中占有资源最多的进程撤销,如若仍发生死锁,继续撤销下一进程2)流程图:输入进程数m和资源数n输入已分配矩阵、最大需求矩阵、需求矩阵、请求矩阵Finish[i]=true;if(allocation[i][j]>0

4、

5、request[i][j]>0)Finish=falseJudge()开始(1)主函数流程图检测函数judge()开始Flag=chec

6、k()Flag==true提示不会发生死锁程序结束Flag==false,显示死锁进程p[i]=0调用解锁函数jiesuo()(2)judge函数流程图Check()函数开始while(flag==TRUE)反复判断finish[i]==FALSE&&compare(request,work,n,i)==TRUE释放进程资源Intcompare()if(finish[i]==FALSE){K++;}if(K>0){returnFALSE;}if(K==0){returnTRUE;}(3)check函数流程图解锁函数jiesuo()开始初始化数组su

7、m[i]=0统计死锁进程资源sum[i]=sum[i]+allocation[i][j];找出最大死锁进程iwork[j]+=allocation[flag][j];finish[flag]=TRUE;p[flag]=FALSEFlag=check()Flag==true成功解除死锁Flag==false程序结束(4)解锁函数流程图3)源代码#include#include#includeusingnamespacestd;//名字空间#defineTRUE1#defineFALSE0//

8、布尔值intcompare(int**request,int*work,intN,intk)//如果Request[i]>work则返回false{intj,c=0;for(j=0;jwork[j]){c++;}}if(c>0)returnFALSE;elseif(c==0)returnTRUE;}//判断intcheck(int*work,int**request,int**allocation,int*finish,int*p,intm,intn){inti,j,flag=TRUE,K=0;wh

9、ile(flag==TRUE)//反复判断,直到无法判断{flag=FALSE;for(i=0;i

10、*******if(flag==FALSE){for(i=0;i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。