是什么
每个进程无限等待被该组进程中另一进程占有的资源;与之对比,活锁为先加锁再轮询不阻塞不推进,饥饿是由于资源分配策略如优先级导致得不到资源
死锁条件:
- 互斥使用(资源独占)
- 占有且等待(部分分配)
- 不可抢占(不可剥夺)
- 循环等待(进程等待环路)
死锁定理
在资源分配图中,无环路必无死锁,有环路可能有死锁,有环且资源类只包含一个实例必有死锁
死锁预防,破坏死锁必要条件
- 独占转为共享资源
- 一次性申请和分配
- 主动释放部分分配
- 操作系统帮助抢占
- 资源有序分配法(资源按热度编号,进程按资源号增序请求)
死锁避免
对进程发出的每一个能满足的资源申请进行动态检查,根据分配后系统是否为不安全状态(死锁)决定是否分配
解决死锁
- 鸵鸟算法(不考虑死锁)
- 死锁预防(静态分配)
- 死锁避免(动态评估)
- 死锁检测和解除
安全序列
进程序列中任意进程,它还需要的资源不超过当前系统剩余资源与它之前的所有进程占有资源的和;此时系统为安全状态,一定无死锁,若不存在任何安全序列则为不安全状态,一定导致死锁