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