Extending the Resource Graph Model
Reasoning about deadlock in real systems is more complex than the simple resource graph model allows.
- Resources may have multiple instances (e.g., memory).
Cycles are necessary but not sufficient for deadlock.
For deadlock, each resource node with a request arc in the cycle must be fully allocated and unavailable.
- Processes may block to await events as well as resources.
E.g., A and B each rely on the other to wake them up for class.
These “logical” producer/consumer resources can be considered to be available as long as the producer is still active.
Of course, the producer may not produce as expected.