死锁的检测
- 允许死锁的发生,但是操作系统会不断监视系统的进展情况,判断死锁是否真的发生
- 一旦死锁真的发生则采取专门的措施,解除死锁并以最小的代价恢复操作系统的运行
检测的时机
- 当进程由于资源请求不满足而等待时检测死锁—-系统开销太大
- 定时检测
- 系统资源利用率下降时检测死锁
一个简单的死锁检测算法
- 每个进程、每个资源制定唯一编号
- 设定一张资源分配表,记录各进程与占用资源之间的关系
设置一张进程等待表,记录各进程与要申请资源之间的关系
资源分配表
| 资源 | 进程 |
|---|---|
| r1 | p2 |
| r2 | p5 |
| r3 | p4 |
| r4 | p1 |
| .. | .. |
进程等待表
| 资源 | 进程 |
|---|---|
| p1 | r1 |
| p2 | r3 |
| p4 | r4 |
| .. | .. |
分析:
p1-r1-p2-r3-p4-r4-p1 出现环路引起死锁
死锁解除
重要的是以最小的代价恢复系统运行
方法:
- 撤销所有的死锁进程
- 进程回退(Roll Back)再启动
- 按照某种原则逐一撤销死锁的进程直到。。。
- 按照某种原则逐一抢占资源(资源被抢占的进程必须回退到之前对应的状态),直到。。。
版权声明:本文为sinat_22055459原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。