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 // can't be deadlocked
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