死锁的检测和解除

死锁的检测

  • 允许死锁的发生,但是操作系统会不断监视系统的进展情况,判断死锁是否真的发生
  • 一旦死锁真的发生则采取专门的措施,解除死锁并以最小的代价恢复操作系统的运行

检测的时机

  • 当进程由于资源请求不满足而等待时检测死锁—-系统开销太大
  • 定时检测
  • 系统资源利用率下降时检测死锁

一个简单的死锁检测算法

  • 每个进程、每个资源制定唯一编号
  • 设定一张资源分配表,记录各进程与占用资源之间的关系
  • 设置一张进程等待表,记录各进程与要申请资源之间的关系


    资源分配表

资源进程
r1p2
r2p5
r3p4
r4p1
....

进程等待表

资源进程
p1r1
p2r3
p4r4
....

分析:
p1-r1-p2-r3-p4-r4-p1 出现环路引起死锁

死锁解除

重要的是以最小的代价恢复系统运行

方法:
- 撤销所有的死锁进程
- 进程回退(Roll Back)再启动
- 按照某种原则逐一撤销死锁的进程直到。。。
- 按照某种原则逐一抢占资源(资源被抢占的进程必须回退到之前对应的状态),直到。。。


版权声明:本文为sinat_22055459原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。