www.wikidata.de-de.nina.az
Der Bankieralgorithmus englisch Banker s algorithm geht auf Edsger W Dijkstra 1965 zuruck und wird zur Vermeidung von Verklemmungen deadlock genutzt Dazu werden die verfugbaren Ressourcen und die Prozesse aufgelistet Die Ressourcen gliedern sich in gesamte Ressourcen und verfugbare Ressourcen Die Prozesse erhalten ebenfalls zwei Eigenschaften Zum einen die Ressourcen die bereits besetzt werden zum anderen die noch benotigten Ressourcen Dann werden alle Prozesse sofern die Ausfuhrung moglich ist nacheinander abgearbeitet und die belegten den verfugbaren Ressourcen zugefuhrt Nach Ausfuhrung des Algorithmus steht fest ob eine Verklemmung vermeidbar ist oder nicht Kommt der Bankieralgorithmus zu einem erfolgreichen Ende kann unter Umstanden durch unbedachte Ausfuhrungsreihenfolge der Prozesse trotzdem eine Verklemmung entstehen Inhaltsverzeichnis 1 Namensursprung 2 Anwendung 3 Voraussetzungen 4 Implementierung 5 Beispiele 5 1 Mit Verklemmung 5 2 Ohne Verklemmung 6 Einzelnachweise 7 WeblinksNamensursprung BearbeitenWie einem Bankier nur eine begrenzte Menge Geld zur Verfugung steht um die Wunsche seiner Kunden zu befriedigen so steht einem Betriebssystem nur eine begrenzte Anzahl von Betriebsmitteln zur Verfugung Der Bankier halt deswegen immer so viel Geld in seinem Tresor zuruck dass er noch von mindestens einem Kunden das komplette Kreditlimit erfullen kann Dieser eine Kunde Prozess kann dann sein Geschaft erfolgreich zum Abschluss bringen und das verwendete Geld wieder zuruck auf die Bank bringen Nun kann es ein anderer Kunde haben Anwendung BearbeitenAuch wenn der Bankieralgorithmus im Kontext von Betriebssystemen immer als elegante Losung zur Vermeidung von Verklemmungen aufgefuhrt ist sollte bedacht werden dass dieser in der Praxis kaum Anwendung findet Der Algorithmus berucksichtigt zum Beispiel nicht dass die Anzahl von Prozessen sowie Ressourcen variabel ist Des Weiteren geht der Algorithmus davon aus dass alle zur Laufzeit von den Prozessen benotigten Ressourcen schon vorher genau bekannt sind was in Realitat nur selten der Fall ist Voraussetzungen BearbeitenFur die Ausfuhrung des Algorithmus mussen folgende Informationen gegeben sein m displaystyle m nbsp die Anzahl verschiedener Ressourcen n displaystyle n nbsp die Anzahl beteiligter Prozesse E E 1 E m displaystyle E E 1 E m nbsp die Menge der insgesamt existierenden existing Ressourcen A A 1 A m displaystyle A A 1 A m nbsp die Menge der noch verfugbaren available Ressourcen C i C i 1 C i m displaystyle C i C i1 C im nbsp die Menge aktuell currently vergebener Ressourcen an Prozess i displaystyle i nbsp R i R i 1 R i m displaystyle R i R i1 R im nbsp die Menge der von Prozess i displaystyle i nbsp noch benotigten required Ressourcen Findet der Algorithmus eine Reihenfolge in welcher die Prozesse nacheinander ohne Verklemmung abgearbeitet werden konnen befindet sich das System in einem sicheren Zustand Implementierung BearbeitenFolgende Python Funktion implementiert den Bankieralgorithmus In einer Liste werden alle terminierten Prozesse gesammelt Solange diese Liste noch nicht alle Prozesse enthalt und keine Verklemmung aufgetreten ist werden die Anforderungen aller noch nicht bearbeiteten Prozesse untersucht Konnen alle benotigten Ressourcen eines Prozesses durch die noch verfugbaren Ressourcen abgedeckt werden elementweise R i A displaystyle R i leq A nbsp so wird dieser Prozess abgearbeitet und seine Ressourcen danach wieder freigegeben A A C i displaystyle A A C i nbsp Die Reihenfolge in welcher die Prozesse dabei bearbeitet werden spielt keine Rolle da A displaystyle A nbsp nur anwachst oder unverandert bleibt def bankierAlgorithmus E A C R n m len C len C 0 beendeteProzesse verklemmung False while len beendeteProzesse lt n and not verklemmung verklemmung True for i in range n if i in beendeteProzesse continue elif all R i j lt A j for j in range m Angeforderte Ressourcen werden Prozess i zugewiesen Prozess i wird beendet und gibt alle seine Ressourcen frei A C i j A j for j in range m beendeteProzesse append i verklemmung False print i A return not verklemmung beendeteProzesse Die Funktion gibt zuruck ob der ermittelte Zustand sicher ist True False sowie die Reihenfolge in welcher die Prozesse ablaufen konnen Beispiele BearbeitenMit Verklemmung Bearbeiten Ausgangszustand A 4 3 42 7 E 8 5 49 9 C 1 0 3 0 0 1 0 1 3 0 4 1 0 1 0 0 R 0 4 0 0 3 0 2 1 0 5 36 3 0 0 0 9 Zwischenstande zur Laufzeit nachdem jeweils Prozess i displaystyle i nbsp ausgewahlt wurde und terminiert ist i A 4 3 42 7 1 4 4 42 8 0 5 4 45 8 Verklemmung da keine der ubrigen Anforderungen 0 5 36 3 0 0 0 9 mehr durch verfugbare Ressourcen 5 4 45 8 abgedeckt werden konnen Der Zustand des Systems wird als unsicher bezeichnet Ohne Verklemmung Bearbeiten Ausgangszustand E 6 3 4 2 A 1 0 2 0 C 3 0 1 1 0 1 0 0 1 1 1 0 1 1 0 1 0 0 0 0 R 1 1 0 0 0 1 1 2 3 1 0 0 0 0 1 0 2 1 1 0 Zwischenstande zur Laufzeit nachdem jeweils Prozess i displaystyle i nbsp ausgewahlt wurde und terminiert ist i A 1 0 2 0 3 2 1 2 1 4 2 1 2 1 0 5 1 3 2 1 5 2 3 2 2 6 3 4 2 Erfolg alle Prozesse konnen erfolgreich in der gefundenen Reihenfolge 3 4 0 1 2 displaystyle 3 4 0 1 2 nbsp ausgefuhrt werden Der Zustand des Systems wird als sicher bezeichnet 1 Einzelnachweise Bearbeiten Andrew S Tanenbaum Modern Operating Systems 4th Edition Pearson 2015 ISBN 0 13 359162 X 6 5 4 S 454 455 Weblinks Bearbeiteninteraktive Ubung zum Bankier Algorithmus von der Uni Oldenburg Applet deutsch Abgerufen von https de wikipedia org w index php title Bankieralgorithmus amp oldid 232591380