关于死锁的介绍

什么是死锁?

指多个进程因竞争共享资源而造成的一种僵局,若无外力作用,这些进程都将永远不能再次向前推进。在这些进程中,每个进程都无限等待被该组进程中另外一个进程所占用的资源,因而永远无法得到所需要的资源,这种现象被称为进程死锁,这一组进程被称为死锁进程

产生死锁的原因

  1. 竞争资源引起进程死锁

    ① 竞争不可抢占性资源;示例:两个进程共享I/O设备时发生死锁。(A进程占有甲资源,B进程占有乙资源,双方都需要对方的资源,但是都首先释放自己占有的资源,从而造成死锁。)

    ② 竞争可消耗性资源(临时资源);示例:三进程通信,各个进程都要先接受对方的消息,再释放自己产生的消息,这种情况下,就可能发生死锁。

    ③ 进程推进顺序不当引起死锁

产生死锁的必要条件

  1.  互斥
  2.  请求和保持
  3. 不剥夺
  4. 环路等待

解决死锁的方式

  1. 预防

    ① 破坏请求和保持条件;在进程运行之前,一次性申请该进程在整个运行过程中所需要的全部资源。或者,允  许一个进程在获得运行初期所需要的资源后便开始运行,在运行过程中,逐步释放自己使用完毕的资源,然后再请求新的资源。

    ② 破坏不可抢占条件;当某个进程新的资源请求未得到满足时,释放已经占有的所有资源。

    ③ 破坏循环等待条件;将所有的资源按照类型进行线性排序,规定按照序号递增的次序进行资源的申请。

     2. 避免

    ① 保持系统安全状态(安全状态,是指系统能按某种进程顺序,来为每个进程分配资源,直至满足每个进程对资源的最大需求,使得每个进程都可以顺利的执行。

    ② 利用银行家算法避免死锁

     3. 检测

    ① 首先做出资源分配图;(用有向图可以将进程死锁描述的准确、形象。计算机系统由若干类资源构成,一类资源称为一个资源类。每个资源类中包含了若干个同类资源,称为资源实例。)

    ② 然后依据死锁定理进行判断;1)若资源分配图中没有环路,则系统中没有死锁。2)若资源分配图中有环路,且每个资源类中仅有一个资源,则系统发生死锁。3)若资源分配图中有环路,且每个资源类中有多个资源则系统不一定发生死锁。此时有环路是系统发生死锁的必要而不充分条件。

    ③ 对资源分配图进行简化后判断;当且仅当系统当前状态的资源分配图是不可完全简化的。此时系统状态为死锁状态。这是系统当前状态为死锁状态的充分条件。这一充分条件称为死锁定理。

对资源分配图简化的方法:1)找一个既不阻塞又不独立的进程结点A,去掉它的分配边和请求边,将其变为孤立节点。2)然后将相应的资源分配给一个等待该资源的进程B。进程B运行完之后,去掉进程B的分配边和请求边,将进程B变为孤立结点。3)经过简化后,若使得所有进程结点都成为孤立结点,则称该图是可完全简化的,否则是不可完全简化的。

    4. 解除

    ① 抢占资源;从其它进程剥夺足够数量的资源给死锁进程,来解除死锁状态。

    ② 终止(撤销)进程;1)直接撤销所有的死锁进程。2)按照某个顺序逐个撤销,直至死锁解除

    ③ 进程回退

    ④ 重新启动

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值