Next: Resourcen Verteilungs-Graph
Up: Deadlocks
Previous: Deadlocks
  Contents
Folgende vier Bedingungen müssen eintreten, damit ein Deadlock
erreicht ist.
- Wechselseitiger Ausschluss: Jede Ressource ist entweder von
genau einem Prozess in Gebrauch oder sie ist frei.
- Behalten und blockieren: Prozesse die schon Ressourcen haben
können diese behalten und neue anfordern.
- Keine Wegnahme: Ressourcen können Prozessen nicht weggenommen
werden.
- Zirkuläres Warten: Es muss eine Menge von Prozessen
geben, bei den
auf eine Resource wartet, die
hat,
auf eine Resource wartet, die
hat, ... und
auf eine
Resource wartet die
hat.
In obigem Beispiel sind diese vier Bedingungen erfüllt. Die Objekte m1
(first)
sind von threadA und m2 (second) von threadB in Gebrauch. Es
gibt keine weiteren Resourcen. Also ist die erste Bedingung erfüllt. Bedingung
zwei wird durch die Möglichkeit innerhalb einer synchronized-Umgebung
eine weitere synchronized-Umgebung zu deklarieren, erfüllt. In
Java ist es nicht möglich, dass ein Objekt das von einem Thread
gelockt wurde, von einem anderen Thread freigegeben wird. Damit ist
Bedingung drei erfüllt. Die Erfüllung von Punkt vier ist bereits oben erläutert
worden.
Next: Resourcen Verteilungs-Graph
Up: Deadlocks
Previous: Deadlocks
  Contents
Prof. Dr. Pluemicke
2003-05-10