死鎖是指兩個或兩個以上的進程在執行過程中,由於競爭資源或由於彼此通信而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去;此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的進程稱為死鎖進程。
本文操作環境:windows7系統、DELL G3電腦
死鎖的概念是什麼?
死鎖是指兩個或兩個以上的進程在執行過程中,由於競爭資源或由於彼此通信而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的進程稱為死鎖進程。
解決方法:
在系統中已經出現死鎖後,應該及時偵測到死鎖的發生,並採取適當的措施來解除死鎖。
死鎖預防。
這是一種較簡單和直觀的事先預防的方法。方法是透過設定某些限制條件,去破壞產生死鎖的四個必要條件中的一個或幾個,來預防死鎖發生。預防死鎖是一種較易實現的方法,已被廣泛使用。但是由於所施加的限制條件往往太嚴格,可能會導致系統資源利用率和系統吞吐量降低。
死鎖避免。
系統對進程發出的每一個系統能夠滿足的資源申請進行動態檢查,並根據檢查結果決定是否分配資源;如果分配後系統可能發生死鎖,則不予分配,否則予以分配。這是一種保證系統不會進入死鎖狀態的動態策略。
死鎖偵測與解除。
先偵測:此方法不須事先採取任何限制性措施,也不必檢查系統是否已經進入不安全區,此方法允許系統在運作過程中發生死鎖。但可透過系統所設置的偵測機構,及時偵測出死鎖的發生,並精確地確定與死鎖有關的進程和資源。檢測方法包括定時檢測、效率低時檢測、進程等待時檢測等。
然後解除死鎖:採取適當措施,從系統中將已發生的死鎖清除掉。
這是與偵測死鎖相符的一種措施。當偵測到系統中已發生死鎖時,須將進程從死鎖狀態中解脫出來。常用的實施方法是撤銷或掛起一些進程,以便回收一些資源,再將這些資源分配給已處於阻塞狀態的進程,使其轉為就緒狀態,以繼續運行。死鎖的偵測和解除措施,有可能使系統獲得較好的資源利用率和吞吐量,但在實現上難度也最大。
更多相關知識,請造訪常見問題欄位!
以上是死鎖的概念是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!