死锁

死锁定义

多个进程在运行过程中因争夺资源而造成的一种僵局。当进程处于这种僵局状态,若无外力作用,他们将无法再向前推进。
例子:
进程A先锁a在获得锁b的顺序获得锁,进程B先锁b在获得锁a的顺序获得锁,当进程A和进程B同时推进时就造成了死锁。
在这里插入图片描述

死锁4个必要条件

  • 互斥:进程对所分配的资源具有排他性控制,即在一段时间内某资源仅为一进程所占有。
  • 请求保持:当进程因请求资源而阻塞时,对已获得的资源保持不放。
  • 不可剥夺:进程已获得的资源在未使用完之前,不能被剥夺,只能使用完由自己释放。
  • 环路等待:在发生死锁时,必然存在进程-资源的环形链。

预防死锁

  • 资源一次性分配:一次性分配所有资源,这样就不会再有请求(破坏请求)
  • 只要有一个资源分配不到,也不给这个进程再分配其他资源(破坏保持)
  • 可剥夺资源:当某进程获得部分资源,但得不到其他资源,则释放已占有的资源(破坏不可剥夺)
  • 资源有序分配:系统给每类资源赋予一个编号,每个进程按编号递增的顺序请求资源,释放则相反(破坏环路等待)
  1. 以确定的顺序获得锁
  2. 超时放弃

检测死锁

  • 首先为每个进程和每个资源指定一个唯一的号码
  • 然后建立资源分配表和进程等待表

解除死锁

  • 剥夺资源:从其他进程剥夺足够数量的资源给死锁进程,以解除死锁状态
  • 撤销进程:可以直接撤销死锁进程或撤销代价最小的进程,知道有足够资源可用,死锁状态消除为止。

参考

https://blog.csdn.net/hd12370/article/details/82814348

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值