Zum Inhalt springen

Bankieralgorithmus

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 1. August 2004 um 13:06 Uhr durch Mathiasl26 (Diskussion | Beiträge) (typo). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Beschreibung

Der Banker's Algorithmus wird zum Erkennen einer Deadlock-Situation genutzt. Dazu werden die verfügbaren Ressourcen und die Prozesse aufgelistet. Die Ressourcen gliedern sich in gesamte Ressourcen und verfügbare Ressourcen. Die Prozesse erhalten ebenfalls zwei Eigenschaften: Zum einen die Ressourcen, die bereits besetzt werden, zum anderen die noch benötigten Ressourcen.

Dann werden alle Prozesse - sofern möglich - nacheinander abgearbeitet und die belegten zu den verfügbaren Ressourcen zugeführt. Nach Ausführung des Algorithmus steht fest, ob ein Deadlock vermeidbar ist oder nicht. Kommt der Banker Algorithmus zu einem erfolgreichen Ende, kann unter Umständen durch "unbedachte" Ausführung der Prozesse trotzdem ein Deadlock entstehen.

Voraussetzungen

Gegeben sind vor Ausführung des Algorithmus folgende Informationen:

  • m Ressourcen
  • n Threads/Prozesse (mit belegten Ressourcen)
  • sowie die noch benötigten Ressourcen der Prozesse

Gesucht wird dann die Information, ob ein Deadlock auftreten kann, oder nicht.

Formale Beschreibung

Gesamtressourcen
Verfügbare Ressourcen
von Prozess i belegte Ressourcen
von Prozess i benötigte Ressourcen
alle Prozesse i sind nicht markiert.












Beispiel







Start des Algorithmus


1. Schritt: Prozess 2 ausführen


2. Schritt: Prozess 1 ausführen


3. Schritt: Kein Prozess mehr ausführbar

DEAD LOCK!