<span>操作系统---死锁的检测和解除</span>

死锁的检测和解除

资源分配图

资源分配图是一种数据结构 :

graph LR A[数据分配图] -->B[两种结点] A-->C[两种边] B-->D[进程结点:对应一个进程] B-->E[资源结点:对应一类资源,一类资源可能有多个] C-->F[进程结点->资源结点:表示进程想申请几个资源<每条边代表一个>] C-->G[资源节点->进程结点:表示已经为进程分配了几个资源<每条边代表一个>]

如图:

用资源分配图判断系统是否死锁

方法 :

e.x.

没有死锁的资源分配图 :

死锁了的资源分配图 :

死锁的解除

资源剥夺法

挂起(暂时放在外存)某些 死锁 进程, 并抢占它的资源, 让这些资源分配给其他的死锁进程, 注意需要防止被挂起的进程长时间得不到资源而饥饿

撤销进程法

强制某些死锁进程, 并剥夺这些进程的资源.

优点 : 实现简单

缺点 : 代价大, 比如有些进程已经运行了很长时间甚至接近结束, 突然剥夺将功亏一篑

进程回退法

让一个或多个死锁进程回退到足以避免死锁的地步

缺点 : 不太容易实现--系统需要记录进程的历史信息并设置还原点

可以根据 :

  • 进程优先级
  • 已执行多长时间
  • 还要多久能完成
  • 已经使用了多少资源

等方式决定对那个死锁进程执行解除方案


ref : https://www.bilibili.com/video/BV1YE411D7nH?p=31

全部评论

相关推荐

10-30 19:23
已编辑
山东大学(威海) C++
牛至超人:其实简历是不需要事无巨细的写的,让对方知道你有这段经历就行了,最重要的是面试的时候讲细讲明白
点赞 评论 收藏
分享
12-14 22:54
武汉大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务