死锁和银行家算法的理解

死锁的概念:死锁是指一组进程中的各个进程都占有不会释放的资源,但因相互申请其他进程不会释放的资源而处于一种永久等待状态。(请求与保持 和 循环等待撞在一块)
请求与保持通俗来讲:我加了A,然后去加B,如果不能加B,我也不释放A
循环等待通俗来讲:我加了A锁,然后去加B锁,对方加了B锁,对方想加A锁。(加锁顺序不当)
这样就陷入了一个回路,死锁就产生了。

产生死锁的条件(四个缺一不可)
1.互斥条件:一个资源每次只能被一个执行流使用
2.不可剥夺条件:一个执行流在未释放资源之前,不能强行剥夺
3.请求与保持:一个执行流因申请资源阻塞时,对已获取的资源保持不放
4.循环等待条件:若干条执行流形成首尾相接的循环等待资源的关系

避免死锁
1.破坏四个条件中的任何一个
2.加锁顺序一致
3.避免锁未释放场景:加锁和解锁永远要在一起。加了锁就必许要在任意有可能退出的地方解锁
4.资源一次性分配

避免死锁的算法
银行家算法思想:我们的系统分为安全和不安全状态,银行家算法考虑都有哪些锁,哪些执行流分配了哪些锁,哪个执行流想要加哪个锁,分配给执行流想要的锁之后是否会造成环路等待,是否系统运行进入不安全状态,如果有可能则不能分配。
死锁检测算法。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值