跳至內容

死結

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

這是本頁的一個歷史版本,由EmausBot留言 | 貢獻2012年4月28日 (六) 17:37 (r2.6.4) (机器人添加:mk:Стратегии за справување со застој編輯。這可能和目前版本存在著巨大的差異。

死結(Deadlock),這裡指的是行程死結,是個電腦技術名詞。它是作業系統或軟體執行的一種狀態:在多工系統下,當一個或多個行程等待系統資源,而資源又被行程本身或其它行程占用時,就形成了死結。有個變種叫活結

簡介

例如,一個行程 p1占用了顯示器,同時又必須使用印表機,而印表機被行程p2占用,p2又必須使用顯示器,這樣就形成了死結。現實生活中也有死結的例子,在一個十字路口,四面的汽車都在等待(靠右行),每次都是右邊的汽車先行。

死結的預防

如果系統中只有一個行程,當然不會產生死結。如果每個行程僅需求一種系統資源,也不會產生死結。不過這只是理想狀態,在現實中是可遇不可求的。

禁止搶占:no preemption

持有和等待:hold and wait

互斥:mutual exclusion

迴圈等待:bounded waiting

死結的避免

我們也可以嘗試迴避死結。因為在理論上,死結總是可能產生的,所以作業系統嘗試監視所有行程,使其沒有死結。

死結的消除

最簡單的消除死結的辦法是重新啟動系統。更好的辦法是終止一個行程的執行。

同樣也可以把一個或多個行程轉返到先前的某個狀態。如果一個行程被多次轉返,遲遲不能占用必需的系統資源,可能會導致行程飢餓

參見

外部連結