死锁

✍ dations ◷ 2024-09-20 10:25:26 #操作系统技术,协同控制,程式错误

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

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

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

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

死锁的四个条件是:

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

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

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

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

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

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

相关

  • 验血血液检查(英语:Blood test),是指通过采血以获得受检者的血液,并利用其进行临床检查以获取受检者的健康状况。主要通过医检师进行检验。血液检查主要用于判断患者在一定时间内的身
  • 埃及第一王朝第八第十古埃及第一王朝连同第二王朝通常被纳入为早王朝时期。在这段时期,埃及的首都在提尼斯(Thinis)。埃及第一王朝法老列表有关这个时期的资料乃来自少数的遗址及其他刻有法
  • 玛丽·沃斯通克拉夫特玛丽·沃斯通克拉夫特(英语:Mary Wollstonecraft,1759年4月27日-1797年9月10日),18世纪的英国作家、哲学家和女权主义者。她在短暂的写作生涯中,完成了多篇小说和论文、一本旅行书
  • 䳍形目.mw-parser-output ruby>rt,.mw-parser-output ruby>rtc{font-feature-settings:"ruby"1}.mw-parser-output ruby.large{font-size:250%}.mw-parser-output ruby.larger{fon
  • T-37鸣鸟式教练机T-37鸣鸟式教练机(英语:T-37 Tweet)是美国在第二次世界大战后首种喷射教练机,1952年委托西斯纳飞机公司研制,目的是要去取代各种螺旋桨教练机,T-37于1957年进入美国空军服役T-37采
  • 卡宾达共和国卡宾达共和国(宾达语:Kilansi kia Kabinda、法语:République du Kabinda)是目前未被承认的卡宾达省(目前是安哥拉一部分)分离政府采用的名称。卡宾达是位于中部非洲西部的地区,面
  • 载脂蛋白L18542n/aENSG00000100342n/aO14791n/aXM_011530478、NM_001136540、NM_001136541、NM_003661、NM_145343、NM_145344、NM_001362927n/aNP_001130012、NP_001130013、NP_00365
  • 1859年太阳风暴1859年太阳风暴,是所谓的太阳超级风暴,也称为卡灵顿事件。它发生在第10太阳周期,是在有历史纪录以来最强大的太阳风暴。在1859年9月1日和2日,发生了纪录上最大的地磁风暴,全球各
  • 李一波李一波(1953年5月19日-),生于北京,祖籍湖南。中国作家,导演。1969年8月去黑龙江生产建设兵团,1972年转到河南尉氏县插队,后被招工到开封市棉织厂当钣金工,1977年对调回北京市政机械公
  • 八丈岛似烟管蜗八丈岛似烟管蜗(学名:)是一种会呼及空气的陆地蜗牛的物种,柄眼类支序似烟管蜗牛科琉球似烟管蜗牛属的成员,是一种陆生的有肺类腹足纲软体动物。本物种原生于日本伊豆群岛的八丈岛