死锁

作者: RedHatMe | 来源:发表于2018-08-29 23:06 被阅读0次

概念:

死锁并不是锁,而是进程对资源占用的一种表达方式。
最简单的解释是,
A进程 占了资源a ,B进程占了资源b,
A需要b资源才可以释放a
B需要a资源才可以释放b
这样 就循环等待了,互不释放。

死锁预防:

  1. 当某进程新的资源未满足时,释放已占有的资源,即资源占用的单一性,不准一个进程同时占两个资源。
  2. 资源编号分配。即系统给每类资源赋予一个编号,每一个进程按编号递增的顺序请求资源,释放则相反

死锁避免:

系统在进行资源分配之前预先计算资源分配的安全性。若此次分配不会导致系统进入不安全状态,则将资源分配给进程;否则,进程等待。其中最具有代表性的避免死锁算法是银行家算法。

死锁检测:

为每个进程和每个资源指定一个唯一的号码;然后建立资源分配表和进程等待表
之后单独运行检测算法。检测是否死锁。

死锁解决:

  1. 直接撤消死锁进程或撤消代价最小的进程,直至有足够的资源可用,死锁状态消除为止。
  2. 挂起占用资源的进程。
    即当发现死锁时,挂起一些进程,使得处于死锁之中的其它进程,可抢占被占用的资源从而继续执行。待以后条件满足后,再恢复被挂起的进程。常利用资源分配图、进程等待图来协助这种检测。

以上方式的优劣

  1. 最有效的是死锁避免和死锁检测配合使用。
  2. 死锁预防 其实就是不产生死锁,会产生很大性能损耗。
  3. 死锁检测 是完全不预防死锁,后续如果产生大量死锁,会有大批量杀进程或者挂进程的情况。

相关文章

  • 死锁

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

  • 死锁

    第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/wqdlwftx.html