死锁

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

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

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

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

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

死锁的四个条件是:

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

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

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

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

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

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

相关

  • 双倒数图双倒数图也称为莱恩威弗-伯克作图,是生物化学用来描述酶动力学的莱恩威弗-伯克方程的图示法,由汉斯·莱恩威弗(英语:Hans Lineweaver)和迪恩·伯克(英语:Dean Burk)于1934年提出。双
  • 硝化反应硝化是向有机化合物分子中引入硝基(-NO2)的过程,硝基就是硝酸失去一个羟基形成的一价的基团。芳香族化合物硝化的反应机理为:硝酸的-OH基被质子化,接着被脱水剂脱去一分子的水形成
  • 环辛四烯环辛四烯(COT)全称“1,3,5,7-环辛四烯”,是环辛烷的完全不饱和衍生物,化学式C8H8。室温下为无色至金黄色液体。属于环状多烯烃,结构与苯相似。与苯不同的是,环辛四烯不具芳香性。
  • 提毗提毗(天城文梵语:देवी,转写:Devī),梵语即为“女神”之意,象征了神圣的女性面,印度教的性力派认为提毗与提婆——男神是相互不可或缺的对存在。婆罗门教奉行一元论,认为提毗是所
  • 见内文虻科(学名Tabanidae),又名马蝇,是双翅目下的一科,其中昆虫主要靠吸食哺乳动物的血液维生。根据ITIS,虻科分为: 下科Chrysopsinae: Merycomyia Chrysops Neochrysops Silviu
  • 一粒小麦一粒小麦(学名:Triticum monococcum)是小麦属中最原始的二倍体栽培种,野生的一粒小麦发现于新月沃土地区石器时代的遗址中,约公元前7000年左右在今土耳其东南部地区开始人工培育
  • 遣隋使遣隋使,日本推古天皇朝(倭国)派遣到隋国的使节团。从600年(隋文帝开皇二十年)、607年(隋炀帝大业三年)、608年(隋炀帝大业四年)、614年(隋炀帝大业十年)、618年(隋炀帝大业十四年)的18年
  • 线路表本列表列出所有于中国广东省深圳市境内营运的公共汽车线路,以及所有深圳与东莞、惠州之间的城际公交线路。关于表格中“运营商”栏内容及“编号”栏配色的说明如下:
  • 巴科洛德描戈律(英语:Bacolod),即巴科洛德,是位于菲律宾西米沙鄢西内格罗省的首府,位于内格罗斯岛,建立于1755年或1756年,1938年升级为市,截至2015年,共有人口561875。下辖61个镇。天主教巴科
  • 弗兰季舍克·克里格尔弗兰季舍克·克里格尔(捷克语:František Kriegel,1908年4月10日-1979年12月3日),是一名医生,捷克斯洛伐克共产党领导人之一,亚历山大·杜布切克的改革伙伴。。