- Banker's Algorithmus
-
Der Bankieralgorithmus (englisch Banker's algorithm) geht auf Edsger W. Dijkstra (1965) zurück und wird zur Vermeidung von Verklemmungen (deadlock) 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 die Ausführung möglich ist – nacheinander abgearbeitet und die belegten den verfügbaren Ressourcen zugeführt. Nach Ausführung des Algorithmus steht fest, ob eine Verklemmung vermeidbar ist oder nicht. Kommt der Bankieralgorithmus zu einem erfolgreichen Ende, kann unter Umständen durch unbedachte Ausführungsreihenfolge der Prozesse trotzdem eine Verklemmung entstehen.
Inhaltsverzeichnis
Namensursprung
Wie einem Bankier nur eine begrenzte Menge Geld zur Verfügung steht, um die Wünsche seiner Kunden zu befriedigen, so steht einem Betriebssystem nur eine begrenzte Anzahl von Betriebsmitteln zur Verfügung. Der Bankier hält deswegen immer so viel Geld in seinem Tresor zurück, dass er noch von mindestens einem Kunden das komplette Kreditlimit erfüllen kann. Dieser eine Kunde (Prozess) kann dann sein Geschäft erfolgreich zum Abschluss bringen und das verwendete Geld wieder zurück auf die Bank bringen. Nun kann es ein anderer Kunde haben.
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 die Information, ob eine Verklemmung auftreten kann, oder nicht.
Formale Beschreibung
Gesamtressourcen
Verfügbare Ressourcen
von Prozess i belegte Ressourcen (werden nach Prozessdurchführung freigegeben)
von Prozess i benötigte Ressourcen (müssen für einen Prozessstart vorhanden sein)
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
- da
- also keiner der verbliebenen Prozesse (Prozess 3 und 4) mehr mit den verfügbaren Betriebsmitteln () zur Ausführung gebracht werden kann. Der Algorithmus gibt folgerichtig DEADLOCK bzw. »schlechter Zustand« zurück.
Wikimedia Foundation.