热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

死锁的检测和解除

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

死锁的检测

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

检测的时机

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

一个简单的死锁检测算法

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

     
     资源分配表

资源 进程
r1 p2
r2 p5
r3 p4
r4 p1
.. ..

 进程等待表

资源 进程
p1 r1
p2 r3
p4 r4
.. ..

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

死锁解除

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

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


推荐阅读
author-avatar
爱情黄昏泪的诱惑_494
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有