死锁的原因、必然条件、预防措施总结
2012-10-23 09:12
225 查看
所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象死锁。
死锁的原因主要是:(1) 因为系统资源不足。(2) 进程运行推进的顺序不合适。(3) 资源分配不当等。如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。
产生死锁的四个必要条件:(1) 互斥条件:一个资源每次只能被一个进程使用。(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立
死锁预防措施:根据产生死锁的4个必要条件,只要使其中之一不成立,死锁就不会出。为此,可以采用下列3种预防措施:
1)采用资源静态分配策略,破坏“部分分配”条件。
2)允许进程剥夺使用其他进程占有的资源,从而破坏“不可剥夺”条件。
3)采用资源有序分配法,破坏“环路”条件。
注意:互斥条件无法破坏。
由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象死锁。
死锁的原因主要是:(1) 因为系统资源不足。(2) 进程运行推进的顺序不合适。(3) 资源分配不当等。如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。
产生死锁的四个必要条件:(1) 互斥条件:一个资源每次只能被一个进程使用。(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立
死锁预防措施:根据产生死锁的4个必要条件,只要使其中之一不成立,死锁就不会出。为此,可以采用下列3种预防措施:
1)采用资源静态分配策略,破坏“部分分配”条件。
2)允许进程剥夺使用其他进程占有的资源,从而破坏“不可剥夺”条件。
3)采用资源有序分配法,破坏“环路”条件。
注意:互斥条件无法破坏。
相关文章推荐
- java死锁的原因分析及解锁和预防措施
- 死锁产生的原因、条件及死锁的避免和预防
- Linux_进程死锁?产生条件?产生原因?怎样预防?怎样检测死锁和解除死锁?
- 死锁的原因、条件和避免死锁的方法
- 线程发生死锁的条件与原因
- 什么叫死锁?产生死锁的条件和预防死锁的各种方法
- 死锁条件与预防
- 死锁产生的原因和必要条件及预防死锁的方法及死锁的检测与解除
- 9.死锁的概念、导致死锁的原因,导致死锁的四个必要条件,预防死锁的方法、避免死锁的方法
- 死锁产生的原因及条件、如何避免死锁
- 死锁原因及预防方法
- 死锁以及死锁产生的原因及条件
- 死锁——原因,必要条件,预防及避免
- 死锁及死锁产生原因条件
- 死锁的产生条件和预防处理
- 死锁的原因、条件和避免死锁的方法
- 进程死锁条件和预防
- 进程死锁条件及原因
- 死锁的产生条件和预防处理
- 死锁的原因 预防 和避免