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