死锁

✍ dations ◷ 2025-09-08 05:44:33 #操作系统技术,协同控制,程式错误

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

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

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

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

死锁的四个条件是:

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

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

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

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

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

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

相关

  • 白血病白血病(拉丁语:leukemia,/luːˈkiːmiːə/)是一群癌症种类的统称,英文名称来自于古希腊语,λευκός(leukos,白色)与αἷμα(haima,血液)的组合。 它通常发病于骨髓,造成不正常白血
  • 挪威克朗挪威挪威克朗(货币代码:NOK,挪威语:krone,kroner,简写为Kr)是挪威的法定货币。一克朗可分为一百个欧尔(书面挪威语:øre)(øre)。但所有欧尔的货币已于2012年5月遭淘汰。该词源自瑞典语k
  • 薛凤祚薛凤祚(1600年-1680年),字仪甫,号寄斋,淄川人(今山东淄博)。征仕郎薛冈之孙子,中书科中书舍人薛近洙之子。明末清初天文学家及数学家,与王锡阐并称“南王北薛”,著有《算学会通正集》十
  • 热经济学热经济学(英语:Thermoeconomics),也被称为生物物理经济学(英语:Biophysical economics),是一种非主流经济学,它把热力学定律应用到经济理论中来。术语“热经济学”是由美国工程师梅伦
  • 明斯特和约明斯特和约(Vrede van Münster),签定于1648年,和约中西班牙国王费利佩四世正式承认荷兰为主权国家。明斯特和约被视为威斯特伐利亚和约的一部分,三十年战争和八十年战争结束的里
  • 甲酸酐甲酸酐(英语:Formic anhydride 或 methanoic anhydride)是分子式为C2H2O3的有机化合物,可看作两个甲酸脱水形成的酸酐。
  • 一枝梅 (越南佛教徒)一枝梅(越南语:Nhất Chi Mai,1934年2月20日—1967年5月16日),出生名潘氏梅(越南语:Phan Thị Mai),法号释女耀煌(音译,越南语:Thích nữ Diệu Huỳnh),越南佛教徒,为抗议越南战争,于1967
  • 约翰·伯宁罕约翰·伯宁罕(英语:John Burningham,1936年4月27日-2019年1月4日),英国作家与儿童文学插画家,尤以童书绘本著名。他与同为插画家的妻子海伦·奥森柏莉目前住在伦敦北区。自2012年8
  • 张石川张石川(1889年-1953年或1890年-1954年),原名张伟通,浙江宁波人。字蚀川,中国电影事业之开拓者,电影事业家,中国最早期导演之一。16岁时,父亲病逝。1913年,美国商人于上海创办亚细亚影戏
  • 吴长纯吴长纯(1855年-1906年),字静安,安徽庐江人,曾任清末新建陆军军官。淮军将领吴长庆从弟。光绪五年(1879年)武孝廉,后随吴长庆部入朝鲜平定壬午兵变,长纯在乱兵之中,率部找寻到失踪的朝鲜