EXAMPLE FILE: ddLckAlgSld
Deadlock Detection for Case of Multiple Instances:
1. FOR rsrceT := 1 TO numRsrceTs DO
couldBeAvInst[rsrceT] :=
numAvailInst[rsrceT] ;
FOR proc := 1 TO numProcs DO
IF FOR rsrceT := 1 TO numRsrceTs
numAlloted[proc, rsrceT] = 0
THEN knowCanFinish[proc] := true
ELSE knowCanFinish[proc] := false ;
2. Find a proc such that both
a. knowCanFinish[proc] = false
b. FOR rsrceT := 1 TO numRsrceTs
request[proc, rsrceT] <=
couldBeAvInst[rsrceT] ;
IF no such proc exists
THEN GOTO step 4.
3. (* pretend that this process terminates after
receiving its current request, without making any
additional requests. *)
FOR rsrceT := 1 TO numRsrceTs
couldBeAvInst[rsrceT] :=
couldBeAvInst[rsrceT] +
numAlloted[proc, rsrceT] ;
knowCanFinish[proc] := true ;
GOTO step 2.
4. IF FOR proc := 1 TO numProcs
knowCanFinish[proc] = true
THEN system is NOT in deadlock
ELSE system is deadlocked