死锁

✍ dations ◷ 2025-12-09 21:00:03 #操作系统技术,协同控制,程式错误

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

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

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

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

死锁的四个条件是:

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

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

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

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

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

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

相关

  • 心房纤颤心房颤动(英语:Atrial fibrillation,简称:Af 或 A-fib),又称为心房微颤、房颤、心房纤维性颤动、心房纤颤、房性纤颤等,是心脏不正常节律/心律不整的一种,特色是心脏快速而不规则的
  • 格里菲斯实验格里菲斯实验(Griffith's experiment),又称格里菲斯转型实验,是由弗雷德里克·格里菲斯(Frederick Griffith)在1928年利用肺炎链球菌与老鼠所进行的一系列生物学实验。实验结果显
  • 法国24法兰西24、法国24(法语:France 24 / France vingt-quatre, .mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Unico
  • 水枧头水枧头 ,是新北市淡水区的一个地名,位于该区东部,范围大致为水源里不含西南端凸出部分、树兴里东北部条状地区。台湾清治末期至日治前期,水枧头地区为一街庄,称为“水枧头庄”,隶
  • 阿基里斯腱跟腱,又称为阿基里斯腱(源于希腊神话中的“阿基里斯之踵”),是位于小腿后侧的肌腱。跟腱是人体中最粗壮有力的肌腱。它长约为15厘米,由腓肠肌和比目鱼肌(英语:Soleus muscle)向下融
  • 多硫化物多硫化物是指含有硫硫键的化合物,主要可以分为二种:多硫化物盐及有机多硫化物。多硫化物阴离子通式为Sn2−,是多硫化氢H2Sn的共轭碱。像别名硫钡粉的多硫化钡即为多硫化物盐。
  • 新开湖新开湖,位于南开大学八里台校区内,是1954年南开大学在校园内新开挖的人工湖泊。取新开挖的湖和新的南开双重含义,被命名为新开湖。
  • 俄罗斯空军俄罗斯空军(俄语:Военно-воздушные силы России,罗马化:;简称俄语:ВВС,罗马化:VVS)是俄罗斯联邦武装力量空天军之分支军种,拥有4000多架飞机。目前正大量
  • 智利华人智利华人是有中国血统的智利人。在圣地亚哥圣迭戈街与阿隆索·奥瓦列街一带,有一条唐人街。在硝石战争(1879-1883)中,有1200名到1500名秘鲁的中国劳动者倒向了智利一方,由此,在战
  • 迪涅莱班迪涅莱班(法语:Digne-les-Bains,法语发音:.mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Unicode","Code2000","G