死锁

✍ dations ◷ 2025-11-23 15:49:08 #操作系统技术,协同控制,程式错误

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

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

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

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

死锁的四个条件是:

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

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

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

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

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

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

相关

  • 哥廷根大学哥廷根格奥尔格·奥古斯特大学(德语:Georg-August-Universität Göttingen),简称哥廷根大学,是位于德国西北部下萨克森州南端的哥廷根市的公立研究型大学,因英国国王兼德国汉诺威
  • 曼努埃尔·洛萨达·比利亚桑特曼努埃尔·洛萨达·比利亚桑特(西班牙语:Manuel Losada Villasante,1929年12月20日-),是西班牙生物化学家和药学家。他的研究方向主要集中在光合作用和生物化学能量转换系统方面。
  • 索科特拉岛索科特拉岛(阿拉伯语:سقطرى,Suquṭra),明代称须多大屿、速古答剌(《郑和航海图》),是非洲之角以东,印度洋西部一群岛,位于北纬12.18°~12.42°与东经53.19°~54.33°之间,阿拉伯海与
  • 海禁海禁(又称洋禁),是一种锁国政策,旨在禁止民间私自出海,有谓“尺板不得出海”,也限制外国商人前往本国通商。具体实施随着时间变迁而有张有弛,即“严禁”及“弛禁”之分。海禁目的是
  • 辉发河辉发河(满语:ᡥᠣᡳᡶᠠ ᠪᡳᡵᠠ,转写:Hoifa bira)位于中国东北地区中部,是第二松花江左岸支流。辉发河上游也称大柳河,古时曾名卫乐江(韦泺江)、回跋江、回霸江、灰扒江。全长267.7
  • 谢道时谢道时(1948年3月16日-2016年8月4日),台湾生物化学家,第二十九届中央研究院院士,2009年起任中央研究院细胞与个体生物学研究所所长。谢道时1970年毕业于中华民国国立台湾大学化学
  • ISO 3166-2列表国际标准化组织的ISO 3166-1国际标准是ISO 3166的第一部分,有ISO标准国家代码。1974年首次出版。ISO 3166-1为国家和地区建立国际认可的代码,代码分为3种,即二位字母代码、三位
  • 前厄尔格鲁本峰坐标:46°54′29″N 10°46′25″E / 46.90806°N 10.77361°E / 46.90806; 10.77361前厄尔格鲁本峰(德语:Vordere Ölgrubenspitze),是奥地利的山峰,位于该国西部,由蒂罗尔州负责
  • 蒋兆和蒋兆和(1904年5月9日-1986年4月15日),原名蒋万绥,籍贯湖北麻城,生于四川泸州,中国画家。夫人为萧琼。1920年于上海工作,曾写广告画,服装设计,自学西洋画。1927年受聘于国立中央大学(194
  • 实龙岗北地铁站实龙岗北地铁站(英语:Serangoon North MRT Station,代号CR9)是新加坡地铁跨岛线的一个车站,位于新加坡本岛实龙岗规划区与后港规划区交界处。2019年1月25日,陆交局宣布跨岛线第一