Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Systeme 1 Kapitel 7 Deadlocks WS 2009/10.

Ähnliche Präsentationen


Präsentation zum Thema: "Systeme 1 Kapitel 7 Deadlocks WS 2009/10."—  Präsentation transkript:

1 Systeme 1 Kapitel 7 Deadlocks WS 2009/10

2 Deadlocks Definition: Eine Menge von Prozessen befindet sich 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. 1 2 4 3 WS 2009/10

3 Beispiel Exklusive Ressourcen 1 und 2
Hier kann es zu einer Deadlock-Situation kommen! Prozess 0 wartet auf Freigabe von Ressource 2 Prozess 1 wartet auf Freigabe von Ressource 1 /* Prozess 0 */ ... Fordere Ressource 1 an Fordere Ressource 2 an Benutze beide Ressourcen /* Prozess 1 */ ... Fordere Ressource 2 an Fordere Ressource 1 an Benutze beide Ressourcen WS 2009/10

4 Voraussetzungen für Deadlocks
Folgende Voraussetzungen müssen erfüllt sein, damit ein Deadlock auftreten kann: Wechselseitiger Ausschluss: Jede Ressource ist entweder verfügbar oder genau einem Prozess zugeordnet. Hold-and-wait-Bedingung: Prozesse, die schon Ressourcen reserviert haben, können noch weitere Ressourcen anfordern. Ununterbrechbarkeit: Ressourcen, die einem Prozess bewilligt wurden, können nicht gewaltsam wieder entzogen werden. Zyklische Wartebedingung: Es muss eine zyklische Kette von Prozessen geben, von denen jeder auf eine Ressource wartet, die dem nächsten Prozess in der Kette gehört. Leider sind in realen Betriebssystemen diese Bedingungen üblicherweise erfüllt. WS 2009/10

5 Voraussetzungen für Deadlocks
Ressourcenbelegungen und Ressourcenanforderungen können durch einen gerichteten Belegungs-Anforderungs-Graphen dargestellt werden. Es gibt 2 Arten von Knoten: Kreise repräsentieren Prozesse pi: Quadrate repräsentieren Ressourcen rj: Eine Kante von einer Ressource rj zu einem Prozess pi bedeutet: Ressource rj wird von Prozess pi belegt. Eine Kante von einem Prozess pi zu einer Ressource rj bedeutet: Prozess pi hat Ressource rj angefordert, aber noch nicht erhalten. pi rj rj pi „gehört“ pi rj „will“ WS 2009/10

6 Modellierung von Ressourcenbelegung und Ressourcenanforderung
Ein Zyklus in dem Graphen existiert genau dann, wenn man von einem Knoten ausgehend über eine Folge von Kanten wieder zu dem Knoten zurückkommt: Zyklen im Belegungs-Anforderungsgraphen repräsentieren Deadlocks! p1 r1 r2 p2 WS 2009/10

7 Beispiel: Abarbeitungsfolge 1
Prozesse p1, p2, p3, Ressourcen R, S, T Prozess p1: Anforderung R, Anforderung S, Freigabe R, Freigabe S Prozess p2: Anforderung S, Anforderung T, Freigabe S, Freigabe T Prozess p3: Anforderung T, Anforderung R, Freigabe T, Freigabe R 1. p1 verlangt R. p1 p2 p3 R S T 2. p2 verlangt S. p1 p2 p3 R S T 3. p3 verlangt T. p1 p2 p3 R S T p1 p2 p3 R S T 4. p1 verlangt S. p1 p2 p3 R S T 5. p2 verlangt T. p1 p2 p3 R S T 6. p3 verlangt R. Deadlock! WS 2009/10

8 Beispiel: Abarbeitungsfolge 2
Prozesse p1, p2, p3, Ressourcen R, S, T Prozess p1: Anforderung R, Anforderung S, Freigabe R, Freigabe S Prozess p2: Anforderung S, Anforderung T, Freigabe S, Freigabe T Prozess p3: Anforderung T, Anforderung R, Freigabe T, Freigabe R 1. p1 verlangt R. 2. p3 verlangt T. 3. p1 verlangt S. p1 p2 p3 p1 p2 p3 p1 p2 p3 R S T R S T R S T 4. p3 verlangt R. 5. p1 gibt R frei. 6. p1 gibt S frei. p1 p2 p3 p1 p2 p3 p1 p2 p3 Kein Deadlock! R S T R S T R S T WS 2009/10

9 Verhinderung von Deadlocks: Bankieralgorithmus
Bankieralgorithmus von Dijkstra (1965) verhindert Deadlocks im System. Scheduling (Prozessorzuteilung an Prozesse) in einer Weise, dass keine Deadlocks auftreten können. Voraussetzungen: Es ist im Voraus bekannt, welche und wie viele Ressourcen die einzelnen Prozesse (maximal) anfordern werden. Diese maximale Anforderung übersteigt für keinen Prozess die zur Verfügung stehenden Ressourcen. Nach der 2. Voraussetzung gibt es auf jeden Fall einen Ablauf, bei dem es kein Problem mit fehlenden Ressourcen / Deadlocks gibt: Führe einfach alle Prozesse nacheinander aus. Nach Ablauf eines Prozesses gibt dieser sicherlich alle seine Ressourcen frei. Grundidee des Bankieralgorithmus: Versuche möglichst viel „Pseudo-Parallelismus“ zu erreichen (keine streng sequentielle Abarbeitung der Prozesse)‏ Riskiere dabei aber an keinem Punkt eine potentielle Deadlock-Situation! WS 2009/10

10 Bankieralgorithmus Vorgehen:
Überführe das System immer nur in sichere Zustände! Ein Zustand ist sicher, wenn es auf jeden Fall eine deadlockfreie „Restausführung“ aller Prozesse gibt, unabhängig davon, in welcher Weise die Prozesse in Zukunft ihre Ressourcenanforderungen und –freigaben durchführen werden, d.h. insbesondere, wenn die Prozesse ihre restlichen Anforderungen auf einen Schlag stellen und Freigaben erst bei Prozessbeendigung durchführen. Sonst: Zustand ist unsicher. Nach Voraussetzung ist der Startzustand sicher! Beachte: Ein unsicherer Zustand muss nicht notwendigerweise zu einem Deadlock führen. WS 2009/10

11 Bankieralgorithmus Der Bankieralgorithmus
prüft also bei jeder Ressourcenanforderung eines Prozesses pi, ob das System bei Erfüllung der Anforderung in einen unsicheren Zustand kommt. Falls ja: Erfülle Anforderung nicht, stelle Prozess pi zurück und mache mit einem anderen Prozess weiter. Dadurch garantiert der Bankieralgorithmus in jedem Fall eine deadlockfreie Ausführung. Noch zu zeigen: Wie wird auf sicheren Zustand geprüft? (nächste Vorlesung) WS 2009/10


Herunterladen ppt "Systeme 1 Kapitel 7 Deadlocks WS 2009/10."

Ähnliche Präsentationen


Google-Anzeigen