死锁
-
引起死锁:需要采用互斥访问的 不可以被抢占的资源(临界资源)
-
系统资源分类:
- 可重用性资源 可消耗性资源
- 可抢占性资源 不可抢占性资源
-
计算机系统中的死锁
- 竞争不可抢占性资源引起死锁
- 竞争可消耗资源引起死锁
- 进程推进顺序不当引起死锁
-
死锁定义:一组相互竞争系统资源或进行通信的进程间的永久阻塞
-
死锁危害:死锁进程无限期阻塞等待、资源浪费、更多进程卷入死锁、系统死机
-
产生死锁原因:
- 动态资源分配策略
- 资源可用数量少于需求数量
- 进程并发过程的偶然因素
-
产生死锁的必要条件:
- 互斥条件 2. 请求和保持条件 3. 不可抢占条件 4. 循环等待条件
-
处理死锁的方法:
-
预防死锁 事前 (通过破坏产生死锁的四个必要条件中的一个或者几个)
-
破坏请求和保持条件
- 第一种协议(静态资源分配策略 一次性 全部)
- 第二种协议(动态资源分配策略 需要时动态申请 使用完动态释放)
-
破坏不可抢占条件
当一个已经保持了某些不可被抢占资源的进程,提出新的资源请求而不能得到满足时,它必须释放已经保持的所有资源
-
破坏循环等待条件
对系统所有资源类型进行线性排序,并赋予不同的序号
-
-
避免死锁 事前 (在资源动态分配过程中,防止系统进入不安全状态,以避免发生死锁)
- 利用银行家算法避免死锁(计算但简单 求安全序列)
-
检测死锁 事后
- 资源分配图
-
解除死锁 事后
- 终止进程方法:
- 终止所有死锁进程
- 逐个终止进程
- 付出代价最小的死锁解除算法
- 终止进程方法:
-