操作系统之 死锁

什么是死锁

在并发条件下, 两个或两个以上的进程在运行过程中因争夺资源而产生的一种僵局,若无外界作用,这组进程将无法推进

死锁产生的条件

产生死锁的四个必要条件

  • 互斥条件

    只有对必须互斥使用的资源的争抢才会导致死锁,哲学家的筷子,编程里的互斥锁

  • 不剥夺条件

    进程获得的互斥资源在未使用之前,不能由其他进程强行夺走,只能主动释放

  • 请求和保持条件

    进程已经保持了至少一个资源,但又提出了新的资源请求

  • 循环等待条件

    存在一个进程资源的循环等待链,链中的每一个进程已获得的资源同时被下一个进程所请求

    (循环等待不一定产生死锁,死锁一定存在循环等待;当系统的每类资源只有一个,那么循环等待就必然导致死锁)

什么情况下会产生死锁

对不可剥夺资源的不合理分配,可能导致死锁

死锁的处理

预防死锁

  • 破坏互斥条件

image-20220420162634904

  • 破坏不剥夺条件

image-20220420162834546

  • 破坏请求和保持条件

image-20220420161901132

  • 破坏循环等待条件

image-20220420163023048

避免死锁

避免死锁的算法

银行家算法

在资源分配之前先判断这次分配是否导致系统进入不安全状态,以此决定是否允许资源分配请求,这就是银行家算法的核心。

image-20220420165550574

死锁的检测和解除

资源分配图

image-20220420171358510

资源分配图的简化

在资源分配图中,找出一个既不阻塞又非独立的进程节点P. 在顺利的情况下,p可获得所需资源而继续运行,直至运行完毕,再释放其所占有的全部资源,这相当于消去了P的请求和分配边,使之成为独立的节点。

进行一系列如上述的操作后,若能消去图中的所有边,使所有的进程结点成为独立结点,则称为可完全简化的

死锁定理

若某个时刻系统的资源分配图是不可完全简化的,那么此时系统死锁

解除死锁

image-20220420181925541

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值