160 likes | 279 Views
第五章 死锁. 朱敏 zhumin@scu.edu.cn 2014 年 4 月 29 日. 处理死锁的基本方法. 预防死锁(进程运行前) 避免死锁(进程运行中) 检测死锁(不间断监视) 解除死锁(死锁发生时). 死锁的检测与解除. 允许死锁发生,操作系统不断监视系统进展情况,判断死锁是否发生 一旦死锁发生则采取专门的措施,解除死锁并以最小的代价恢复操作系统运行 (检测与解除是一对). R 1. P 1. P 2. R 2. 资源分配图. 进程 资源 申请边 分配边 可以精确地描述死锁问题. 资源分配图算法. 算法限制: 每类资源只有单个实例
E N D
第五章 死锁 朱敏 zhumin@scu.edu.cn 2014年4月29日
处理死锁的基本方法 • 预防死锁(进程运行前) • 避免死锁(进程运行中) • 检测死锁(不间断监视) • 解除死锁(死锁发生时)
死锁的检测与解除 • 允许死锁发生,操作系统不断监视系统进展情况,判断死锁是否发生 • 一旦死锁发生则采取专门的措施,解除死锁并以最小的代价恢复操作系统运行 • (检测与解除是一对)
R1 P1 P2 R2 资源分配图 • 进程 • 资源 • 申请边 • 分配边 • 可以精确地描述死锁问题
资源分配图算法 • 算法限制: • 每类资源只有单个实例 • 应用范围: • 死锁避免(有环不分配) • 死锁检测(有环则解除) • 算法本质 • 检测图中的环,复杂度:O(n2) • 如果每类资源有多个实例呢?
资源分配图化简 • 猜一下具体算法过程?(回忆拓扑排序) • 算法结束后,若所有进程结点成为孤立结点,称该图是可完全简化的,否则称该图是不可完全简化的。
P2 P2 P2 P1 P1 P1 P3 P3 P3 P4 P4 P4 资源分配图化简
P1 P1 P2 P2 P3 P3 资源分配图化简
死锁定理(一) • 死锁定理:系统出于死锁状态的充要条件是该状态下的资源分配图是不可完全简化的。 • (简洁形象)
死锁定理(二) • 如果资源分配图中没有环路,则系统中没有死锁,如果图中存在环路则系统中可能存在死锁。 • 如果每类资源中只包含一个资源实例,则环路是死锁存在的充分必要条件。 • (比较啰嗦)
死锁检测时机 • 进程请求无法满足时(阻塞) • 优:容易锁定死锁进程,便于解除 • 劣:计算开销大 • 低频率定时检测(一小时一次) • CPU利用率低时(40%) • (编程语言垃圾回收的时机)
死锁的解除 • 进程终止 • 终止所有死锁进程 • 一次一个直到解除 • 资源抢占 • 选择炮灰 • 回滚程度 • 避免饥饿
总结:处理死锁的方法 • 1)使用协议预防或避免死锁 • 系统永远不会死锁 • 2)允许系统进入死锁状态 • 检测死锁并从中恢复 • 3)忽略这个问题 • 假设系统永远不会死锁 • 大多数操作系统处理死锁的方法? 就是第三种,(*¯︶¯*)
本章习题 • 题目:借鉴银行家算法,设计一个死锁检测算法,对于每类资源有多个实例的情况也能正确处理。 • 作业以PDF附件的方式发到助教的邮箱: • 1183135172@qq.com • 附件文件名要求: • OS_学号_姓名_n.pdf(n为当章节序号) • 合法文件名示例: • OS_2013223040154_张三_5.pdf