碼上快樂
1秒登錄
首頁
榜單
標簽
關於
搜索
相關內容
簡體
繁體
什么是死鎖,簡述死鎖發生的四個必要條件,如何避免與預防死鎖
本文轉載自
查看原文
2018-05-09 19:35
8530
面試題
什么是死鎖
死鎖是指多個進程因競爭資源而造成的一種僵局(互相等待),若無外力作用,這些進程都將無法向前推進。例如,在某一個計算機系統中只有一台打印機和一台輸入 設備,進程P1正占用輸入設備,同時又提出使用打印機的請求,但此時打印機正被進程P2 所占用,而P2在未釋放打印機之前,又提出請求使用正被P1占用着的輸入設備。這樣兩個進程相互無休止地等待下去,均無法繼續執行,此時兩個進程陷入死鎖狀態。
死鎖產生的原因
1. 系統資源的競爭
系統資源的競爭導致系統資源不足,以及資源分配不當,導致死鎖。
2. 進程運行推進順序不合適
進程在運行過程中,請求和釋放資源的順序不當,會導致死鎖。
產生死鎖的四個必要條件:
互斥條件:一個資源每次只能被一個進程使用,即在一段時間內某 資源僅為一個進程所占有。此時若有其他進程請求該資源,則請求進程只能等待。
請求與保持條件:進程已經保持了至少一個資源,但又提出了新的資源請求,而該資源 已被其他進程占有,此時請求進程被阻塞,但對自己已獲得的資源保持不放。
不可剝奪條件:進程所獲得的資源在未使用完畢之前,不能被其他進程強行奪走,即只能 由獲得該資源的進程自己來釋放(只能是主動釋放)。
循環等待條件: 若干進程間形成首尾相接循環等待資源的關系
這四個條件是死鎖的必要條件,只要系統發生死鎖,這些條件必然成立,而只要上述條件之一不滿足,就不會發生死鎖。
死鎖的避免與預防:
死鎖避免的基本思想:
系統對進程發出每一個系統能夠滿足的資源申請進行動態檢查,並根據檢查結果決定是否分配資源,如果分配后系統可能發生死鎖,則不予分配,否則予以分配。這是一種保證系統不進入死鎖狀態的動態策略。
理解了死鎖的原因,尤其是產生死鎖的四個必要條件,就可以最大可能地避免、預防和解除死鎖。所以,在系統設計、進程調度等方面注意如何讓這四個必要條件不成立,如何確定資源的合理分配算法,避免進程永久占據系統資源。此外,也要防止進程在處於等待狀態的情況下占用資源。因此,對資源的分配要給予合理的規划。
死鎖避免和死鎖預防的區別:
死鎖預防是設法至少破壞產生死鎖的四個必要條件之一,嚴格的防止死鎖的出現,而死鎖避免則不那么嚴格的限制產生死鎖的必要條件的存在,因為即使死鎖的必要條件存在,也不一定發生死鎖。死鎖避免是在系統運行過程中注意避免死鎖的最終發生。
×
免責聲明!
本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。
猜您在找
死鎖產生的的四個必要條件
數據庫以及線程發生死鎖的原理及必要條件,如何避免死鎖
死鎖產生的四個必要條件及處理死鎖的策略
操作系統 死鎖四個必要條件
面試題:死鎖的四個必要條件
充分必要條件判斷方法
理解充分條件、充分不必要條件、必要條件和必要不充分條件
可積的判定(充分條件,必要條件)
區分充分條件、必要條件和充分性、必要性
spring boot項目之微信授權(微信支付的必要條件)
粵ICP備18138465號
© 2018-2025 CODEPRJ.COM