操作系统 死锁

什么是死锁

在哲学家进餐问题中已经说过,当每个哲学家都拿起自己左边的筷子时,就都在等待自己右边的筷子,此时会导致每个哲学家都不能进餐的情况,也就是一个简单的死锁模型。

或者简单来说,一个四角恋关系,每个人都爱着另一个人,并且等着对方也爱自己,中途不会变心,此时就是一种死锁模型,会导致成不了一对的情况。

在并发情况下,各进程因竞争资源而造成的一种互相等待对方手里的资源,导致各进程都阻塞,都无法向前推进的现象,也就是死锁,发生死锁后如果没有外力干涉,则都无法继续运行下去,宕机。

 

 

死锁:个进程互相等待对方手里的资源,导致各进程都阻塞,无法向前推进

饥饿:由于长期得不到想要的资源,某进程无法向前推进的现象,

死循环:某进程执行过程中一直跳不出某个循环的现象,有时是因为程序代码逻辑的问题,或者故意设计的

 

 

死锁产生的四个必要条件

  • 互斥访问:资源必须互斥访问
  • 不剥夺:进程无法强行抢占资源,只能主动释放
  • 请求和保持:进程已经持有了一个或多个资源,但又提出了新的资源请求,而该资源又被其他进程占有,此时进程阻塞,并且不释放自己的资源
  • 循环等待:存在一组资源的循环等待链,链中的每一个进程占有的资源都是被下游的进程所请求的

 

!!!!!死锁必有环,有环不一定死锁

 

什么时候发生死锁

 

  1. 对系统资源的竞争。各进程对不可剥夺的资源的竞争可能引起死锁,对可剥夺的资源(CPU)的竞争是不会引起死锁的
  2. 进程推进顺序非法。请求和释放资源的顺序不对
  3. 信号量的使用不当

 

死锁的处理策略

  1. 死锁预防:破坏四个必要条件之一
  2. 死锁避免:用某种方法避免系统进入不安全状态(银行家算法)
  3. 死锁检测和解除:允许死锁的发生,由操作系统来检测出死锁的产生并强行解除死锁

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值