OS 死锁

死锁 :

  • 两个线程为了保护两个不同的共享资源, 并用两个互斥锁
  • 当 2 个互斥锁互斥双方资源, 两个线程都等待对方释放锁, 就会一直相互等待

17578cc7db998f2a5fed3ff12cb7615.png

死锁条件

死锁同时满足四个条件才会发生:

  • 互斥条件
  • 持有并等待条件
  • 不可剥夺条件
  • 环路等待条件

互斥

互斥条件: 多个线程不能同时用同个资源

  1. 线程 A 已持有资源,线程 B 就不能持有
  2. 线程 B 请求资源, 线程 B 只能等待
  3. 当线程 A 释放资源, 线程 B 才能持有

image.png

持有并等待

持有并等待条件 :

  1. 线程 A 已持有资源 1,又要申请资源 2
  2. 资源 2 已被线程 C 持有,线程 A 只能等待
  3. 但线程 A 等待资源 2, 同时不会释放持有资源 1

image.png

不可剥夺

不可剥夺条件:

  1. 线程 A 已持有资源
  2. 线程 B 用此资源,只能等线程 A 释放, 才能获取

image.png

环路等待

环路等待条件: 死锁发生时,两个线程获取资源的顺序是环形链

  1. 线程 A 已持有资源 2, 还想请求资源 1
  2. 线程 B 已获取资源 1,还想请求资源 2

image.png

避免死锁

避免死锁, 只要破环其中一个条件可

  • 常见方法: 资源有序分配法,破环环路等待条件

资源有序分配法: 线程 A/B 获取资源的顺序一样

  • 当线程 A 先尝试获取资源 2,再尝试获取资源 1
  • 线程 B 也先尝试获取资源 2,再尝试获取资源 1

image.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值