1.并发 饥饿与死锁
死锁的应对方式
prevention
avoidance
detection
2.死锁的三个必要条件
(1)互斥 mutual exclusion
(2)占有且等待 hold and wait 当一个进程等待其他进程时 继续占有已分配的资源
(3)不可抢占 no preempt
(4)循环 circular wait
3.预防死锁
(1)预防 互斥 :不太可能
(2)预防占有且等待:要求进程一次性请求所有需要的资源 低效
(3)预防不可抢占:允许抢占进程
(4)预防循环等待 :定义资源类型的线性顺序来预防
4.死锁避免
(1)若一个进程的请求会导致死锁 则不启动该进程
(2)若一个进程增加的资源请求会导致死锁,则不允许这一资源分配
5.资源分配拒绝
algorithm 算法
定义 安全状态和不安全状态
前者表示至少有一个资源分配序列不会导致死锁
死锁避免的优点为 无需死锁预防中的抢占和回滚进程 且限制较少
但仍有限制
(1) 必须事先声明每个进程请求的最大资源
(2) 所讨论的进程必须无关 执行顺序没有同步要求的限制
(3) 分配的资源数量固定
(4) 在占有资源时 进程不能退出
6.死锁检测
在资源请求发生时进行 检测算法
7.死锁恢复 检测到死锁后
(1)取消所有死锁进程
(2)把死锁进程回滚到前面定义的检查点 并重新启动所有进程
(3)连续取消死锁进程直到不会再存在死锁
(4)连续抢占资源直到不再存在死锁
8.综合的死锁策略
(1)把资源分成几组不同的资源类
(2)将资源类线性排列以避免循环等待 产生死锁
(3)在资源类中 使用该类资源最合适的算法
9.不同资源类最合适的策略
(1)可交换空间:进程交换所用外存的存储块 策略:要求一次性分配所有请求的资源
(2)进程资源:策略:死锁避免
(3)内存 策略:基于抢占的预防
(4)内部资源 如I/O通道 策略 资源排序
10.哲学家就餐问题
基于信号量的解决方案 只允许4位哲学家同时进入餐厅
基于管程的解决方案
11.可重用资源的例子:处理器 I/O通道
可消耗资源 的例子 中断 信号 消息
12.产生死锁的三个必要条件
互斥 占有且等待 非抢占
第四个条件是 循环等待
13.如何防止占有且等待:要求进程一次性请求所有需要的资源 并阻塞这个资源直到所有请求都满足
14.防止不可抢占:
(1)如果占有资源的进程进一步资源请求被拒绝 就释放最初占有的资源
(2)如果一个进程请求另一个进程占有的资源,则可以抢占这个进程
15.防止循环等待条件
给资源类型定义,并排成线性表
16.死锁预防 是间接限制 三个死锁必要条件之一
死锁避免是允许必要条件发生 但是采取措施使其不发生死锁
死锁检查允许资源的资源分配 但是采取周期性的措施来发现和处理可能存在的死锁情况。