死锁

✍ dations ◷ 2025-12-08 18:01:10 #操作系统技术,协同控制,程式错误

死锁(英语:Deadlock),又译为死结,计算机科学名词。当两个以上的运算单元,双方都在等待对方停止运行,以获取系统资源,但是没有一方提前退出时,就称为死锁。在多任务操作系统中,操作系统为了协调不同行程,能否获取系统资源时,为了让系统运作,必须要解决这个问题。

这里指的是进程死锁,是个计算机技术名词。它是操作系统或软件运行的一种状态:在多任务系统下,当一个或多个进程等待系统资源,而资源又被进程本身或其他进程占用时,就形成了死锁。有个变种叫活锁。

例如,一个进程 p1占用了显示器,同时又必须使用打印机,而打印机被进程p2占用,p2又必须使用显示器,这样就形成了死锁。因为p1必须等待p2发布打印机才能够完成工作并发布屏幕,同时p2也必须等待p1发布显示器才能完成工作并发布打印机,形成循环等待的死锁。

如果系统中只有一个进程,当然不会产生死锁。如果每个进程仅需求一种系统资源,也不会产生死锁。不过这只是理想状态,在现实中是可遇不可求的。

死锁的四个条件是:

死锁只有在四个条件同时满足时发生,预防死锁必须至少破坏其中一项。

我们也可以尝试回避死锁。因为在理论上,死锁总是可能产生的,所以操作系统尝试监视所有进程,使其没有死锁。

最简单的消除死锁的办法是重启系统。更好的办法是终止一个进程的运行。

同样也可以把一个或多个进程回滚到先前的某个状态。如果一个进程被多次回滚,迟迟不能占用必需的系统资源,可能会导致资源匮乏(英语:Starvation (computer science))。

活锁(Livelock),与死锁相似,死锁是行程都在等待对方先释放资源;活锁则是行程彼此释放资源又同时占用对方释放的资源,当此情况持续发生时,尽管资源的状态不断改变,但每个行程都无法获取所需资源,使得事情没有任何进展。

假设两人正好面对面碰上对方:

相关

  • S层S层(S-layer, surface layer)是古菌和细菌细胞包被(英语:cell envelope)的一部分。S层由糖蛋白或蛋白质铺成的单分子组成。S层通过分子的自组装形成,会覆盖整个细胞表面。因此,S层
  • 流鼻涕鼻漏(英语:rhinorrhea或rhinorrhoea)是指鼻腔充斥大量黏液的一种症状。该症状也被称为流鼻涕、流鼻水等,在人身上较为常见。鼻漏是过敏(过敏性鼻炎)和其他一些疾病(如普通感冒)的常
  • 诺母诺姆(英语:Nome),是美国阿拉斯加州的一座城市。该市的人口在2000年为3505人,2010年有3598人。人口在阿拉斯加州排行第16。1924年底至1925年初,此城市爆发白喉疫情,为控制疫情,在严寒
  • 昆士兰科技大学昆士兰科技大学(英语:Queensland University of Technology;缩写:QUT),中文简称昆科大,又译为昆士兰理工大学,设于澳州联邦昆士兰州首府布里斯班的一所公立研究型大学。现为昆士兰州
  • 樵夫伐木,泛指把树木砍伐下来,并且把木材运往加工厂进行加工的作业流程。是最原始的人类社会劳动行为之一,属于林业的一环。被砍伐下的原木通常会被做成木材,木材有许多的用处。另外
  • 前列腺计算值前列腺计算值是前列腺前后径的平方与前列腺横径的比值;是对良性前列腺增生症患者最大尿流率评估的辅助依据。由于良性前列腺增生症患者前列腺体积与最大尿流率改变不成正比;与
  • 贫铀弹贫化铀弹(Depleted uranium ammunition)又称衰变铀弹或耗弱铀弹,是指弹体使用来自浓缩铀的尾矿(并非来自核电厂的核废料)为主原料的合金所制作出的弹头。由于在实战、演习、射击
  • 仁爱医疗社团法人仁爱医院仁爱医院社团法人仁爱医院,是台南市的地区医院,1986年创立至今。
  • 贝灵厄姆贝灵厄姆(Bellingham)位于美国华盛顿州北部,是霍特科姆县的县治。根据2000年美国人口普查,贝灵厄姆共有67,171人,其中白人占87.88%、亚裔美国人占4.25%、土著美国人占1.48%。
  • 桃乐丝·哈里森·尤斯蒂斯桃乐丝·哈里森·尤斯蒂斯(英语:Dorothy Harrison Eustis,1886年5月30日-1946年9月8日)是美国犬只饲养员和慈善家,美国第一所导盲犬学校The Seeing Eye(英语:The Seeing Eye)的联合创