死锁

简介: 每个进程无限等待被该组进程中另一进程占有的资源;与之对比,活锁为先加锁再轮询不阻塞不推进,饥饿是由于资源分配策略如优先级导致得不到资源

 

是什么

每个进程无限等待被该组进程中另一进程占有的资源;与之对比,活锁为先加锁再轮询不阻塞不推进,饥饿是由于资源分配策略如优先级导致得不到资源

死锁条件:

  1. 互斥使用(资源独占)
  2. 占有且等待(部分分配)
  3. 不可抢占(不可剥夺)
  4. 循环等待(进程等待环路)

死锁定理

在资源分配图中,无环路必无死锁,有环路可能有死锁,有环且资源类只包含一个实例必有死锁

死锁预防,破坏死锁必要条件

  1. 独占转为共享资源
  2. 一次性申请和分配
  3. 主动释放部分分配
  4. 操作系统帮助抢占
  5. 资源有序分配法(资源按热度编号,进程按资源号增序请求)

死锁避免

对进程发出的每一个能满足的资源申请进行动态检查,根据分配后系统是否为不安全状态(死锁)决定是否分配

解决死锁

  1. 鸵鸟算法(不考虑死锁)
  2. 死锁预防(静态分配)
  3. 死锁避免(动态评估)
  4. 死锁检测和解除

安全序列

进程序列中任意进程,它还需要的资源不超过当前系统剩余资源与它之前的所有进程占有资源的和;此时系统为安全状态,一定无死锁,若不存在任何安全序列则为不安全状态,一定导致死锁

相关文章
|
8月前
|
监控 算法 安全
怎么防止死锁
怎么防止死锁
|
5月前
死锁原因
死锁原因
61 1
|
8月前
|
安全 算法 程序员
|
8月前
|
SQL 存储 设计模式
如何与死锁斗争!!!
尽量不要改动线上数据库的字段,因为会触发锁表影响业务,严重时还可能出现死锁!数据库真的出现了死锁,业务全挂了,这种时候应该怎么办呢?本文就给大家分享一下数据库死锁的排查思路,万一出了问题,也有底气去解决。
68 1
|
8月前
|
安全 Java 测试技术
发生死锁怎么办
发生死锁怎么办
71 0
|
8月前
死锁的发生与避免
死锁的发生与避免 死锁是指两个或者多个进程在执行过程中,因争夺资源而造成的一种僵局,若无外力作用,它们都将无法推进下去。在计算机系统中,死锁是一种常见的问题,因此需要采取一些措施来避免死锁的发生。
102 0
|
安全 算法
死锁的总结(1)
死锁的总结
40 0
|
算法 安全
死锁的总结(2)
死锁的总结
52 0
|
算法 调度
死锁的理解
死锁的理解
93 0