资源分类
资源分类
描述资源和进程间的分配和占用关系的有向图
是否有死锁?
预防采用某种策略限制并发进程对资源的请求,或破坏死锁必要条件。
预防采用某种策略限制并发进程对资源的请求,或破坏死锁必要条件。
利用额外的先验信息,在分配资源时判断是否会出现死锁,只在不会死锁时分配资源
资源分配中,系统处于安全状态
安全状态与死锁的关系
银行家算法(Banker's Algorithm)-- 概述
银行家 操作系统;资金 资源;客户 线/进程
银行家算法(Banker's Algorithm)-- 数据结构
银行家算法(Banker's Algorithm)-- 判断安全状态的例程
银行家算法(Banker's Algorithm)-- 完整算法
银行家算法(Banker's Algorithm)-- 示例1
银行家算法(Banker's Algorithm)-- 示例1
银行家算法(Banker's Algorithm)-- 示例1
银行家算法(Banker's Algorithm)-- 示例1
银行家算法(Banker's Algorithm)-- 示例2
银行家算法(Banker's Algorithm)-- 示例2
死锁检测算法:数据结构
死锁检测算法:完整算法
死锁检测算法:-- 示例1
死锁检测算法:-- 示例1
死锁检测算法:-- 示例1
死锁检测算法:-- 示例1
死锁检测算法:-- 示例1
死锁检测算法:-- 示例1
序列 对于所有的i,都可满足Finish[i] = true
死锁检测算法:-- 示例2
可通过回收线程占用的资源,但资源不足以完成其他线程请求
线程形成死锁
使用死锁检测算法
检测到死锁后,应该如何处理?
仅允许进程在开始执行时,一次请求所有需要的资源 - 进程请求资源时,要求它不持有任何其他资源
预防是采用某种策略,限制并发进程对资源的请求,或使系统在任何时刻都不满足死锁的必要条件。
### 死锁问题 - 处理办法 -- 预防 ![w:900](figs/deadlock.png)