[gesichtete Version] | [gesichtete Version] |
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 34: | Zeile 34: | ||
</p> | </p> | ||
<br /> | |||
==== Vier Bedingungen für einen Deadlock ==== | |||
<p> | |||
Eine grundlegende Arbeit über ''System Deadlocks'' veröffentlichten E.G. Coffman, Jr.; M.J. Elphick und A. Shoshani im Jahre 1971 in der Zeitschrift [http://dl.acm.org/citation.cfm?id=356588&dl=ACM&coll=DL&CFID=259872056&CFTOKEN=90437868 Computing Surveys, Vol. 3, No. 2]; <small>(hier ist ein [http://people.cs.umass.edu/~mcorner/courses/691J/papers/TS/coffman_deadlocks/coffman_deadlocks.pdf alternativer Link] zu diesem Dokument)</small>. | |||
</p> | |||
<p> | |||
Sie beschreiben darin vier Bedingungen, welche allesamt eingetreten sein müssen, und damit einen Deadlock-Zustand verursacht haben: | |||
# ''Mutal exclusion condition''<br />Eine Ressource steht einem Prozess nur exklusiv zur Verfügung, sie kann also nicht gleichzeitig von mehreren Prozessen belegt werden. | |||
# ''Wait for condition''<br />Prozesse warten und behalten dabei die Kontrolle über bereits zugewiesene Ressourcen solange, bis sie alle Ressourcen zugesprochen bekommen haben, um schließlich ihre Arbeit fortführen zu können. | |||
# ''No preemtion condition''<br />Zugewiesene Ressourcen können einem Prozess nicht gewaltsam wieder entrissen werden. | |||
# ''Circular wait condition''<br />Es gibt eine Zyklus, innerhalb dessen Prozesse bereits eine oder mehrere Ressourcen zugeweisen bekommen haben, und gleichzeitig auf weitere Resourcen warten, die bereits dem jeweils nächsten Prozess in diesem Zyklus zugesprochen wurden. | |||
</p> | |||
<br /> | <br /> |
{{#index:Deadlock|Verklemmung|Deadlock-Zustand|Zustand, Deadlock}} Deadlocks sind eine unangenehme Sache, sie sollten besser nicht auftreten. Zunächst die Definition:
Eine Menge von Prozessen befindet sich nach Tanenbaum 2009 in einem Deadlock-Zustand, wenn jeder Prozess aus der Menge auf ein Ereignis wartet, das nur ein anderer Prozess aus der Menge auslösen kann.
In der realen Welt gibt es eine schöne Analogie zum Deadlock-Zustand von Prozessen:
Wenn du dir vorstellen kannst, dass ein Auto im Strassenverkehr einen Prozess repräsentiert, dann zeigt dieses Bild einen Deadlock-Zustand einer Menge von Autos. (Hier gibt es eine kleine Sammlung mit ähnlichen Fotos.)
In Anbetracht dieser Bilder kannst du überlegen, ob die Menge der Prozesszustände noch um einen ergänzt werden sollte. Welcher Zustand ist damit gemeint?
Eine grundlegende Arbeit über System Deadlocks veröffentlichten E.G. Coffman, Jr.; M.J. Elphick und A. Shoshani im Jahre 1971 in der Zeitschrift Computing Surveys, Vol. 3, No. 2; (hier ist ein alternativer Link zu diesem Dokument).
Sie beschreiben darin vier Bedingungen, welche allesamt eingetreten sein müssen, und damit einen Deadlock-Zustand verursacht haben:
Mandl 2013 geht am Ende von Kapitel 6.2.2 auf das Philosophenproblem und eine dabei bestehende Deadlock-Gefahr ein.
Erläutere:
{{#index:Betriebsmittelgraph|Belegungs-Anforderungs-Graph|Zyklus im Betriebsmittelgraph|Konstruktion Betriebsmittelgraph}}
Die Universität Oldenburg stellt ein Tutorial Deadlock-Algorithmen bereit, bei dem u.a. auf die Erkennung eines Deadlock-Zustands eingegangen wird. Insbesondere kann die Erkennung mit Hilfe zweier Schritte erfolgen:
Mache dich mit diesem Tutorial vertraut!
Ein Betriebsmittelgraph wird in gängiger Literatur alternativ auch Belegungs-Anforderungs-Graph genannt.
Gegeben seien die Prozesse P1 bis P5 und die Ressourcen Drucker, Plotter, Modem, Magnetbandlaufwerk sowie Diskettenlaufwerk und CD-ROM-Laufwerk. Jede Ressource sei genau einmal vorhanden.
Aktuell besteht folgende Ressourcenzuteilung und -anforderung:
Zeichne den Betriebsmittelgraph! Achte dabei auf die Pfeilrichtungen!
Offensichtlich liegt hier ein Deadlock vor.
Diese Seite steht unter der Creative Commons Namensnennung 3.0 Unported Lizenz http://i.creativecommons.org/l/by/3.0/80x15.png