2.22死锁的处理策略——避免死锁(银行家算法)

1,什么是安全序列

所谓的安全序列,就是指系统如果按照这种序列分配资源,则每个进程都能顺利完成。只要能找出一个安全序列,系统就处于安全状态。当然安全序列可以有多个

 

2,什么是系统的不安全状态,与死锁有什么关系

如果分配资源后,系统中找不出任何一个安全序列,系统就进入了不安全状态。这就意味着之后可能所有的进程都无法顺利执行下去。当然如果有进程提前归还了一些资源,那么系统也有可能重新回到安全状态,不过我们在分配资源之前总是要考虑到最坏的情况

如果系统处于安全状态,就一定不会发生死锁。如果系统进入了不安全状态,就可能发生死锁,因此在资源分配之前先判断这次分配是否会导致系统进入不安全状态,以此来决定是否答应资源分配请求。这也就是银行家算法的核心

 

3,如何避免系统进入不安全状态——银行家算法

数据结构:

长度为m的一位数组Available表示还有多少可用资源

n*m的矩阵Max表示各个进程对资源的最大需求数

n*m的矩阵Allocation表示已经给各个进程分配了多少资源

Max-Allocation=Need矩阵表示各个进程最多还需要多少资源

用长度为m的一位数组Request表示此进程再次申请的各种资源数

银行家算法的步骤:

1)检查此次申请是否超过之前声明的最大需求数

2)检查此时系统剩余可用资源是否还能满足此次请求

3)试探分配,更改数据结构

4)用安全型算法检查此次分配是否会导致系统进入不安全状态

安全性算法的步骤:

1)检查当前剩余可用资源是否能满足某个资源的最大需求,如果可以,就将该进程加入安全序列

2)等到这个进程执行完毕就将它占有的全部资源回收

3)不断重复上述过程,看看最终能不能让所有进程都加入安全序列

系统处于不安全状态未必死锁,但是死锁一定处于不安全状态。系统处于安全状态一定不会死锁

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值