zoukankan      html  css  js  c++  java
  • 死锁

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

    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)进程回退法

    参考资料:

      《王道程序员求职宝典》

  • 相关阅读:
    BZOJ2457 双端队列 题解
    POJ1723,1050,HDU4864题解(贪心)
    Splay与FHQ-Treap
    POJ3179 Corral the Cows题解
    使用easypoi根据表头信息动态导出excel
    Spring @Configuration注解
    vue脚手架vue-cli的搭建
    使用poi导出excel
    mybatis中的一对多和多对一
    angularjs模态框的使用
  • 原文地址:https://www.cnblogs.com/vincently/p/4746184.html
Copyright © 2011-2022 走看看