六、死锁检测与解除
- 死锁检测
允许死锁发生,但是操作系统会不断监视系统进展情况,判断死锁是否真的发生。一旦死锁发生则采取专门的措施,解除死锁并以最小的代价恢复操作系统运行。
- 检测时机
1、当进程由于资源请求不满足而等待时检测死锁。这里缺点是系统开销较大。
2、定时检测
3、系统资源利用率下降时检测死锁
6.1 一个简单的死锁检测算法
6.2 死锁的解除
发生死锁后重要的是以最小的代价恢复系统的运行。方法如下:
- 撤销所有死锁进程,代价较大。
- 进程回退再启动,代价也较大
- 按照某种原则逐一死锁进程,直到不发生死锁
- 按照某种原则逐一抢占资源(资源被抢占的进程必须回退到之前的对应状态),直到不发生死锁 。