1
我已經得到了這一切整理出來,除了關於一個特定的困惑:麻煩實施死鎖檢測算法
如果分配我 = 0,則完成[我]:!= FALSE;否則,Finish [i]:= true。
這是否意味着該特定行的總和是零或什麼?
算法:
數據結構:
- 可用:的長度爲m的矢量表示每個類型的可用資源 的數目。
- 分配:一個n×m的矩陣定義當前分配給各處理中的每個 類型的資源的數目。
- 請求:一個n×m的矩陣表示各 過程的當前請求。如果請求[i] [j] = K,資源類型R Ĵ的然後進程Pi 我是 請求ķ更多的實例。
- 作品:長度爲m的矢量。
- 完成:長度爲n的矢量。
算法:
- 初始化工作:=可用。
- 對於i = 1,2,...,n,如果分配 i!= 0, 則Finish [i]:= false;否則,Finish [i]:= true。
- 查找索引i,使得兩個:
- 的(a)完成[I] =假
- (b)要求我 < =工作
- 如果沒有這樣的我存在,去步驟4
- 工作:=工作+分配我
- 完成[I]:=真
- 轉到步驟2
- 如果完成[I] =假,對於某個i,1 < = 1 ... N,則該系統是在一個死鎖 狀態。此外,如果Finish [i] = false,則處理P i被鎖定。 兩個向量之間的小於或等於關係(< =)定義如下:let X和Y是長度爲n的向量。我們說X < = Y當且僅當對於所有i = 1,2,...,n,x [i] < = y [i]。分配和請求矩陣的行被視爲向量,並且在算法中被稱爲分配和。