一篇文章帮你解决死锁问题的三种类型,快来看看吧。简单易懂

文章介绍了死锁的概念,通过资源分配图和OR等待图模型分析死锁状态。在资源分配图中,当有回路表示两个进程对同一资源的相互等待时,会出现死锁。而在OR等待图中,死锁条件是存在结,即一个节点能到达且只能到达一组节点。通过将资源等待图转换为等待图,可以判断死锁状态。案例分析显示无回路则无死锁,而有回路不一定死锁,但死锁必定存在回路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一种类型:资源分配图

 

         首先这是一个资源分配图。P是一个进程而R是一个资源。简单易懂的来说死锁的出现就是两个进程同时申请了一个资源导致资源不知道如何分配。箭头由进程指向资源则是请求资源,而当箭头由资源指向进程时为释放资源。

 

        根据a图可以得到每个资源都只有一个进程申请因此不处于死锁状态。

        根据b图来看P1和P2同时申请了R2资源因此处于了死锁状态.

第二种:OR(等待图)模型下的死锁问题 

 

         在使用AND条件的系统中,死锁条件是在等待图中存在回路但是在使用OR条件的系统中等待图中的回路未必会引发死锁。在使用OR条件的系统中,死锁条件是存在结(knot)。一个结K是一个节点集合,对于K中的任何节点a,a能到达K中的所有节点,并且只能到达K中的节点。

        回路的通俗来说其实就是箭头围成了一个圈:

        但是有回路不一定死锁但是死锁了一定有回路

         由等待图的死锁条件可以判断出当两个圆圈同时指向一个圆圈的时候就会发生死锁

        因此两个等待图都处于死锁状态

第三种类型:将资源等待图转换成等待图时的死锁问题: 

 

 a图转化成等待图变成:

明显未构成回路所以一定未处于死锁状态

同理可得知图b也处于死锁状态.

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值