死锁

  所谓死锁是指多个进程因竞争资源而造成的一种僵局(互相等待),若无外作用,这些进程都将无法向前推进。

1. 死锁产生的原因

  1)进程推进的顺序不当

  2)系统资源的不足

  3)系统资源分配不当

2. 死锁产生的必要条件

  产生死锁必须同时满足一下四个条件,只要其中任一条件不成立,死锁就不会发生。

  互斥条件:进程要求对所分配的资源进行排他性控制,即在一段时间内某资源仅为一个进程所有。此时若有其他进程请求该资源,则进程只能等待。

  不剥夺条件:进程所获的资源在未使用完毕之前,不能被其他进程强行夺走,即只能由获得该资源的进程自己来释放。

  请求和保持条件:进程每次申请它所需要的一部分资源,在等待新资源的同时,在等待新资源的同时,进程继续占有已分配到的资源。

  循环等待条件:存在一种资源的循环等待链,链中每个进程已获得的资源同时被链中下一个进程所请求。即存在一个处于等待状态的进程集合{P1,P2,P3,...,Pn},其中Pi等待的资源被Pi+1(i=0,1,...,n-1)占有,Pn等待的资源被P0占有。

 

3.死锁处理策咯

  1)预防死锁:设置某些限制条件,破环产生死锁的四个必要条件中的一个或几个。

  2)避免死锁:在资源的动态分配过程中,用某种方法防止系统进入不安全状态。银行家算法是著名的死锁避免算法。

  3)死锁的检测及解除:无须采取任何限制性措施,允许进程在运行过程中发生死锁,通过系统的检测机制及时地检测出死锁的发生,然后采取某种措施解除死锁。死锁的检测可利用资源分配图来描述。死锁的解除主要方法如下:

    (1)资源剥夺法

    (2)撤销进程法

    (3)进程回退法

 

参考资料:

  《王道程序员求职宝典》

posted @ 2015-08-20 20:46  vincently  阅读(207)  评论(0编辑  收藏  举报