Systeme 1 Kapitel 7.1 Deadlocks WS 2009/10.

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

Randomisierte Algorithmen Präfix Suche und Konsistentes Hashing
Christian Scheideler SS 2009
Kapitel 11 Deadlocks RW-Systemarchitekur Kap. 11.
Eine dynamische Menge, die diese Operationen unterstützt,
10.2 Wechselseitiger Ausschluss in Hardware
Polynomial Root Isolation
Steigung m berechnen Man kann die Steigung auch berechnen,
Beim Start eines Prozesses in Windows NT, 2000 wird a der Programmtext aus der exe-Datei ab der dort angegebenen Adresse gespeichert.
Zusammenfassung der Vorwoche
Terminierung und Deadlocks Enkhbat Daginaa Betreuerin Prof. Heike Wehrheim Totale Korrektheit.
Kapitel 8.1 Speicherverwaltung - Paging
Systeme 1 Kapitel 3 Dateisysteme WS 2009/10.
Kapitel 6.1 Nebenläufigkeit und wechselseitiger Ausschluss
WS 2009/10 1 Vorlesung Systeme 1. WS 2009/10 2 Vorlesung Systeme 1 Lehrstuhl für Kommunikationssysteme Prof. Gerhard Schneider
Systeme 1 Kapitel 5 Scheduling WS 2009/10.
Systeme 1 Kapitel 7 Deadlocks WS 2009/10.
Kapitel 7.2 Dining philosophers problem
Kapitel 8 Speicherverwaltung
Systeme 1 Kapitel 5.1 Unix Scheduling WS 2009/101.
FH-Hof Deadlocks Richard Göbel. FH-Hof Deadlock - Definition Menge von Prozessen ist an einem Deadlock beteiligt: wenn jeder Prozess in dieser Menge auf.
Kapitel 10 Nebenläufigkeit und wechselseitiger Ausschluss
Das Halteproblem. Gibt es einen Algorithmus, mit dem man für jedes beliebig vorgegebene Programm R und für jede beliebig vorgegebene Eingabe E entscheiden.
Algorithmentheorie 04 –Hashing
Algorithmentheorie 6 – Greedy-Verfahren
1WS 06/07 Organisatorisches 1.Vorlesung am Montag, : 9-11 Uhr in Gebäude 106, Raum Podcasts: Probleme mit der Videoqualität sind behoben.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 - AVL-Bäume: Entfernen, Bruder-Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 - AVL-Bäume: Entfernen, Bruder-Bäume) Prof. Th. Ottmann.
WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 16 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Kapitel 1 Das Schubfachprinzip
Zusammenfassung Vorwoche
Vorlesung 10 Mutual Exclusion Peter B. Ladkin Sommersemester 2001 Universität Bielefeld Technische Fakultät.
Situationen Verteilte Anwendungen Wintersemester 06/07 © Wolfgang Schönfeld.
DVG Ablaufsteuerung
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Wie macht man ein Sudoku? Transformations-Methode:
Kakuro Regeln und Strategien
Neue variable Lernkontrollen mit Diagnose und Förderplanung
Effiziente Algorithmen
Auf Wunsch einer einzelnen Dame
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Systeme 1 Kapitel 4 Prozesse WS 2009/10.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung 10 SS 2000 Quadtrees.
Computational Thinking Online Algorithmen [Was ist es wert, die Zukunft zu kennen?] Kurt Mehlhorn Konstantinos Panagiotou.
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
§3 Allgemeine lineare Gleichungssysteme
Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Programmierung Wintersemester 2013/14 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Datenreihen erzeugen –
Ganzheitliches Projekt-, Ressourcen- und Qualitätsmanagement 1 Reports und AddOns Auf den folgenden Seiten wird Ihnen die Funktionsweise der Reports und.
Bereit ???? Nimm dir 10 Minuten Zeit. Ich versuche es dir zu erklären.
FIFA eSports Event EA SPORTS Bar
Formale Sprachen Reguläre Sprachen Rudolf FREUND, Marian KOGLER.
Betriebssysteme Übung 2. Tutorium. Task 1 – Locks (1) Wozu Locks? Dienen dazu, exklusiven Zugriff auf eine Ressource sicherzustellen Lock = binäre Semaphore.
ENDLICHE KÖRPER RSA – VERFAHREN.
SFZ FN Sj. 13/14 Python 3 Rekursion Inf K1/2 Sj 13/14
Analyse der Laufzeit von Algorithmen
ResA am Arbeitsplatz Das Vorgehen ist angelehnt an „5 S“ und bietet Ihnen die Möglichkeit das Konzept der 5 Disziplinen ressourcenschonenden Arbeitens.
Dr. Wolfram Amme, Automatische Speicherverwaltung, Informatik II, FSU Jena, SS Automatische Speicherverwaltung.
 Präsentation transkript:

Systeme 1 Kapitel 7.1 Deadlocks WS 2009/10

Organisatorisches Zwischenklausur Sa. 19.12.09: Fragestunde 10 Uhr s.t. (45 Minuten) Räume 101-026/036 Stoff: Vorlesung Übungsblätter (bis inkl. Blatt 3) Fragestunde Mi. 16.12.09 16 Uhr, RZ Raum 112 Zentrale Weihnachtsvorlesung: 17.12.09 Die praktischen Übungen finden bis einschließlich 23.12.09 statt. Beginn im neuen Jahr ist der 11.01.10. Verschiebung der zentralen Theoriebesprechung Mi. 06.01.10 (Feiertag) => Do. 07.01.10 (RZ Raum 112, 16 Uhr) Regulärer Betrieb ab 20.01.10. Die erste Vorlesung im neuen Jahr findet am 08.01.10 statt. WS 2009/10

Letzte Vorlesung Wechselseitiger Ausschluss: MUTEX Hardware (TSL RX/LOCK) Betriebssystem (sleep(lock), wakeup(lock)) MUTEX Produzenten-Konsumenten-Problem Gemeinsamer Puffer Prozesse schreiben in den Puffer (Produzenten) Prozesse lesen aus dem Puffer (Konsumenten) Probleme: 2 Konsumenten: 1 Element im Puffer; Puffer voll 1 Konsument, 1 Produzent: beide Schlafen für immer Deadlock Lösung: Semaphoren WS 2009/10

Letzte Vorlesung Deadlock 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. Voraussetzungen: Wechselseitiger Ausschluss Hold-and-wait-Bedingung Ununterbrechbarkeit Zyklische Wartebedingung Modellierung von Ressourcenbelegung und Ressourcenanforderung Verhinderung von Deadlocks: Bankieralgorithmus Ressourcen-Anforderung bekannt Überführung nur in sichere Zustände Garantie für Deadlockfreie Ausführung WS 2009/10

Beispiel für ein Deadlock Prozess p2 Beide Prozesse beendet Beide benötigen Drucker Drucker I8 I7 I6 Deadlock unvermeidbar! t I5 Plotter Beide benötigen Plotter Start I1 I2 I3 I4 Prozess p1 Drucker WS 2009/10 Plotter

Gegenbeispiel (kein Deadlock) Prozess p2 Beide Prozesse beendet Beide benötigen Drucker Drucker I8 I7 I6 t I5 Plotter Beide benötigen Plotter Start I1 I2 I3 I4 Prozess p1 Drucker WS 2009/10 Plotter

Bankieralgorithmus: Einzelne Ressourcenklasse Noch zu zeigen: Wie wird auf sicheren Zustand geprüft? Zunächst einfache Variante: Nehme an, dass es eine einzige Ressourcenklasse gibt, die aber mehrere Ressourcen enthalten kann. Bsp.: Es gibt 10 verschiedene Drucker. Wenn alle 10 Drucker durch Prozesse belegt sind, dann wird kein weiterer vergeben. Ein Prozess kann mehrere Drucker anfordern, aber nur bis zu einer bestimmten Maximalzahl ≤ 10 (nach Voraussetzung (2)). WS 2009/10

Bankieralgorithmus: Einzelne Ressourcenklasse Gegeben: n Prozesse p1, …, pn, die Ressourcen aus einer einzigen Klasse anfordern Anzahl zur Verfügung stehender Ressourcen: V ∈ ℕ Für jeden Prozess pi gibt es eine maximale Anzahl Mi von Ressourcen, die der Prozess anfordern wird eine Anzahl von Ressourcen Ei , die der Prozess zu einem bestimmten Zeitpunkt schon erhalten hat eine Anzahl von Ressourcen, die der Prozess nach diesem Zeitpunkt noch maximal anfordern wird: Ai = Mi - Ei Die Anzahl der freien Ressourcen zu diesem Zeitpunkt ergibt sich zu Es gilt weiterhin: Mi ≤ V mit 1 ≤ i ≤ n Ei ≤ Mi mit 1 ≤ i ≤ n WS 2009/10

Bankieralgorithmus: Einzelne Ressourcenklasse Beispiel: Es gibt V = 10 Instanzen einer Ressource. 3 Prozesse p1, p2, p3 Maximale Anforderungen: Zustand zum Zeitpunkt t: Frage: Ist dies ein sicherer Zustand? Mi p1 9 p2 4 p3 7 Ei Ai = Mi – Ei p1 3 6 = 9 – 3 P2 2 2 = 4 – 2 F = 10 – 7 = 3 p3 5 = 7 - 2 7 WS 2009/10

Bankieralgorithmus: Einzelne Ressourcenklasse Nachweis, dass es sich um einen sicheren Zustand handelt: Führe zunächst ausschließlich Prozess p2 aus Freigabe durch Prozess p2 Ei Ai Mi p1 3 6 9 P2 2 4 p3 5 7 F = 10 – 7 = 3 Ei Ai Mi p1 3 6 9 P2 4 p3 2 5 7 F = 10 – 9 = 1 Ei Ai Mi p1 3 6 9 P2 - p3 2 5 7 F = 10 – 5 = 5 Ei Ai Mi p1 3 6 9 P2 - p3 7 F = 10 – 10 = 0 Freigabe durch Prozess p3 Ei Ai Mi p1 3 6 9 P2 - p3 F = 10 – 3 = 7 Jetzt kann Prozess 1 zu Ende gebracht werden! WS 2009/10

Bankieralgorithmus: Einzelne Ressourcenklasse Weise nun zunächst Prozess p1 eine weitere Ressource zu: Ist dieser Zustand immer noch sicher? Zur Erinnerung: Ein Zustand ist sicher, wenn es auf jeden Fall eine deadlockfreie „Restausführung“ aller Prozesse gibt, auch wenn die Prozesse ihre restlichen Anforderungen auf einen Schlag stellen und Freigaben erst bei Prozessbeendigung durchführen. Ei Ai Mi p1 3 6 9 P2 2 4 p3 5 7 F = 10 – 7 = 3 Ei Ai Mi p1 4 5 9 P2 2 p3 7 F = 10 – 8 = 2 WS 2009/10

Bankieralgorithmus: Einzelne Ressourcenklasse Antwort: Der Zustand ist nicht sicher! Nimmt man den worst case an, dass alle Prozesse ihre Ressourcen künftig auf einen Schlag anfordern, so kann man Prozesse p1 und p3 nicht ausführen. Führe Prozess p2 aus. Nur p2 verbleibt als Möglichkeit. Ei Ai Mi p1 4 5 9 P2 2 p3 7 F = 10 – 8 = 2 WS 2009/10

Bankieralgorithmus: Einzelne Ressourcenklasse Nachweis, dass es sich um einen unsicheren Zustand handelt: Mit den jetzt zur Verfügung stehenden 4 freien Ressourcen lassen sich weder Prozess p1 noch Prozess p3 ausführen, wenn sie ihre Ressourcenanforderungen sofort stellen und vor Prozessbeendigung nichts freigeben. Der Zustand ist unsicher. Führe Prozess p2 bis zum Ende aus Freigabe durch Prozess p2 Ei Ai Mi p1 4 5 9 P2 2 p3 7 F = 10 – 8 = 2 Ei Ai Mi p1 4 5 9 P2 p3 2 7 F = 10 – 10 = 0 Ei Ai Mi p1 4 5 9 P2 - p3 2 7 F = 10 – 6 = 4 WS 2009/10

Bankieralgorithmus: Einzelne Ressourcenklasse Überprüfung auf sicheren Zustand: Teste, ob es einen Prozess gibt, dessen Anforderungen alle mit den verfügbaren Ressourcen erfüllt werden können. Nimm an, dass dieser Prozess ausgeführt wird und alle seine Ressourcen danach freigegeben werden. Teste, ob es nun einen anderen Prozess gibt, dessen Ressourcenanforderung erfüllt wird und verfahre mit diesem Prozess gleichermaßen. Der Zustand ist sicher, wenn auf diese Weise alle Prozesse „virtuell“ zu Ende gebracht werden können. Sonst ist der Zustand unsicher. WS 2009/10

Bankieralgorithmus: Einzelne Ressourcenklasse Bemerkung: Im Allgemeinen kann es mehrere Prozesse geben, die virtuell ausgeführt werden können. Das Endergebnis ist aber immer das Gleiche! Grund: Nach virtueller Prozessausführung und Freigabe aller Ressourcen eines Prozesses pi können höchstens mehr Ressourcen zur Verfügung stehen. Alle Prozesse pj, die vorher ausführbar waren, sind nach Ausführung von pi auf jeden Fall immer noch ausführbar. Würde sich nach einer Ressourcenanforderung ein unsicherer Zustand ergeben, dann wird die Anforderung nicht erfüllt und der Prozess wird blockiert. Ansonsten wird Ressourcenanforderung erfüllt. In der Praxis führt der Bankieralgorithmus daher die Prozesse im Allgemeinen also nicht sequentiell aus, sondern quasi-parallel! Die Tests auf Sicherheit von Zuständen beschränken die Quasi-Parallelität allerdings in gewisser Weise – mit dem Vorteil, dass Deadlocks garantiert verhindert werden. WS 2009/10

Bankieralgorithmus: Mehrere Ressourcenklassen Mehrere Ressourcenklassen, z.B. Drucker, Plotter, … Gegeben: n Prozesse p1, …, pn, die Ressourcen aus Klassen K1, …, Km anfordern Anzahl zur Verfügung stehender Ressourcen aus Klasse Kk: Vk (1 ≤ k ≤ m) Vektor verfügbarer Ressourcen (V1, …, Vm) Für jeden Prozess pi und jede Ressourcenklasse Kk gibt es eine maximale Anzahl Mik von Ressourcen der Klasse Kk, die der Prozess pi anfordern wird Maximalanforderungsmatrix M11 M12 M13 … M1m M21 M22 M23 M2m Mn1 Mn2 Mn3 Mnm Zeile i gibt Maximalanforderungen von Prozess i an WS 2009/10

Bankieralgorithmus: Mehrere Ressourcenklassen Eine Anzahl Eik von Ressourcen der Klasse Kk, die der Prozess pi zu einem bestimmten Zeitpunkt schon erhalten hat. Belegungsmatrix eine Anzahl von Ressourcen der Klasse Kk, die der Prozess pi nach diesem Zeitpunkt noch maximal anfordern wird: Aik = Mik - Eik Restanforderungsmatrix E11 E12 E13 … E1m E21 E22 E23 E2m En1 En2 En3 Enm Zeile i gibt an, welche Ressourcen Prozess i schon erhalten hat. A11 A12 A13 … A1m A21 A22 A23 A2m An1 An2 An3 Anm Zeile i gibt an, welche Ressourcen Prozess i maximal noch anfordern wird. WS 2009/10

Bankieralgorithmus: Mehrere Ressourcenklassen Die Anzahl der freien Ressourcen der Klasse Kk zu diesem Zeitpunkt ergibt sich zu Ressourcenrestvektor (F1, …, Fm) Es gilt weiterhin: Eik ≤ Mik ≤ Vk mit 1 ≤ i ≤ n, 1 ≤ k ≤ m Bankieralgorithmus für mehrere Ressourcenklassen funktioniert analog zum Bankieralgorithmus für eine Ressourcenklasse. Einziger Unterschied: Der Vergleich natürlicher Zahlen wird ersetzt durch den Vergleich von Vektoren natürlicher Zahlen. Für zwei Vektoren (v1, …, vm), (w1, …, wm) ∈ ℕm gilt (v1, …, vm) ≤ (w1, …, wm) gdw. vi ≤ wi mit 1 ≤ i ≤ m WS 2009/10

Bankieralgorithmus: Mehrere Ressourcenklassen Überprüfung auf sicheren Zustand: Teste, ob es einen Prozess pi gibt, dessen Anforderungen alle mit den verfügbaren Ressourcen erfüllt werden können, d.h. teste, ob es eine Zeile i in Anforderungsmatrix gibt, die kleiner ist als Ressourcenrestvektor: (Ai1, …, Aim) ≤ (F1,…, Fm) (das ist nötig, da wir den worst case annehmen, dass ein Prozess alle restlichen Ressourcen auf einen Schlag anfordert und Ressourcen erst am Schluss freigibt)‏ Markiere den Prozess pi WS 2009/10

Bankieralgorithmus: Mehrere Ressourcenklassen Überprüfung auf sicheren Zustand (ff): Nimm an, dass dieser Prozess ausgeführt wird und alle seine Ressourcen danach freigegeben werden, d.h. addiere (Ei1, …, Eim) zu (F1,…, Fm). Teste, ob es nun einen anderen Prozess pj gibt, dessen Ressourcenanforderung erfüllt wird (Aj1, …, Ajm) ≤ (F1,…, Fm) und verfahre mit diesem Prozess gleichermaßen. Der Zustand ist sicher, wenn auf diese Weise alle Prozesse markiert worden sind, d.h. „virtuell“ zu Ende gebracht werden konnten. Sonst ist der Zustand unsicher und die nicht-markierten Prozesse sind an dem potentiellen Deadlock beteiligt. WS 2009/10

Bankieralgorithmus: Mehrere Ressourcenklassen Bandlaufwerke Plotter Scanner CD-ROM Beispiel Vektor verfügbarer Ressourcen: Maximalanforderungsmatrix Aktuelle Belegungsmatrix Aktuelle Restanforderungsmatrix Ressourcenrestvektor V = (4 2 3 1) M: 2 1 Prozess 1 3 Prozess 2 Prozess 3 E: 1 Prozess 1 2 Prozess 2 Prozess 3 A: 2 1 Prozess 1 Prozess 2 Prozess 3 F = (2 1 0) WS 2009/10

Bankieralgorithmus: Mehrere Ressourcenklassen Frage: Befinden wir uns in einem sicheren Zustand? Bankieralgorithmus WS 2009/10

Bankieralgorithmus: Mehrere Ressourcenklassen Bandlaufwerke Plotter Scanner CD-ROM Beispiel Vektor verfügbarer Ressourcen: Maximalanforderungsmatrix Aktuelle Belegungsmatrix Aktuelle Restanforderungsmatrix Ressourcenrestvektor V = (4 2 3 1) M: 2 1 Prozess 1 3 Prozess 2 Prozess 3 E: 1 Prozess 1 2 Prozess 2 Prozess 3 A: 2 1 Prozess 1 Prozess 2 Prozess 3 Nur 3. Zeile A3 = (2 1 0 0) der Restanforderungsmatrix ist kleiner gleich Ressourcenrestvektor F = (2 1 0 0). F = (2 1 0) WS 2009/10

Bankieralgorithmus: Mehrere Ressourcenklassen Bandlaufwerke Plotter Scanner CD-ROM Beispiel Vektor verfügbarer Ressourcen: Maximalanforderungsmatrix Aktuelle Belegungsmatrix Aktuelle Restanforderungsmatrix Ressourcenrestvektor V = (4 2 3 1) M: 2 1 Prozess 1 3 Prozess 2 Prozess 3 E: 1 Prozess 1 2 Prozess 2 Prozess 3 A: 2 1 Prozess 1 Prozess 2 Prozess 3 “Ausführung” von Prozess 3 F = (0 0) WS 2009/10

Bankieralgorithmus: Mehrere Ressourcenklassen Bandlaufwerke Plotter Scanner CD-ROM Beispiel Vektor verfügbarer Ressourcen: Maximalanforderungsmatrix Aktuelle Belegungsmatrix Aktuelle Restanforderungsmatrix Ressourcenrestvektor V = (4 2 3 1) M: 2 1 Prozess 1 3 Prozess 2 Prozess 3 E: 1 Prozess 1 2 Prozess 2 Prozess 3 A: 2 1 Prozess 1 Prozess 2 - Prozess 3 Ressourcenfreigabe F = (2 2 0) WS 2009/10

Bankieralgorithmus: Mehrere Ressourcenklassen Bandlaufwerke Plotter Scanner CD-ROM Beispiel Vektor verfügbarer Ressourcen: Maximalanforderungsmatrix Aktuelle Belegungsmatrix Aktuelle Restanforderungsmatrix Ressourcenrestvektor V = (4 2 3 1) M: 2 1 Prozess 1 3 Prozess 2 Prozess 3 E: 1 Prozess 1 2 Prozess 2 Prozess 3 A: 2 1 Prozess 1 Prozess 2 - Prozess 3 Nur 2. Zeile A2 = (1 0 1 0) der Restanforderungsmatrix ist kleiner gleich Ressourcenrestvektor F = (2 2 2 0). F = (2 2 0) WS 2009/10

Bankieralgorithmus: Mehrere Ressourcenklassen Bandlaufwerke Plotter Scanner CD-ROM Beispiel Vektor verfügbarer Ressourcen: Maximalanforderungsmatrix Aktuelle Belegungsmatrix Aktuelle Restanforderungsmatrix Ressourcenrestvektor V = (4 2 3 1) M: 2 1 Prozess 1 3 Prozess 2 Prozess 3 E: 1 Prozess 1 3 Prozess 2 Prozess 3 A: 2 1 Prozess 1 Prozess 2 - Prozess 3 “Ausführung” von Prozess 2 F = (1 2 1 0) WS 2009/10

Bankieralgorithmus: Mehrere Ressourcenklassen Bandlaufwerke Plotter Scanner CD-ROM Beispiel Vektor verfügbarer Ressourcen: Maximalanforderungsmatrix Aktuelle Belegungsmatrix Aktuelle Restanforderungsmatrix Ressourcenrestvektor V = (4 2 3 1) M: 2 1 Prozess 1 3 Prozess 2 Prozess 3 E: 1 Prozess 1 Prozess 2 Prozess 3 A: 2 1 Prozess 1 - Prozess 2 Prozess 3 Ressourcenfreigabe F = (4 2 1) WS 2009/10

Bankieralgorithmus: Mehrere Ressourcenklassen Bandlaufwerke Plotter Scanner CD-ROM Beispiel Vektor verfügbarer Ressourcen: Maximalanforderungsmatrix Aktuelle Belegungsmatrix Aktuelle Restanforderungsmatrix Ressourcenrestvektor V = (4 2 3 1) M: 2 1 Prozess 1 3 Prozess 2 Prozess 3 E: 2 1 Prozess 1 Prozess 2 Prozess 3 A: Prozess 1 - Prozess 2 Prozess 3 “Ausführung” von Prozess 1 F = (2 2 0) WS 2009/10

Bankieralgorithmus: Mehrere Ressourcenklassen Bandlaufwerke Plotter Scanner CD-ROM Beispiel Vektor verfügbarer Ressourcen: Maximalanforderungsmatrix Aktuelle Belegungsmatrix Aktuelle Restanforderungsmatrix Ressourcenrestvektor V = (4 2 3 1) M: 2 1 Prozess 1 3 Prozess 2 Prozess 3 E: Prozess 1 Prozess 2 Prozess 3 A: - Prozess 1 Prozess 2 Prozess 3 Ressourcenfreigabe F = (4 2 3 0) WS 2009/10

Bankieralgorithmus: Mehrere Ressourcenklassen Frage: Befinden wir uns in einem sicheren Zustand? Bankieralgorithmus Zustand ist sicher. WS 2009/10

Bankieralgorithmus: Analyse Ist mit dem Bankieralgorithmus das Deadlock-Problem restlos gelöst? Leider nein, da Prozesse können meist nicht im Voraus eine verlässliche Obergrenze für ihre Ressourcenanforderungen geben (zumindest nicht exakt genug, so dass das System nicht durch Überschätzung des Ressourcenbedarfs zu ineffizienter Ausführung gezwungen wird).‏ Garantierte Obergrenzen würden häufig sogar die Anzahl der verfügbaren Ressourcen übersteigen, aber durch ständiges Zuweisen und Freigeben von Ressourcen stellt dies trotzdem kein Problem dar. Üblicherweise werden Prozesse dynamisch neu erzeugt werden und sind nicht statisch vorhanden. Ressourcen können auch plötzlich verschwinden (z.B. Bandlaufwerke fallen aus)‏. Bankieralgorithmus ist in der Theorie schön, löst aber nicht alle praktischen Probleme. Zur Deadlock-Verhinderung sind Informationen über zukünftige Ressourcen-Anforderungen nötig, die nicht bekannt sind! WS 2009/10

Angriff auf wechselseitigen Ausschluss Wechselseitiger Ausschluss: Jede Ressource ist entweder verfügbar oder genau einem Prozess zugeordnet. Auf wechselseitigen Ausschluss kann man nicht verzichten. Gleichzeitiges Drucken zweier Prozesse auf dem gleichen Drucker??? In gewissen Situationen lässt sich wechselseitiger Ausschluss aber einschränken. Bsp.: Drucken Spooling: Prozesse drucken nicht direkt auf den Drucker, sondern in ein globales Spooling-Verzeichnis. Es gibt einen ständig laufenden Prozess (Drucker-Dämon), der als einziger den Drucker reserviert und Dateien aus dem Spooling-Verzeichnis der Reihe nach druckt. Keine Deadlock-Probleme aufgrund Drucker-Zugriff, da nur ein einziger Prozess auf den Drucker zugreift. Das funktioniert perfekt, wenn Speicher im Spooling-Verzeichnis unbegrenzt ist. WS 2009/10

Angriff auf wechselseitigen Ausschluss Bsp.: Drucken ... In Realität: Deadlock-Probleme, wenn Speicher im Spooling-Verzeichnis begrenzt / zu gering (Konkurrenz um Plattenplatz) Szenario: 2 Prozesse füllen Spooling-Speicher je zur Hälfte, sind noch nicht fertig mit Drucken Aus Effizienzgründen normalerweise Druckbeginn erst, wenn Dateien komplett ins Spooling-Verzeichnis gedruckt. Keiner der beiden Prozesse wird fertig! Deadlock Allgemeines Prinzip: Teile Ressourcen nur zu, wenn unbedingt nötig. Möglichst wenig Prozesse sollen Ressource selbst anfordern dürfen. WS 2009/10

Angriff auf Hold-and-Wait-Bedingung Hold-and-wait-Bedingung: Prozesse, die schon Ressourcen reserviert haben, können noch weitere Ressourcen anfordern. Lösungsansätze zur Auflösung der Hold-and-wait-Bedingung: Prozesse müssen benötigte Ressourcen immer auf einmal und im Voraus anfordern. Teilweise benutzt bei Betriebssystemen von Großrechnern. Funktioniert nicht, wenn Prozesse Ressourcenbedarf nicht im Voraus kennen. (siehe Bankieralgorithmus)‏ Keine effiziente Ressourcennutzung, da Ressourcen unnötig lange belegt. Vor Ressourcenanforderung werden alle Ressourcen kurzzeitig freigegeben, dann zusammen mit der neuen Ressource neu angefordert. WS 2009/10

Angriff auf Ununterbrechbarkeit Ununterbrechbarkeit: Ressourcen, die einem Prozess bewilligt wurden, können nicht gewaltsam wieder entzogen werden. Kaum zu realisieren, dass Ressourcennutzung jederzeit ohne Schaden von außen unterbrochen werden kann. WS 2009/10

Angriff auf zyklische Wartebedingung 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. Lösungsansätze zur Beseitigung der zyklischen Wartebedingung: Jeder Prozess kann nur eine Ressource auf einmal belegen. Vorgehen in vielen Fällen unannehmbar Ressourcen werden durchnummeriert. Reihenfolge der Ressourcenanforderung darf nur in aufsteigender Reihenfolge erfolgen. Belegungs-Anforderungsgraph kann dann nicht zyklisch werden. Schwierigkeit, eine Ordnung zu finden, die allen Anforderungen gerecht wird. WS 2009/10

Zusammenfassung Deadlock-Verhinderung ist schwierig, da dazu im Allgemeinen Informationen über zukünftige Ressourcen-Anforderungen nötig sind, die nicht bekannt sind! Deadlock-Freiheit kann zwar prinzipiell erreicht werden, häufig jedoch um den Preis starker Effizienz-Verluste. Häufig verzichtet man in der Praxis daher auf absolute Garantien für Deadlock-Freiheit. Warum geht bei solchen Systemen trotzdem meistens nichts schief? Weil sie nicht an ihrem Ressourcen-Limit betrieben werden. WS 2009/10