死锁(Deadlock)、活锁(LiveLock)、饥饿(Starvation)、挂起(Suspension)

本文介绍了并发编程中的四种缺陷:死锁、活锁、饥饿和挂起,包括各自的概念和特点。死锁是四个必要条件导致的资源等待循环;活锁是进程在等待无法获得的资源时,频繁响应对方导致无进展的状态;饥饿是进程因优先级较低而无限期等待资源;挂起是线程长时间等待锁。理解这些缺陷有助于避免并发问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在做并发缺陷的分类,发现不同学者对缺陷分类粒度不同,现对其中几个概念重述,欢迎交流!
本文以书面文字为准,附上说明来源。
若希望简单易懂的举例,请移步死锁,活锁和饥饿

死锁

1971年,Coffman总结系统产生死锁必定同时保持如下4个必要条件。

  1. 互斥条件(mutual exclusion):临界资源是独占资源,进程应互斥且排他地使用这些资源。
  2. 占有和等待条件(hold and wait):进程在请求资源得不到满足而等待时,不释放已占有资源。
  3. 不剥夺条件(no preemption):又称不可抢占,已获资源只能由进程自愿释放,不允许被其他进程剥夺。
  4. 循环等待(circular wait):又称环路条件,存在循环等待链,其中,每个进程都在等待链中等待下一个进程所持有的资源,造成这组进程处于永远等待状态。

前三个条件是死锁存在的必要条件,但不是充分条件。第四个条件是前三个条件同时存在时所产生的结果,故条件并不完全独立。但是单独考虑每个条件是有用的,只要破坏四个之一,就可以防止死锁

费翔林 骆斌《操作系统教程》(第五版)第三章 同步、通信与死锁

Deadlock happens when a thread(process) cannot proceed because it needs to obtain

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值