死锁的预防

死锁的预防(静态策略)死锁的避免(动态策略)
对进程有关的资源活动加以限制,所有进程遵循这种限制,即可保证没有死锁进程在运行过程中向系统请求资源,系统判定满足或不满足
优点:对系统没有要求满足条件:不超过最大限制;系统剩余资源足够多
缺点:违反约束,仍可能产生死锁若满足进行安全检测,安全–>分配,不安全–>不分配
方法:预先分配法,有序分配法死锁是不安全状态的真子集
预先分配法有序分配法
进程:运行前申请全部所需资源资源集R={r1,r2,…,r n},r1~r n,n个资源类,每个类里有多个资源;函数F:R–>N,定义R到自然数N的映射,每个类对应一个自然数,相当于将每个资源类编号
系统:若满足,全部分配;否则,一个也不分配进程pi可以申请资源rj中的实例,当且仅当,对于所有pi当前占有的资源rl,F(rj)>F(rl)
破坏“保持并占有”条件破坏“循环等待”条件
缺点:资源利用率低;一个程序运行可能有多个分支,多个分支有不同资源,一次提出申请困难优点:与预先分配法相比,资源利用率提高;缺点:资源编号困难(并不清楚设备特性,哪个设备先进行哪个设备后进行);为保持按序申请,有些暂时用不到的资源也要提前申请,牺牲资源利用率

采用有序分配法,证明无死锁:
(1)在所有被占有资源类中,选取编号最大者rk1;
(2)设p1占有该类资源,(若p1继续申请,因为是有序分配,p1申请肯定往下申请,还是能找到资源类最大编号,假设当前编号最大的是rk1),则p1能运行完,去除p1相关的所有分配边;
(3)在剩下所有被占有资源类中,选取编号最大者rk2;
(4)设p2占有该类资源,则p2能运行完,去除所有相关p2的分配边;
(5)依次下去,所有的节点都将称为孤立点。
若算法结束时,所有节点均为孤立节点,则称资源分配图是可完全约简的,否则是不可完全约简的。
死锁定理: 系统状态S为死锁状态的充分必要条件是S的资源分配图是不可完全约简的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值