死锁

✍ dations ◷ 2025-11-30 05:58:39 #操作系统技术,协同控制,程式错误

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

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

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

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

死锁的四个条件是:

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

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

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

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

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

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

相关

  • 生物防治剂生物防治(Biological control)或生物害虫防治(Biological pest control)是病虫害防治的一种方法,使用生物(英语:bioeffector)缓解昆虫、螨虫、野草和病态植物对人类农作物、环境等造
  • 库贾氏病克罗伊茨费尔特-雅各布病(英语:Creutzfeldt-Jakob disease,简称CJD),或称克-雅氏症、克-雅氏病、克雅二氏症、克雅二氏病、库雅氏症、库贾氏症、克雅氏症、克雅氏病,是一种发生在
  • FMA解剖学基础模型,又称解剖学基础模型本体(Foundational Model of Anatomy Ontology, FMA),是解剖学领域的一部参考本体。它是对生物体典型的表现型结构的符号表达形式;FMA是一部由
  • 子宫子宫,中医学常称胞宫,又称女子胞,是中医的奇恒之腑之一。位于小腹正中,膀胱之后,直肠之前,下口连接阴道,为女性发生月经和孕育胎儿的器官。子宫是雌性哺乳动物的生殖器官中,用来让胚
  • 别嘌醇别嘌呤醇(英语:Allopurinol,又名别嘌醇、异嘌呤醇)是主治高尿酸血症(血浆中的尿酸浓度过高)及其并发症痛风病等的药物。别嘌呤醇是一种嘌呤类似物;它是次黄嘌呤(体内一种常见的嘌呤)
  • 水煮水煮是一种湿热烹饪技术,其涉及通过将食物浸没在液体如水、牛奶、浆料或酒中来进行烹饪。与其它“湿热”烹饪方法(例如煨和煮沸)不同,因为它使用相对低的温度(约160-180°F(71-82
  • 澳门博物馆澳门博物馆(葡萄牙语:Museu de Macau , 英语:Macao Museum),是展示澳门历史及民俗的城市博物馆。澳门博物馆位于澳门市中心的古迹大炮台上,由葡萄牙建筑师马锦途所设计,于1996年9月
  • 图格里尔三世图格里尔三世(波斯语:طغرل‎、土耳其语:Tuğrul;?-1194年),塞尔柱帝国末代苏丹。他是苏丹阿尔斯兰·沙阿之子,他在1175至1176年即位。在1190年,他试图摆脱负责管教他的阿塞拜疆阿
  • 佟攀梅佟攀梅(?-1858年),汉军正蓝旗人。清朝军事将领,武榜眼。道光十八年(1838年)戊戌科一甲第二名进士。授二等侍卫。差满外放任职。咸丰年间,贵州苗民反清运动高涨,佟攀梅率军进剿,累升贵州
  • 官贤官贤(1449年-1514年),字汝俊,山东平度州(今平度市)人。明朝政治人物。官至陕西提学佥事。官贤为成化十三年(1477年)丁酉科举人,弘治三年(1490年)庚戌科进士。授刑部主事,迁任河南汝州同知