Deadlock

Ein Deadlock ist eine Situation, in der sich mehrere Prozesse gegenseitig dauerhaft blockieren, weil jeder von ihnen auf ein Betriebsmittel wartet, das bereits von einem anderen Prozess exklusiv belegt ist, sodass kein Systemfortschritt mehr möglich ist.

Notwendige Bedingungen (1-3):

  1. Beschränkte Belegung (mutual exclusion): Jedes involvierte BM ist entweder exklusiv belegt oder frei.
  2. Zusätzliche Belegung (hold-and-wait): Die Prozesse haben bereits BM belegt, wollen zusätzlich weitere BM belegen und warten darauf, dass sie frei werden (notwendige BM werden nicht auf einmal angefordert).
  3. Keine vorzeitige Rückgabe (no pre-emption): Die bereits belegten BM können den Prozessen nicht wieder entzogen werden, sondern müssen von den Prozessen selbst explizit zurückgegeben werden.

Hinreichende Bedingung (4):

  1. Gegenseitiges Warten (circular wait): Eine geschlossene Kette von zwei oder mehr wartenden Prozessen muss existieren, wobei ein Prozess BM vom nächsten haben will, die dieser belegt hat und die deshalb nicht mehr frei sind.