Deadlock Detection & Recovery Strategies
Idea in plain words
Wait-For Graph (WFG) detection for single instance per resource type
Exam tip
High-yield exam topic (High).
Explanation
The OS allows deadlock to occur, periodically invokes detection, and breaks the deadlock via preemption or aborts.
Key points
- Multiple instance detection uses Available, Allocation, and Request matrices
- Recovery Option 1: Process termination (abort all or abort one-by-one by lowest cost/priority)
- Recovery Option 2: Resource preemption with checkpoint rollback; must guard against starvation
Example
Example
Aborting lowest-priority background batch jobs while preserving user interactive foreground sessions.
Code examples
// Deadlock Recovery: Select Victim Process with Minimum Penalty Cost
int selectVictimProcess(const vector<int>& cpuTimeSpent, const vector<int>& priority) {
int victim = -1, minScore = 1e9;
for (size_t i = 0; i < cpuTimeSpent.size(); i++) {
int penalty = cpuTimeSpent[i] + priority[i] * 10;
if (penalty < minScore) { minScore = penalty; victim = i; }
}
return victim;
}
Exam questions
- Describe the methods used for recovering from a deadlock situation.
- What is starvation in deadlock preemption, and how can the aging technique prevent it?