死锁问题

一、死锁原理
死锁可以被定义为一组竞争系统资源或互相通信的进程间的“永久”阻塞。当一个进程集合中所有进程都在等待请求资源的分配,而只有在进程集合中的其他阻塞的进程才能触发该事件。这时就称为进程死锁。
这里写图片描述
如图Ra,Rb占有一个单位资源,当P1占有Rb 同时申请Ra,P2占有Ra,同时申请Rb,两个进程互相都在请求对方占有的唯一资源。发生死锁。
二、死锁条件
若要发生死锁,必定出现四个条件:
1.互斥:一次只有一个进程可以使用一个资源,其他进程不能访问已分配给该进程的资源。
2.占有切等待:当一个进程在等待分配得到其他资源时,其继续占有已被分配的资源。
3.非抢占:不能强行抢占别的进程的资源,必须等待。
4.循环等待:存在一个封闭的进程链。
三、死锁预防
要想预防死锁必须从从产生死锁的条件入手。
互斥性,基本上是不可禁止的。预防占有切等待,可以尝试一次性请求好所有资源,并且阻塞到该进程所有请求都满足,但是这种做法效率低。有很多种办法可以预防非抢占式。比如说如果占有某些资源的一个进程进行进一步资源请求被拒绝。
四、死锁避免
两个避免死锁的方式:
如果一个进程的请求会导致死锁,则不启动该进程。
如果一个进程增加资源的请求会导致死锁,则不请求该资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值