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