Deadlock

死鎖檢測 |節點 T4 是否應該指向 T1 和 T2?

  • March 2, 2021

這個關於死鎖檢測的例子是在我的一次講座中展示的,我對此表示懷疑。圖像如下所示。

對於死鎖檢測機制,為什麼 T4 只指向 T2 而不是 T1?按時間順序,T1 在 T4 之前請求排他鎖。那麼T4不應該也指向T1嗎?

依賴圖

T4 隻請求 B,由 T2 持有。該線表示從請求者到持有者對資源的依賴;該圖沒有模擬服務員的“隊列”,這是一個不同的問題。

為了幫助理解圖表,繪製了 4 個過程 T1-T4。每次將資源授予程序時,將字母放在它旁邊。當您意識到一個程序需要另一個程序持有的資源時,請從服務員到持有者畫一條線。

所以按順序:

  • T1 被授予 A
  • T2 獨占 B,T1 請求 B。從 T1 到 T2 畫一條線。
  • T3 被授予 C
  • T2 請求 C 上的排他鎖,該鎖與 T3 持有的共享鎖不兼容。從 T2 到 T3 畫一條線。
  • T4 請求在 B 上請求由 T2 持有的排他鎖。從 T4 到 T2 畫一條線。

順便說一句,這不是僵局。如果這對您有所幫助,請不要忘記將其標記為已解決;謝謝你。

引用自:https://dba.stackexchange.com/questions/286263