2013-03-07 107 views
1

我已經得到了這一切整理出來,除了關於一個特定的困惑:麻煩實施死鎖檢測算法

如果分配 = 0,則完成[我]:!= FALSE;否則,Finish [i]:= true。

這是否意味着該特定行的總和是零或什麼?

算法:

數據結構:

  • 可用:的長度爲m的矢量表示每個類型的可用資源 的數目。
  • 分配:一個n×m的矩陣定義當前分配給各處理中的每個 類型的資源的數目。
  • 請求:一個n×m的矩陣表示各 過程的當前請求。如果請求[i] [j] = K,資源類型R Ĵ的然後進程Pi 是 請求ķ更多的實例。
  • 作品:長度爲m的矢量。
  • 完成:長度爲n的矢量。

算法:

  1. 初始化工作:=可用。
    • 對於i = 1,2,...,n,如果分配 i!= 0, 則Finish [i]:= false;否則,Finish [i]:= true。
  2. 查找索引i,使得兩個:
    • 的(a)完成[I] =假
    • (b)要求 < =工作
    • 如果沒有這樣的我存在,去步驟4
  3. 工作:=工作+分配
    • 完成[I]:=真
    • 轉到步驟2
  4. 如果完成[I] =假,對於某個i,1 < = 1 ... N,則該系統是在一個死鎖 狀態。此外,如果Finish [i] = false,則處理P i被鎖定。 兩個向量之間的小於或等於關係(< =)定義如下:let X和Y是長度爲n的向量。我們說X < = Y當且僅當對於所有i = 1,2,...,n,x [i] < = y [i]。分配和請求矩陣的行被視爲向量,並且在算法中被稱爲分配和。

回答

1
由於

分配是矢量,「分配!= 0」表示,以測試分配針對零向量(由全零的矢量)。

換言之,「分配 == 0」當且僅當在向量中的每個條目是0.