fbpx
维基百科

死锁

死锁(英語:deadlock),又譯為死结,計算機科學名詞。當兩個以上的運算單元,雙方都在等待對方停止執行,以取得系統資源,但是沒有一方提前退出時,就稱為死結[1]。在多工作業系統中,作業系統為了協調不同线程,能否取得系統資源時,為了讓系統正常運作,必須要解決這個問題。另一種相似的情況稱為「活锁」。

P1、P2兩個process都需要資源才能繼續執行。P1擁有資源R2、還需要額外資源R1才能執行;P2擁有資源R1、還需要額外資源R2才能執行,兩邊都在互相等待而沒有任何一個可執行。

简介 编辑

例如,一个进程 p1占用了显示器,同时又必须使用打印机,而打印机被进程p2占用,p2又必须使用显示器,这样就形成了死锁。 因為p1必須等待p2釋出打印機才能夠完成工作並釋出螢幕,同時p2也必須等待p1釋出顯示器才能完成工作並釋出打印機,形成循環等待的死結。

起因 编辑

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

死锁的四个条件是:

  • 禁止抢占(no preemption):系統資源不能被强制从一个进程中退出。
  • 持有和等待(hold and wait):一个进程可以在等待时持有系统资源。
  • 互斥(mutual exclusion):資源只能同時分配給一個行程,無法多個行程共用。
  • 循环等待(circular waiting):一系列进程互相持有其他进程所需要的资源。

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

預防 编辑

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

消除 编辑

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

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

活結 编辑

活結livelock),與死結相似,死結是行程都在等待對方先釋放資源;活結則是行程彼此釋放資源又同時占用對方釋放的資源。當此情況持續發生時,儘管資源的狀態不斷改變,但每個行程都無法取得所需資源,使得事情沒有任何進展。

範例 编辑

假設兩人正好面對面碰上對方:

  • 死結:兩人互不相讓,都在等對方先讓開。
  • 活結:兩人互相禮讓,卻恰巧站到同一側,再次讓開,又站到同一側,同樣的情況不斷重複下去導致雙方都無法通過。

参见 编辑

参考文献 编辑

  1. ^ Coulouris, George. Distributed Systems Concepts and Design. Pearson. 2012: 716. ISBN 978-0-273-76059-7. 

死锁, 死结, 重定向至此, 关于有關繩結上的死結, 请见, 單結, 本條目存在以下問題, 請協助改善本條目或在討論頁針對議題發表看法, 此條目需要擴充, 2015年3月22日, 请協助改善这篇條目, 更進一步的信息可能會在討論頁或扩充请求中找到, 请在擴充條目後將此模板移除, 此條目需要精通或熟悉相关主题的编者参与及协助编辑, 2015年3月22日, 請邀請適合的人士改善本条目, 更多的細節與詳情請參见討論頁, 此條目需要补充更多来源, 2021年4月12日, 请协助補充多方面可靠来源以改善这篇条目, 无法查证的. 死结 重定向至此 关于有關繩結上的死結 请见 單結 本條目存在以下問題 請協助改善本條目或在討論頁針對議題發表看法 此條目需要擴充 2015年3月22日 请協助改善这篇條目 更進一步的信息可能會在討論頁或扩充请求中找到 请在擴充條目後將此模板移除 此條目需要精通或熟悉相关主题的编者参与及协助编辑 2015年3月22日 請邀請適合的人士改善本条目 更多的細節與詳情請參见討論頁 此條目需要补充更多来源 2021年4月12日 请协助補充多方面可靠来源以改善这篇条目 无法查证的内容可能會因為异议提出而被移除 致使用者 请搜索一下条目的标题 来源搜索 死锁 网页 新闻 书籍 学术 图像 以检查网络上是否存在该主题的更多可靠来源 判定指引 死锁 英語 deadlock 又譯為死结 計算機科學名詞 當兩個以上的運算單元 雙方都在等待對方停止執行 以取得系統資源 但是沒有一方提前退出時 就稱為死結 1 在多工作業系統中 作業系統為了協調不同线程 能否取得系統資源時 為了讓系統正常運作 必須要解決這個問題 另一種相似的情況稱為 活锁 P1 P2兩個process都需要資源才能繼續執行 P1擁有資源R2 還需要額外資源R1才能執行 P2擁有資源R1 還需要額外資源R2才能執行 兩邊都在互相等待而沒有任何一個可執行 目录 1 简介 2 起因 3 預防 4 消除 5 活結 6 範例 7 参见 8 参考文献简介 编辑例如 一个进程 p1占用了显示器 同时又必须使用打印机 而打印机被进程p2占用 p2又必须使用显示器 这样就形成了死锁 因為p1必須等待p2釋出打印機才能夠完成工作並釋出螢幕 同時p2也必須等待p1釋出顯示器才能完成工作並釋出打印機 形成循環等待的死結 起因 编辑如果系统中只有一个进程 当然不会产生死锁 如果每个进程仅需求一种系统资源 也不会产生死锁 不过这只是理想状态 在现实中是可遇不可求的 死锁的四个条件是 禁止抢占 no preemption 系統資源不能被强制从一个进程中退出 持有和等待 hold and wait 一个进程可以在等待时持有系统资源 互斥 mutual exclusion 資源只能同時分配給一個行程 無法多個行程共用 循环等待 circular waiting 一系列进程互相持有其他进程所需要的资源 死锁只有在四个条件同时满足时發生 预防死锁必須至少破坏其中一項 預防 编辑系統也可以尝试回避死锁 因为在理论上 死锁总是可能产生的 所以操作系统尝试监视所有进程 使其没有死锁 消除 编辑最简单的消除死锁的办法是重启系统 更好的办法是终止一个进程的运行 同样也可以把一个或多个进程回滚到先前的某个状态 如果一个进程被多次回滚 迟迟不能占用必需的系统资源 可能会导致资源匮乏 活結 编辑活結 livelock 與死結相似 死結是行程都在等待對方先釋放資源 活結則是行程彼此釋放資源又同時占用對方釋放的資源 當此情況持續發生時 儘管資源的狀態不斷改變 但每個行程都無法取得所需資源 使得事情沒有任何進展 範例 编辑假設兩人正好面對面碰上對方 死結 兩人互不相讓 都在等對方先讓開 活結 兩人互相禮讓 卻恰巧站到同一側 再次讓開 又站到同一側 同樣的情況不斷重複下去導致雙方都無法通過 参见 编辑競爭危害参考文献 编辑 Coulouris George Distributed Systems Concepts and Design Pearson 2012 716 ISBN 978 0 273 76059 7 取自 https zh wikipedia org w index php title 死锁 amp oldid 74327746, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。