操作系统:死锁预防和必要条件循环等待的误区

死锁产生的必要条件

首先,要注意此处的“必要条件”,和数学中充分必要的定义是一致的,即:
(1)如果产生了死锁,那么必要条件一定成立;
(2)反之,如果所有必要条件均成立,也不一定会死锁。(这是很容易弄混的一点。)
另外,(1)的逆否命题:
(3)如果其中任意一个必要条件不成立,那么就不会死锁。

死锁预防

死锁预防是死锁处理策略之一。就是根据上述(3)的原理,通过设置某些限制条件,破坏产生死锁的4个必要条件中的一个或多个,以防止死锁。

必要条件之一:循环等待

必要条件中的循环等待是指:存在一种进程资源的循环等待链。即存在首尾相连的环(资源分配图)
此处举出两种情况:(图来自王道)
在这里插入图片描述
图1:满足循环等待,且死锁。
图2:满足循环等待,但没有死锁,因为Pn请求的资源可以通过P0或Pk任一进程释放后得到,一旦Pk释放,就会打破循环等待的局面。

可见死锁定义中的循环等待环规定的要求更严格,不允许申请到圈外的进程释放的资源,只能圈里的进程们内耗。

所以,当每类资源的数目大于1,资源分配图就算有环,也不一定死锁,要具体分析;但是如果每种资源只有一个,此时再出现环就一定死锁。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值