死锁

作者: 菜根小友 | 来源:发表于2019-04-17 20:02 被阅读0次

死锁

  • 死锁概念
  • 死锁起因
  • 死锁预防策略

死锁的定义

image.png

两个或多个进程无限期地等待永远不会发生的条件的一种系统状态。结果就是,每个进程都永远阻塞。
即:

  • 每个哲学家都无限期地等待邻座放下筷子
  • 而邻座没有吃完之前都不会放下筷子
  • 而邻座缺一只筷子永远都无法吃完

死锁起因

  • 系统资源有限

    • 资源数目不足,进程对资源的竞争而产生死锁
  • 并发进程的推进顺序不当

    • 进程请求资源和释放资源的顺序不当,导致死锁

关于死锁的一些结论

  • 参与死锁的进程至少是2个
    • 两个或以上进程才会出现死锁
  • 参与死锁的进程至少有2个已经占有资源
  • 参与死锁的所有进程都在等待资源
  • 参与死锁的进程是当前系统中所有进程的子集
  • 死锁会浪费大量系统资源,甚至导致系统崩溃

死锁的必要条件

  • 互斥条件
    • 进程互斥使用资源,资源具有独占性
  • 不剥夺条件
    • 进程在访问完资源前不能被其他进程强行剥夺
  • 部分分配条件
    • 进程边运行边申请资源,临时需要临时分配
    • 区别于:全部分配


      image.png

预防死锁
通过设置某些限制条件,破坏死锁四个必要条件中的一个或多个,来防止死锁

  • 破坏互斥条件——难
  • 破坏不剥夺条件——代价大
  • 破坏部分分配条件——预先静态分配
  • 破坏环路条件——有序资源分配

避免死锁

  • 不事先采取限制去破坏产生死锁的条件,而是在资源分配过程中,用某种方法去评估若分配资源是否会让系统进入死锁状态,若是,则拒绝此次分配资源,从而避免死锁的发送
  • 银行家算法
  • 只需要较弱的限制条件,可获得较高的资源利用率和系统吞吐量。缺点:实现较难。

检测和恢复死锁

  • 允许死锁发生,但可通过检测机制及时检测出死锁状态,并精确确定与死锁有关的进程和资源,然后采取适当措施,将系统中已发生的死锁清除,将进程从死锁状态解脱出来。
  • 缺点1:检测方法复杂,实现难度大。
  • 缺点2:恢复方法靠人工。撤销一些进程,回收资源再分配。

预先静态分配法
特点:

  • 执行可能被延迟:所需资源不能全部满足时
  • 应用开销增大:运行前估算资源需求
  • 资源利用率低:资源被占而不用

有序资源分配法

  • 目的:破坏环路条件,使得环路无法构成
  • 策略:
    • 系统中的每个资源分配有唯一的序号
    • 进程每次申请资源时只能申请序号更大的资源
  • 资源分配策略
    • 分配资源时检查资源序号是否符合递增规定:
      • 若不符合:则拒绝该申请,并撤销该进程
      • 若符合:且资源可用则予以分配
      • 若符合:且资源不可用则不分配,陷于阻塞

相关文章

  • 死锁

    线程饥饿死锁 锁顺序死锁 动态锁顺序死锁通过锁顺序来避免死锁 避免死锁

  • 死锁

    第11章:死锁和进程通信 死锁概念 死锁处理方法 死锁预防(Deadlock Prevention) 死锁避免(D...

  • java多线程笔记

    产生死锁的四个必要条件 处理死锁的基本方法 死锁预防 死锁避免 死锁检测 死锁解除 https://blog.cs...

  • [现代操作系统]--死锁

    table of content 死锁定义 死锁建模-- 资源分配图 处理死锁鸵鸟算法检测并恢复死锁检测死锁恢复利...

  • Java-多线程(四)死锁

    死锁 死锁示例

  • Java死锁

    什么是死锁 死锁检测 产生死锁的四个必要条件 如何避免死锁 死锁 死锁,指两个或多个线程之间,由于互相持有对方需要...

  • java并发--java死锁

    本篇结构: 前言 什么是死锁 产生死锁的必要条件 死锁的代码示例 死锁排查 如何避免死锁 总结 一、前言 今天被问...

  • Java多线程之死锁(Deadlock)及死锁避免(Deadlo

    线程死锁(Thread Deadlock) 数据库死锁(Database Deadlocks) 死锁避免 (Dea...

  • JavaEE面试题总结 Day39 2018-12-29

    什么是线程死锁?死锁如何产生?如何避免线程死锁? 死锁的介绍: 线程死锁是指由于两个或者多个线程互相持有对方所需要...

  • Java并发之嵌套管程锁死(Nested Monitor Loc

    嵌套管程死锁是如何发生的 具体的嵌套管程死锁的例子 嵌套管程死锁 vs 死锁 嵌套管程锁死类似于死锁, 下面是一个...

网友评论

      本文标题:死锁

      本文链接:https://www.haomeiwen.com/subject/xjtowqtx.html