ImageVerifierCode 换一换
格式:DOC , 页数:11 ,大小:220.50KB ,
资源ID:13095322      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/13095322.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(死锁的检测与解除 (1)Word下载.doc)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

死锁的检测与解除 (1)Word下载.doc

1、四、 实验过程1.基本思想:利用资源分配图来理解此问题,可以认为此图就是由一组结点N和一组边E所组成的一个对偶G=(N1E);把N分为互斥的两个子集进程P结点和资源R结点,进程结点集和资源结点集,凡是属于E中的一个边,都连接着P中的一个结点和R中的一个结点由P中的一个结点指向R中的一个结点是资源请求边,而由R中的一个结点指向P中的一个结点的边称为资源分配边,在这个图中找到一个既不阻塞又不独立的结点Pi,如果是在顺利的情况下,则该进程可以获得足够资源而继续运行,运行完释放所有资源,这就可以说是消除了它的请求边和分配边,让它成为一个孤立的点,再继续,分配给请求资源的进程这样循环下去直到所有的进程都

2、能成为孤立的点,或是出现了无法消除的环状,若是出现了环状,即出现了死锁,采取释放占用资源最多的进程的方法来解决问题,直到最后所有的进程结点P均成为孤立的点。解锁才算成功,程序才能结束。2.主要数据结构:(1)可利用资源向量Available.这是一个含有m类资源的数组,用来表示每种资源可用的的数量。(2)把不占用任何资源,且没有申请资源的进程,列入数组finish中,并赋值true。(3)从进程集合中找到一个Request=Work的进程,做如下的处理:将其资源分配图简化,释放出资源,增加Work的量,做Work=Work+Allocation并将它的标志位finish也设为true.(4)如

3、果不能把所有的进程标志位都赋值为true,则出现了死锁,开始采取解锁的方案。在此我选用的是释放占用资源最多的进程的方法,如果某个进程的Request=Work则可以做Work=Work+Allocation运算并将该进程标志位改成true。这样循环下去,若还不能解锁,则按上述方式再撤消一个进程,如此反复,直到死锁解除。3.输入输出每次开始运行程序,则要求用户开始输入进程的个数,资源源种类,可用资源量Available,及各个进程占有的各个资源的数量和请求数量,最后用循环将此时的状态输出,并判断是否有死锁,若有,则自动撤消进程解锁,若无,则直接输出无死锁的提示,并询问用户是否还要继续运行成序。4

4、. 程序流程图有死锁的情况5.截屏有死锁的情况:无死锁的情况6.源程序:package com.Deadlock;import java.util.*;public class Deadlockpublic int Available;public boolean p, L;int m, n, k=0 , c ;public static int count = 0;public int Work;public int Request;public int Allocation;boolean finish;public Deadlock()m = 15;n = 15;k=0 ;c=0 ;fi

5、nish=new boolean15;Available = new int15;p = new boolean15;L = new boolean15;/ public static int count = 0;Work = new int15;Request = new int1515;Allocation = new int1515;boolean compare(int index)boolean f = false;int t = 0;for (int i = 0; i Worki)t+;break;if (t = 0)f = true; elsef = false;return f

6、;void Input()Scanner sc = new Scanner(System.in);System.out.println(请输入进程数:);n = sc.nextInt();请输入资源的各类数:m = sc.nextInt();Available = new intm;Request = new intnm;Allocation = new intnm;请输入各资源可用的数量:Availablei = sc.nextInt();请输入各个进程占有的资源数量的的矩阵: n;for (int j = 0; j j+)Allocationij = sc.nextInt();请输入各进程

7、请求各资源的数量的矩阵:Requestij = sc.nextInt();for(int i=0;im;i+)Worki=Availablei;void Output()您输入 各资源的可用数量是:System.out.print(Availablei + System.out.println();各个进程占有的资源分别是System.out.print(P + (i + 1) + :System.out.print(Allocationij + System.out.println();各个进程请求各资源的数量分别是System.out.print(Requestij + boolean c

8、heck()int i,j,k=0;boolean ff=false;for(i=0;n;finishi=true;for(j=0;j0|Requestij0)finishi=false;boolean flag=true;while(flag)flag=false;for(i=0;if(!finishi&compare(i)for(j=0;Workj+=Allocationij;finishi=true;pi=false;flag=true;break;if(!flag)finishi)k+;if(k0)ff= false;else if(k=0)ff= true;return ff;voi

9、d delock()int i,j,flag=0;int sum=new intn;sumi=0;if(pi)for(j=0;sumi=sumi+Allocationij;/Allocationij=0;int max=sum0;for(i=1;if(maxsumi)max=sumi;flag=i;撤消占资源源最大的进程:+flag);for(j=0;Workj+=Allocationflagj;finishflag=true;pflag=false;if(check()System.out.println(成功解锁!else delock();void operate()boolean flag=check();if(flag)不会发生死锁!

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1