Informatik · Klasse 12 · aktualisiert
Betriebsmittelzuteilungsgraph: Deadlocks erkennen
Du zeichnest Prozesse und Betriebsmittel als Graph, liest die Pfeile richtig und erkennst an Zyklen mögliche Deadlocks.
0 von 13 Aufgaben gelöst
Kurz gesagt
Ein Betriebsmittelzuteilungsgraph (englisch RAG) ist ein gerichteter Graph aus Prozess- und Ressourcenknoten. Ressource → Prozess heißt „hält“, Prozess → Ressource heißt „wartet auf“. Ohne Zyklus kann kein Deadlock auftreten. Ein Zyklus zeigt einen möglichen Deadlock.
Zwei Programme warten aufeinander und beide bleiben stehen. Das nennt man Deadlock. Mit einem Graphen aus Knoten und Pfeilen siehst du auf einen Blick, wer was hält und wer worauf wartet. So findest du heraus, ob ein Deadlock überhaupt möglich ist.
Deine Lernziele
Hake ab, was du schon kannst. Löst du alle Aufgaben eines Abschnitts, hakt Mela das Ziel für dich ab.
4 Abschnitte
Betriebsmittel (auch Ressourcen) sind Teile eines Computers, die Prozesse zur korrekten Ausführung brauchen, zum Beispiel Festplatte, Arbeitsspeicher oder Drucker. Der Graph hat zwei Sorten von Knoten: Prozessknoten und Ressourcenknoten. Dazu kommen Kanten, also Pfeile. Ein solcher Graph heißt auf Englisch Resource Allocation Graph, kurz RAG. In dieser Lektion nennen wir ihn Betriebsmittelzuteilungsgraph.
Es gibt zwei Arten von Kanten. Die eine Art sagt „hält“, die andere sagt „wartet auf“. Wie die Pfeile dafür zeigen, lernst du im nächsten Abschnitt. Zuerst zeichnest du nur die Situation auf: Jeder Prozess und jedes Betriebsmittel bekommt einen Knoten.
Zur Zeichenweise: In dieser Lektion zeichnen wir Prozesse als Kreise und Ressourcen als Quadrate. Das ist nur unsere Darstellungsregel. Manche Ressourcen erlauben mehr als einen Zugriff pro Zeiteinheit. Dann erstellst du für jeden Zugriff eine einzelne Ressource, die nur einen Zugriff pro Zeiteinheit erlaubt.
Definition
Betriebsmittelzuteilungsgraph (RAG)
Ein gerichteter Graph, der Ressourcen und Prozesse in Beziehung stellt. Jeder Knoten ist entweder ein Prozessknoten oder ein Ressourcenknoten. Er dient der Analyse von Deadlocks.
Beispiel: Bildschirm und Drucker
- 1Prozess P1 hat den Bildschirm B zugeteilt bekommen und braucht gleichzeitig den Drucker D.
- 2Der Drucker D ist dem Prozess P2 zugeteilt. P2 fordert wiederum den Bildschirm B.
- 3Knoten: P1, P2 (Prozesse) und B, D (Ressourcen).
- 4Kanten: B → P1 (P1 hält B), D → P2 (P2 hält D), P1 → D (P1 wartet auf D), P2 → B (P2 wartet auf B).
Teste dich
Die Richtung der Kante sagt dir, ob ein Prozess eine Ressource hat oder auf sie wartet. Der Graph ist gerichtet, also ist die Pfeilspitze wichtig.
Zeigt die Kante von einer Ressource R zu einem Prozess P, dann hält P die Ressource R. Zeigt die Kante von einem Prozess P zu einer Ressource R, dann wartet P darauf, dass R frei wird.
Merke dir: Beim Halten beginnt der Pfeil bei der Ressource und zeigt zum Prozess. Beim Warten beginnt er beim wartenden Prozess und zeigt zur Ressource. Derselbe Pfeil in Gegenrichtung hätte also eine ganz andere Bedeutung.
| Kante | Bedeutung |
|---|---|
| R → P (Ressource zu Prozess) | P hält die Ressource R |
| P → R (Prozess zu Ressource) | P wartet darauf, dass R frei wird |
Merke: Von der Ressource zum Prozess heißt „hält“. Vom Prozess zur Ressource heißt „wartet auf“.
Teste dich
Ein Zyklus ist ein Weg entlang der Kanten, der dort endet, wo er angefangen hat. Dabei darfst du jede Kante nur einmal benutzen. Knoten dürfen mehrfach vorkommen. In einem gerichteten Graphen läufst du nur in Pfeilrichtung, so ein Zyklus heißt gerichteter Zyklus.
So gehst du vor: Wähle einen Knoten und folge den Pfeilen. Kommst du irgendwann zum Startknoten zurück, hast du einen Zyklus. Findest du von keinem Startknoten aus einen Weg zurück, ist der Graph azyklisch.
Die Regel heißt: Wenn im Graphen kein Zyklus existiert, kann kein Deadlock auftreten. Der Grund: Ein Deadlock ist eine zyklische Wartesituation zwischen mehreren Prozessen. Jeder wartet auf ein Betriebsmittel, das ein anderer beteiligter Prozess schon exklusiv belegt hat. Ohne Kreis aus Warten gibt es das nicht. Ein Graph ohne Zyklus darf trotzdem Kanten für „hält“ und „wartet auf“ haben. Es fehlt nur der geschlossene Kreis.
Achtung bei der Umkehrung: Ein Zyklus im Graphen zeigt einen möglichen Deadlock. Dass jeder Zyklus sicher einen Deadlock bedeutet, folgt aus der Regel nicht. Das klären wir hier nicht.
Definition
Zyklus
Ein Kantenzug mit unterschiedlichen Kanten, bei dem Start- und Endknoten gleich sind. Ein Graph mit mindestens einem Zyklus heißt zyklisch, ohne Zyklus azyklisch.
Merke: Kein Zyklus im Graphen: Dann kann kein Deadlock auftreten. Ein Zyklus zeigt nur einen möglichen Deadlock.
Teste dich
Nach Coffman et al. sind vier Bedingungen zusammen hinreichend für die Möglichkeit einer Verklemmung: Der Zugriff auf ein Betriebsmittel ist exklusiv (Mutual Exclusion). Prozesse fordern Betriebsmittel an und behalten zugleich andere (Hold and Wait). Betriebsmittel werden nur von den Prozessen selbst freigegeben (No Preemption). Und mindestens zwei Prozesse sind bei den Betriebsmitteln zirkulär voneinander abhängig (Circular Wait). Diese zirkuläre Wartesituation ist ein Kreis aus Warten.
Man spricht von einer Verhinderung, wenn mindestens eine dieser vier Bedingungen nicht erfüllt wird.
Eine Möglichkeit ist die feste Reihenfolge, auch Ressourcenhierarchie genannt. Die Betriebsmittel werden linear geordnet, also nummeriert. Sie werden nur in dieser definierten Reihenfolge angefordert oder zugeteilt. Eine feste Reihenfolge schließt die zirkuläre Wartesituation aus und verhindert so den Deadlock.
Die Idee für zwei Prozesse (ausgedachte Überlegung): Beide fordern zuerst die niedriger nummerierte Ressource an. Wer sie nicht bekommt, hält noch nichts und blockiert den anderen nicht. So entsteht kein Kreis aus Warten. Das ist kein allgemeiner Beweis.
Das Beispiel unten zeigt die Idee ebenfalls. Dort sitzen fünf Philosophen am Tisch und brauchen für jede Mahlzeit zwei Gabeln. Ohne feste Reihenfolge kann es passieren, dass alle ihre linke Gabel nehmen und dann auf die rechte warten. Mit der Nummerierung können nicht mehr alle zuerst die niedrigere Gabel nehmen.
Beispiel: Fünf Philosophen mit nummerierten Gabeln
- 1Die Gabeln sind von eins bis fünf durchnummeriert.
- 2Jeder Philosoph nimmt zuerst die Gabel mit der niedrigeren Nummer, dann die mit der höheren.
- 3Wollen alle gleichzeitig essen, können nicht alle gleichzeitig die niedrigere Gabel nehmen.
- 4Nimmt der erste Philosoph die Gabel eins, isst der vierte mit zwei Gabeln. Der letzte hat keine Gabel und wartet auf die niedrigere.
Merke: Betriebsmittel linear ordnen und nur in dieser Reihenfolge anfordern: So kann kein Kreis aus Warten entstehen.
Teste dich
Alles auf einen Blick
Betriebsmittelzuteilungsgraph
Knoten
Es gibt Prozessknoten und Ressourcenknoten, die Kanten sind gerichtet
Hält
Eine Kante von der Ressource zum Prozess bedeutet, dass der Prozess sie hält
Wartet
Eine Kante vom Prozess zur Ressource bedeutet, dass er wartet, bis sie frei wird
Zyklus
Ohne Zyklus kann kein Deadlock auftreten, ein Zyklus zeigt einen möglichen Deadlock
Reihenfolge
Linear geordnetes Anfordern schließt die zirkuläre Wartesituation aus
Musteraufgabe · Schritt für Schritt
Drei Prozesse und drei Ressourcen auf Zyklen untersuchen (ausgedachtes Beispiel)
- 1Annahme: R1, R2 und R3 sind exklusive Ressourcen. Kanten: R1 → P1, R2 → P2, R3 → P3, P1 → R2, P2 → R3, P3 → R1.
- 2Deuten: P1 hält R1, P2 hält R2, P3 hält R3. P1 wartet auf R2, P2 wartet auf R3, P3 wartet auf R1.
- 3Wir folgen den Pfeilen ab P1: P1 → R2 → P2 → R3 → P3 → R1 → P1.
- 4Start und Ende sind P1, keine Kante kommt doppelt vor. Das ist ein Zyklus, also ist hier ein Deadlock möglich.
- 5Variante: Wir streichen die Kante P3 → R1. Von P3 führt dann keine Kante weg, der Weg schließt sich nirgends.
- 6Nun gibt es keinen Zyklus. Also kann in dieser Variante kein Deadlock auftreten.
Fehler finden
Prüfe die Aussagen zu einem Graphen mit Scanner S (ausgedachtes Beispiel) In einer Zeile steckt ein Fehler. Tippe sie an.
Fehler in Zeile 3Die Richtung wurde falsch gedeutet. Richtig: Eine Kante vom Prozess B zur Ressource S bedeutet, dass B darauf wartet, dass S frei wird.
Lückentext
Wähl in jeder Lücke das passende Wort und prüf dann deine Antworten.
Eine Kante von einem Ressourcenknoten zu einem Prozessknoten bedeutet: Der Prozess die Ressource. Hat der Graph Zyklus, kann kein Deadlock auftreten. Die Betriebsmittel werden geordnet und nur in dieser Reihenfolge angefordert.
Karteikasten
Erst selbst überlegen, dann umdrehen.
Übung mit Feedback