死锁的产生与避免

死锁产生的原因:
1、竞争资源,系统提供的资源数量有限,不能满足每个进程的需求;
2、多到程序运行时,进程推进顺序不合理;
产生死锁的必要条件:
1、互斥条件:资源是独占的且排他使用。进程互斥使用资源,即任意时刻一个资源只能给一个进程使用,其他进程若申请一个资源,而该资源被另一个进程占有时,则申请者等待,直到资源被占用者释放。
2、不可剥夺条件:进程所使用的资源在未使用完毕之前,不能被其他进程强行剥夺,而只能由获得该资源的进程释放。
3、请求和保持条件:进程每次申请它所需要的一部分资源,在申请新资源的同时,继续占用已分配到的资源。
4、循环等待条件:在发生死锁时,必然存在一个进程等待队列{p1,p2,……pn},其中p1等待p2占有的资源,p2等待p3占有的资源,……,pn等待p1占有的资源,形成一个进程等待环路。环路中每一个进程已占有的资源同时被另一个进程所申请,即前一个进程占有后一个进程所申请的资源。
解决死锁的的方法:
1、预防死锁。通过设置某些严格限制,破坏产生死锁的条件(出第一个条件以外的其他条件)以防止死锁的发生。这一方法会导致系统资源利用率过低。
2、避免死锁。在资源的动态分配过程中,采取某种方法防止系统进出入不安全的状态,从而避免死锁的发生。这种方法只需以较弱的限制条件为代价,并可获得较高的资源利用。
3、监测死锁。允许系统运行过程中发生死锁,即事先不采取任何预防,避免措施。但通过在系统中设置检测机制,可以检测出死锁是否真的发生,并能精确的确定与死锁有关的资源与进程,然后采取措施解除死锁。
4、解除死锁。这是与死锁检测相配套的措施,用于将进程从死锁状态下解脱出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值