浅谈死锁

本文探讨了死锁的概念,即两个以上进程因资源竞争而陷入无限等待的现象。阐述了死锁的常见情况,包括同一线程两次加锁和线程间的环路等待。资源分为可剥夺和不可剥夺,死锁的必要条件包括互斥、不可抢占、请求和保持、环路等待。介绍了判断和避免死锁的方法,如鸵鸟算法、预防死锁(破坏请求和保持、环路等待条件)、避免死锁的银行家算法,以及检测和解除死锁的策略。
摘要由CSDN通过智能技术生成

什么死锁:
是两个或者两个以上的进程由于竞争资源而造成的的一种相互等待的线性,如无外力作用,这些进程将永远不能再向前推进。
陷入死锁状态的进程称为死锁进程,所占用的资源或者需要他们进行某种合作的进程就会相继陷入死锁,最终可能导致整个系统瘫痪

死锁的常见情形:
一般情况下,如果同一个线程先后两次调用lock,在第二次调用时,由于锁已经被占用,该线程会挂起等待别的线程释放锁,然而锁正是被自己占用着的,该线程又被挂起而没有机会释放锁, 因此 就永远处于挂起等待状态了,这叫做死锁(Deadlock)。但只有一个线程一般情况下是不会去加锁的。

另一种典型的死锁情形是这样:线程A获得了锁1,线程B获得了锁2,这时线程A调用lock试图获得锁2,结果是需要挂起等待线程B释放锁2,而这时线程B也调用lock试图获得锁1,结果是需要挂起等待线程A释放锁1,于是线 程A和B都 永远处于挂起状态了。这样就是一个环路等待,产生了死锁。

资源的分类:
根据资源的性质:可剥夺(抢占)和不可剥夺(抢占)资源
可抢占资源:一资源占有进程虽然需要使用该资源,但另一个进程却强行把资源从占有进程中抢占过来。(cpu,主存,硬盘)
不可抢占资源;除了占有进程主动释放资源外,其他进程不得在占有进程使用资源的时候强行抢占。(打印机,读卡器)

产生死锁的必要条件:
1、互斥条件:
一个进程一次只能被一个进程所使用
2、不可抢占条件:
一个资源仅能被它的占有进程所释放,不能被别的进程抢占。
3、请求和保持条件:
进程至少已

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值