死锁的检测与解除C语言代码.doc_第1页
死锁的检测与解除C语言代码.doc_第2页
死锁的检测与解除C语言代码.doc_第3页
死锁的检测与解除C语言代码.doc_第4页
死锁的检测与解除C语言代码.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验名称: 死锁的检测与解除 姓 名: 杨秀龙 学 号: 1107300432 专业班级: 创新实验班111 指导老师: 霍林 实验题目死锁的检测与解除实验目的为了更清楚系统对死锁是如何检测和当死锁发生时如何解除死锁设计思想首先需要建立和银行家算法类似的数组结构,先把孤立的进程(没有占用资源的进程)放入一个数组中,根据死锁原理,找出既不阻塞又非独立的进程结点,使之成为孤立的结点并放入孤立数组中,再释放该进程的占用资源,继续寻找下一个孤立结点,如果所有进程都能放入孤立数组中,则系统不会发生死锁,如果有进程不能放入,则系统将发生死锁,并进行死锁解除,撤消所有的死锁进程,释放它们占用的资源。主要数据结构和银行家算法类似,需要建立相应的数组int allocationMM;int requestMM;int availableM;int lineM; /管理不占用资源的进程int noM; /记录造成死锁的进程int workM;开始结束输入总进程数输入资源数输入Request矩阵输入Allocation矩阵是否发生死锁死锁解除否是输入available矩阵流程图运行结果图(1)不会发生死锁时图(1)当发生死锁时附录源代码如下:# include stdio.h# define M 50int allocationMM;int requestMM;int availableM;int lineM;int noM;int n,m,i,j,f,a=0; main() void check(); void remove(); void show(); printf(输入进程总数:); scanf(%d, &n); printf(输入资源种类数量:); scanf(%d, &m); printf(输入进程已占用的资源Allocation:n); for(i=0;in;i+) for(j=0;jm;j+) scanf(%d, &allocationij); printf(输入进程的请求矩阵request:n); for(i=0;in;i+) for(j=0;jm;j+) scanf(%d,&requestij); printf(输入系统可利用资源available:n); for (j=0;jm;j+) scanf(%d, &availablej); show(); check(); f=1;for(i=0;in;i+)if(linei=0)f=0;noa+=i;/记录死锁序号 if(f=0) printf(该系统将发生死锁!n); printf(造成死锁的进程为:); for(i=0;in;i+) printf(%2d,noi); printf(n); remove(); show();elseprintf(不会发生死锁!n); void check()/死锁检测 int k,;int x;int workM;for(i=0;in;i+)linei=0;for(i=0;in;i+) /(2) x=0;for(j=0;jm;j+)if(allocationij=0)x+;if(x=m)linei=1;for(j=0;jm;j+)/(3)workj=availablej;k=n;do for (i=0;in; i+) if(linei=0) f=1; /空置条件是否满足 for (j=0;jworkj) f=0; if (f=1) /找到满足条件的进程 linei=1; for (j=0;j0);void remove() /死锁解除for(i=0;in;i+)if(linei=0)for(j=0;jm;j+)availablej+=allocationij;allocationij=0;requestij=0; printf(死锁解除!n); void show()printf(进程);printf( );printf(allocation);printf( );printf(request); printf( );printf(available);printf(n); for (i=0;in; i+) printf(%2d,i); printf( ); for(j=0;jm; j+) printf(%2d,allocationij); printf( ); for(j=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论