什么是死锁?其条件是什么?怎样避…

来源:互联网 发布:埃及叙利亚合并知乎 编辑:程序博客网 时间:2024/05/09 04:15

死锁的概念: 在两个或多个并发进程中,如果每个进程持有某种资源而又都等待别的进
程释放它们现在保持着的资源,否则就不能向前推进。此时,每个进程都占用了一定的资源
但是又不能向前推进,称这一组进程产生了死锁。通俗的讲,就是两个或多个进程无止境
的等候着永远不会成立的条件的一种系统状态。 
   死锁产生的原因主要是: (1)系统资源不足;(2)进程运行推进的顺序不合适; (3)资
源分配不当。 
产生死锁的必要条件: (1)互斥(mutualexclusion) ,一个资源每次只能被一个进程使
用; (2)占有且等待(hold and wait),一个进程因请求资源而阻塞时,对已获得的资源保持
不放; (3)不可抢占(no preemption),进程已获得的资源,在未使用完之前,不能强行剥
夺; (4)环形等待(circular wait),若干进程之间形成一种首尾相接的循环等待资源关系。
这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之
一不满足,就不会发生死锁。 
死锁的解除与预防:理解了死锁的原因,尤其是产生死锁的四个必要条件,就可以最大
可能地避免、预防和解除死锁。所以,在系统设计、进程调度等方面注意如何不让这四个
必要条件成立,如何确定资源的合理分配算法,避免进程永久占据系统资源。此外,也要
防止进程在处于等待状态的情况下占用资源。因此,对资源的分配要给予合理的规划。 
死锁的处理策略:鸵鸟策略、预防策略、避免策略、检测与解除死锁
 
0 0
原创粉丝点击