Deadlock Review Questions - angrave/SystemProgramming GitHub Wiki

Topics

Coffman Conditions Resource Allocation Graphs Dining Philosophers

  • Failed DP Solutions
  • Livelocking DP Solutions
  • Working DP Solutions: Benefits/Drawbacks

Questions

  • What are the Coffman Conditions?
  • What do each of the Coffman conditions mean? (e.g. can you provide a definition of each one)
  • Give a real life example of breaking each Coffman condition in turn. A situation to consider: Painters, Paint, Paintbrushes etc. How would you assure that work would get done?
  • Be able to identify when Dining Philosophers code causes a deadlock (or not). For example, if you saw the following code snippet which Coffman condition is not satisfied?
// Get both locks or none.
pthread_mutex_lock( a );
if( pthread_mutex_trylock( b ) ) { /*failed*/
   pthread_mutex_unlock( a );
   ...
}
  • If one thread calls
  pthread_mutex_lock(m1) // success
  pthread_mutex_lock(m2) // blocks

and another threads calls

  pthread_mutex_lock(m2) // success
  pthread_mutex_lock(m1) // blocks

What happens and why? What happens if a third thread calls pthread_mutex_lock(m1) ?

  • How many processes are blocked? As usual assume that a process is able to complete if it is able to acquire all of the resources listed below.
    • P1 acquires R1
    • P2 acquires R2
    • P1 acquires R3
    • P2 waits for R3
    • P3 acquires R5
    • P1 acquires R4
    • P3 waits for R1
    • P4 waits for R5
    • P5 waits for R1

(Draw out the resource graph!)