死锁的检测与解除C语言代码.doc

死锁的检测与解除C语言代码.doc

ID:48139886

大小:236.56 KB

页数:8页

时间:2020-01-21

死锁的检测与解除C语言代码.doc_第1页
死锁的检测与解除C语言代码.doc_第2页
死锁的检测与解除C语言代码.doc_第3页
死锁的检测与解除C语言代码.doc_第4页
死锁的检测与解除C语言代码.doc_第5页
资源描述:

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

1、实验名称:死锁的检测与解除姓名:杨秀龙学号:1107300432专业班级:创新实验班111指导老师:霍林实验题目死锁的检测与解除实验目的为了更清楚系统对死锁是如何检测和当死锁发生时如何解除死锁设计思想首先需要建立和银行家算法类似的数组结构,先把孤立的进程(没有占用资源的进程)放入一个数组中,根据死锁原理,找出既不阻塞又非独立的进程结点,使之成为孤立的结点并放入孤立数组中,再释放该进程的占用资源,继续寻找下一个孤立结点,如果所有进程都能放入孤立数组中,则系统不会发生死锁,如果有进程不能放入,则系统将发生死锁,并进行死锁解除,撤消所有的死锁进程,释放它们占用的资源。主要数据结构和银行家算法类似

2、,需要建立相应的数组intallocation[M][M];intrequest[M][M];intavailable[M];intline[M];//管理不占用资源的进程intno[M];//记录造成死锁的进程intwork[M];开始结束输入总进程数输入资源数输入Request矩阵输入Allocation矩阵是否发生死锁死锁解除否是输入available矩阵流程图运行结果图(1)不会发生死锁时图(1)当发生死锁时附录源代码如下:#include"stdio.h"#defineM50intallocation[M][M];intrequest[M][M];intavailable[M];

3、intline[M];intno[M];intn,m,i,j,f,a=0;main(){voidcheck();voidremove();voidshow();printf("输入进程总数:");scanf("%d",&n);printf("输入资源种类数量:");scanf("%d",&m);printf("输入进程已占用的资源Allocation:");for(i=0;i

4、j

5、);}else{printf("不会发生死锁!");}}voidcheck()//死锁检测{intk,;intx;intwork[M];for(i=0;i

6、f(request[i][j]>work[j])f=0;if(f==1)//找到满足条件的进程{line[i]=1;for(j=0;j0);}voidremove()//死锁解除{for(i=0;i

7、"死锁解除!");}voidshow(){printf("进程");printf("");printf("allocation");printf("");printf("request");printf("");printf("available");printf("");for(i=0;i

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

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

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