Deadlock prevention

Definition

From the definition:

  • deadlock => mutual exclusion and hold and wait and no preemption and circular wait.

Which is equivalent to:

  • not mutual exclusion or not hold and wait or not no preemption or not circular wait => not deadlock.

So, if in the solution of a concurrent problem at least one of the necessary conditions can never hold, there is no possibility of deadlock.

This is called deadlock prevention:

  • the prevention lies on the application side.

Denying the necessary conditions

Denying the mutual exclusion condition is only possible if resources are shareable at the same time.

  • Otherwise race conditions can occur.

Denying the preemption condition is only possible if resources are preemptable.

  • Which is often not the case.

Thus, in general, only the other conditions (hold-and-wait and circular wait) are used to implement deadlock prevention.

In the dining-philosopher problem, the forks are not shareable at the same time.

In the dining-philosopher problem, a fork cannot be taken away from whoever has it.

Denying the hold-and-wait condition can be done if a process requests all required resources at once.

  • In this solution, starvation can occur.

  • Aging mechanisms are often used to solve starvation.

Last updated