資源分配圖
死鎖的預防與避免
銀行家演算法(難點)
死鎖的檢測與恢復
死鎖發生的四個必要條件
互斥占有並等待
非搶占迴圈等待
滿足以上四個條件,不一定發生死鎖;但死鎖的發生一定要滿足上述四個條件。
(如果是單例項資源,滿足上述四個條件則一定會發生死鎖)
死鎖是指在程序集合內的所有程序都處於阻塞狀態,而且其中的程序只能由該程序集合內的程序喚醒。
錯誤的表述:死鎖就是永遠無法獲取資源
程序指向資源的邊為申請邊;資源指向程序的邊為分配邊
死鎖的預防
通過限制資源申請,使四個必要條件中的任意乙個條件不滿足。***是低裝置使用率和系統吞吐率
死鎖的避免
動態地檢測資源分配狀態以確保迴圈等待條件不可能成立。
獲得以後如何申請資源的附加資訊。有了關於每個程序的申請與釋放的完全順序,可決定程序是否因申請而等待。每次申請要求系統考慮現有可用資源、現已分配給每個程序的資源和每個程序將來申請與釋放的資源,以決定當前申請是否滿足或必須等待,從而避免死鎖發生的可能性。
首先需要判斷安全狀態
資源分配圖演算法:適用於單例項資源
銀行家演算法:適用於多例項資源
當程序申請乙個可用資源時,系統必須確定這一資源申請是可以立即分配還是要等待。只有分配後使系統仍處於安全狀態,才允許申請。
死鎖的檢測
死鎖的恢復
死鎖的學習筆記
一 什麼是死鎖?如何避免死鎖?所謂死鎖 就是指兩個或兩個以上的程序在執行過程中,因為爭奪資源而造成的一種互相等等待的現象,若無外力作用,他們將無法進行下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的程序成為死鎖程序。由於資源占用是互斥的,當摸個程序提出申請資源後,使得有關程序在無外...
java學習筆記88 死鎖
在程式中是不允許出現死鎖情況,一旦發生那麼只能手動停止jvm的執行,然後查詢並修改產生死鎖的問題 簡單的描述死鎖就是 倆個執行緒t1和t2,t1拿著t2需要等待的鎖不釋放,而t2又拿著t1需要等待的鎖不釋放。注 可以通過jconsole檢視到執行緒死鎖的情況 例如 public class thre...
多執行緒學習筆記(三)死鎖
一 什麼是死鎖?執行緒死鎖描述的是這樣一種情況 多個執行緒同時被阻塞,他們中的乙個或者全部都在等待某個資源被釋放。由於執行緒無限期地阻塞,因此程式不可能正常終止。二 產生死鎖的條件 互斥條件 該資源任意乙個時刻只由乙個執行緒占用。請求與保持條件 乙個執行緒因請求資源而阻塞時,對已獲得的資源保持不放。...