Roland Wism ¨uller
Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.dde Tel.: 0271/740-4050, B ¨uro: H-B 8404
Betriebssysteme I
WS 2021/2022
Betriebssysteme I
WS 2021/2022
4 Verklemmungen (Deadlocks )
4 Verklemmungen (Deadlocks) ...
Inhalt:
➥ Einf ¨uhrung
➥ Formale Definition, Voraussetzungen
➥ Behandlung von Deadlocks:
➥ Erkennung und Behebung
➥ Vermeidung (Avoidance)
➥ Verhinderung (Prevention)
➥ Tanenbaum 3
➥ Stallings 6.1-6.6
4.1 Einf ¨uhrung
➥ Wichtige Aufgabe des BSs: Verwaltung von Ressourcen
➥ Ressourcen werden an Prozesse zugeteilt
➥ Ressource kann nur jeweils von einem Prozeß genutzt werden
➥ wechselseitiger Ausschluß
➥ aber: mehrere identische Instanzen einer Ressource m ¨oglich
➥ M ¨ogliches Problem: Deadlock, z.B.
➥ Prozeß A hat Scanner belegt, ben ¨otigt CD-Brenner
➥ Prozeß B hat CD-Brenner belegt, ben ¨otigt Scanner
➥ A wartet auf B, B wartet auf A, ...
4.1 Einf ¨uhrung ...
Unterbrechbare und ununterbrechbare Ressourcen
➥ Unterbrechbare Ressource
➥ kann einem Prozeß ohne Schaden wieder entzogen werden
➥ z.B. Prozessor (Sichern und Wiederherstellen des Prozessor- zustands beim Threadwechsel)
➥ z.B. Hauptspeicher (Auslagern auf Platte)
➥ Deadlocks k ¨onnen verhindert werden
➥ Ununterbrechbare Ressource
➥ kann einem Prozeß nicht entzogen werden, ohne daß seine Ausf ¨uhrung fehlschl ¨agt
➥ z.B. CD-Brenner
➥ Im Folgenden: ununterbrechbare Ressourcen
4.1 Einf ¨uhrung ...
Anforderung von Ressourcen
➥ Systemabh ¨angig, z.B.
➥ explizite Anforderung ¨uber speziellen Systemauruf
➥ implizit beim ¨Offnen eines Ger ¨ats (Systemaufruf open)
➥ falls Ressource nicht verf ¨ugbar: Systemaufruf blockiert∗
➥ H ¨aufig wird
”Zuteilung“ auch explizit programmiert
➥ z.B. durch Nutzung von Semaphoren
➥ Umgekehrt ist auch Belegung eines Semaphors als Ressourcen- zuteilung interpretierbar
4.1 Einf ¨uhrung ...
Beispiel: Nutzung von zwei Ressourcen
➥ Schutz durch zwei Semaphore
P(resource1);
P(resource2);
UseBothResources();
V(resource2);
V(resource1);
Thread A
Semaphore resource1 = 1;
Semaphore resource2 = 1;
4.1 Einf ¨uhrung ...
Beispiel: Nutzung von zwei Ressourcen
➥ Schutz durch zwei Semaphore
UseBothResources();
Thread B
P(resource1);
V(resource1);
P(resource2);
V(resource2);
Semaphore resource1 = 1;
Semaphore resource2 = 1;
4.1 Einf ¨uhrung ...
Beispiel: Nutzung von zwei Ressourcen
➥ Verklemmung m ¨oglich
UseBothResources();
Thread B
P(resource1);
V(resource1);
P(resource2);
V(resource2);
P(resource1);
P(resource2);
UseBothResources();
V(resource2);
V(resource1);
Thread A
Semaphore resource1 = 1;
Semaphore resource2 = 1;
4.1 Einf ¨uhrung ...
Beispiel: Nutzung von zwei Ressourcen
➥ Verklemmung m ¨oglich
UseBothResources();
Thread B
P(resource1);
V(resource1);
P(resource2);
V(resource2);
P(resource1);
P(resource2);
UseBothResources();
V(resource2);
V(resource1);
Thread A
Semaphore resource1 = 1;
Semaphore resource2 = 1;
4.1 Einf ¨uhrung ...
Beispiel: Nutzung von zwei Ressourcen
➥ Verklemmungsfreie L ¨osung
P(resource2);
V(resource1);
V(resource2);
P(resource1);
UseBothResources();
Thread B P(resource1);
P(resource2);
UseBothResources();
V(resource2);
V(resource1);
Thread A
Semaphore resource1 = 1;
Semaphore resource2 = 1;
4.2 Formale Beschreibung
Definition
Eine Menge von Prozessen∗ befindet sich in einem Deadlock-Zustand (Verklemmungs-Zustand),
wenn jeder Prozeß∗ aus der Menge auf ein Ereignis wartet,
das nur ein anderer Prozeß∗ aus dieser Menge ausl ¨osen kann.
➥ Alle Prozesse∗ warten
➥ Die Ereignisse werden daher niemals ausgel ¨ost
➥ Keiner der Prozesse∗ wird jemals wieder aufwachen
4.2 Formale Beschreibung ...
Bedingungen f ¨ur einen Ressourcen-Deadlock 1. Wechselseitiger Ausschluß:
Jede Ressource kann zu einem Zeitpunkt von h ¨ochstens einem Prozeß genutzt werden.
2. Hold-and-Wait (Besitzen und Warten):
Ein Prozeß, der bereits Ressourcen besitzt, kann noch weitere Ressourcen anfordern.
3. Ununterbrechbarkeit (kein Ressourcenentzug):
Einem Prozeß, der im Besitz einer Ressource ist, kann diese nicht gewaltsam entzogen werden.
4. Zyklisches Warten:
Es gibt eine zyklische Kette von Prozessen, bei der jeder Prozeß auf eine Ressource wartet, die vom n ¨achsten Prozeß in der Kette
4.2 Formale Beschreibung ...
Bedingungen f ¨ur einen Deadlock ...
➥ Anmerkungen:
➥ Bedingungen 1-3 sind notwendige Bedingungen, aber nicht hinreichend
➥ Bedingung 4 ist eine potentielle Konsequenz aus 1-3
➥ die Unaufl ¨osbarkeit des zyklischen Wartens ist eine Folge aus 1-3
➥ Alle vier Bedingungen zusammen sind notwendig und hinreichend f ¨ur eine Verklemmung
➥ Konsequenz:
4.2 Formale Beschreibung ...
Modellierung von Deadlocks
➥ Belegungs-Anforderungs-Graph:
➥ gerichteter Graph
➥ zwei Arten von Knoten:
➥ Prozesse ()
➥ Ressourcen ( )
➥ Kante Ressource → Prozeß:
Ressource ist vom Prozeß belegt
➥ Kante Prozeß → Ressource:
Prozeß wartet auf Zuteilung der Ressource
➥ Ein Deadlock liegt genau dann vor, wenn der Graph einen Zyklus enth ¨alt
P2
R1 P1
R2
P2 R2
R1 P1
4.2 Formale Beschreibung ...
Beispiel: Ablauf mit Verklemmung
Anfrage T Anfrage R
C B
A
Anfrage R Anfrage S Freigabe R
Freigabe S
Freigabe S Freigabe T
Freigabe T Freigabe R Anfrage S Anfrage T
4.2 Formale Beschreibung ...
Beispiel: Ablauf mit Verklemmung
Anfrage T Anfrage R
T S
R
C B
A
Anfrage R Anfrage S Freigabe R
Freigabe S
Freigabe S Freigabe T
Freigabe T Freigabe R Anfrage S Anfrage T
A belegt R
4.2 Formale Beschreibung ...
Beispiel: Ablauf mit Verklemmung
Anfrage T Anfrage R
C B
A
Anfrage R Anfrage S Freigabe R
Freigabe S
Freigabe S Freigabe T
Freigabe T Freigabe R Anfrage S Anfrage T
B belegt S
4.2 Formale Beschreibung ...
Beispiel: Ablauf mit Verklemmung
Anfrage T Anfrage R
T S
R
C B
A
Anfrage R Anfrage S Freigabe R
Freigabe S
Freigabe S Freigabe T
Freigabe T Freigabe R Anfrage S Anfrage T
C belegt T
4.2 Formale Beschreibung ...
Beispiel: Ablauf mit Verklemmung
Anfrage T Anfrage R
C B
A
Anfrage R Anfrage S Freigabe R
Freigabe S
Freigabe S Freigabe T
Freigabe T Freigabe R Anfrage S Anfrage T
an
A fordert S
==> Warten S belegt
4.2 Formale Beschreibung ...
Beispiel: Ablauf mit Verklemmung
Anfrage T Anfrage R
T S
R
C B
A
Anfrage R Anfrage S Freigabe R
Freigabe S
Freigabe S Freigabe T
Freigabe T Freigabe R Anfrage S Anfrage T
an
B fordert T
==> Warten T belegt
4.2 Formale Beschreibung ...
Beispiel: Ablauf mit Verklemmung
Anfrage T Anfrage R
C B
A
Anfrage R Anfrage S Freigabe R
Freigabe S
Freigabe S Freigabe T
Freigabe T Freigabe R Anfrage S Anfrage T
4.2 Formale Beschreibung ...
Beispiel: Ablauf mit Verklemmung
Dead− lock!
Anfrage T Anfrage R
T S
R
C B
A
Anfrage R Anfrage S Freigabe R
Freigabe S
Freigabe S Freigabe T
Freigabe T Freigabe R Anfrage S Anfrage T
4.2 Formale Beschreibung ...
Beispiel: Ablauf ohne Verklemmung
Anfrage T Anfrage R
C B
A
Anfrage R Anfrage S Freigabe R
Freigabe S
Freigabe S Freigabe T
Freigabe T Freigabe R Anfrage S Anfrage T
4.2 Formale Beschreibung ...
Beispiel: Ablauf ohne Verklemmung
Anfrage T Anfrage R
T S
R
C B
A
Anfrage R Anfrage S Freigabe R
Freigabe S
Freigabe S Freigabe T
Freigabe T Freigabe R Anfrage S Anfrage T
A belegt R
4.2 Formale Beschreibung ...
Beispiel: Ablauf ohne Verklemmung
Anfrage T Anfrage R
C B
A
Anfrage R Anfrage S Freigabe R
Freigabe S
Freigabe S Freigabe T
Freigabe T Freigabe R Anfrage S Anfrage T
B belegt S
4.2 Formale Beschreibung ...
Beispiel: Ablauf ohne Verklemmung
Betriebssystem erkennt, daß Belegung von T durch C zu Deadlock Anfrage T
Anfrage R
T S
R
C B
A
Anfrage R Anfrage S Freigabe R
Freigabe S
Freigabe S Freigabe T
Freigabe T Freigabe R Anfrage S Anfrage T
C fordert T an
4.2 Formale Beschreibung ...
Beispiel: Ablauf ohne Verklemmung
Anfrage T Anfrage R
C B
A
Anfrage R Anfrage S Freigabe R
Freigabe S
Freigabe S Freigabe T
Freigabe T Freigabe R Anfrage S Anfrage T
an
A fordert S
==> Warten S belegt
4.2 Formale Beschreibung ...
Beispiel: Ablauf ohne Verklemmung
Anfrage T Anfrage R
T S
R
C B
A
Anfrage R Anfrage S Freigabe R
Freigabe S
Freigabe S Freigabe T
Freigabe T Freigabe R Anfrage S Anfrage T
B belegt T
4.2 Formale Beschreibung ...
Beispiel: Ablauf ohne Verklemmung
Anfrage T Anfrage R
C B
A
Anfrage R Anfrage S Freigabe R
Freigabe S
Freigabe S Freigabe T
Freigabe T Freigabe R Anfrage S Anfrage T
B gibt S frei
4.2 Formale Beschreibung ...
Beispiel: Ablauf ohne Verklemmung
Anfrage T Anfrage R
T S
R
C B
A
Anfrage R Anfrage S Freigabe R
Freigabe S
Freigabe S Freigabe T
Freigabe T Freigabe R Anfrage S Anfrage T
A belegt S
4.2 Formale Beschreibung ...
Beispiel: Ablauf ohne Verklemmung
Anfrage T Anfrage R
C B
A
Anfrage R Anfrage S Freigabe R
Freigabe S
Freigabe S Freigabe T
Freigabe T Freigabe R Anfrage S Anfrage T
B gibt T frei
4.3 Behandlung von Deadlocks
Prinzipiell vier M ¨oglichkeiten
➥ Vogel-Strauß-Algorithmus
➥ nichts tun und hoffen, daß alles gut geht
➥ Deadlock-Erkennung und -Behebung
➥ l ¨asst zun ¨achst alle Anforderungen zu, l ¨ost ggf. Deadlock auf
➥ Deadlock-Avoidance (Deadlock-Vermeidung)
➥ BS l ¨asst Resourcenanforderung nicht zu, wenn dadurch ein Deadlock entstehen k ¨onnte
➥ Deadlock-Prevention (Deadlock-Verhinderung)
➥ macht eine der 4 Deadlock-Bedingungen unerf ¨ullbar
Achtung: Begriffsverwirrung bei Verhinderung vs. Vermeidung!
4.3.1 Deadlock-Erkennung und -Behebung
Deadlock-Erkennung bei einer Ressource pro Typ
➥ Deadlock ⇔ Belegungs-Anforderungs-Graph enth ¨alt Zyklus
R B
C
A
S D T E
F U V
4.3.1 Deadlock-Erkennung und -Behebung ...
Deadlock-Erkennung bei mehreren Ressourcen pro Typ
➥ Belegungs-Anforderungs-Graph nicht mehr ad ¨aquat
➥ Prozeß wartet nicht auf bestimmte Ressource, sondern auf irgendeine Ressource des passenden Typs
➥ Im Folgenden: Matrix-basierter Algorithmus
➥ Das System sei wie folgt modelliert:
➥ n Prozesse P1, ..., Pn
➥ m Klassen von Ressourcen
➥ Klasse i (1 ≤ i ≤ m) enth ¨alt Ei Ressource-Instanzen
4.3.1 Deadlock-Erkennung und -Behebung ...
Datenstrukturen des Matrix-Algorithmus
➥ Ressourcenvektor E
➥ Anzahl verf ¨ugbarer Ressourcen f ¨ur jede Klasse
➥ Ressourcenrestvektor A
➥ gibt f ¨ur jede Klasse an, wieviele Ressourcen noch frei sind
➥ Belegungsmatrix C
➥ Cij = Anzahl der Ressourcen der Klasse j, die Prozeß Pi belegt
➥ Invariante: ∀j = 1...m :
Xn
Cij + Aj = Ej
4.3.1 Deadlock-Erkennung und -Behebung ...
Beispiel:
( 2 1 0 0 ) E = ( 4 2 3 1 ) A =
BandgerätePlotterScannerCD−ROM BandgerätePlotterScannerCD−ROM
R = C = 2 0 0 1
0 1 2 0 0 0 1 0
2 1 0 0 Belegungsmatrix
Ressourcenvektor Ressourcenrestvektor
Anforderungsmatrix 2 0 1 1 0 0
2
3
Zeile 2: Belegung Zeile 2: Forderungen durch Prozeß 2 von Prozeß 2
4.3.1 Deadlock-Erkennung und -Behebung ...
Matrix-Algorithmus
1. Suche unmarkierten Prozeß Pi, so daß i-te Zeile von R kleiner oder gleich A ist, d.h. Rij ≤ Aj f ¨ur alle j = 1...m
2. Falls ein solcher Prozeß existiert:
addiere i-te Zeile von C zu A, markiere Prozeß Pi, gehe zu 1 3. Andernfalls: Ende
➥ Alle am Ende nicht markierten Prozesse sind an einem Deadlock beteiligt
4.3.1 Deadlock-Erkennung und -Behebung ...
Beispiel:
( 2 1 0 0 ) E = ( 4 2 3 1 ) A =
BandgerätePlotterScannerCD−ROM BandgerätePlotterScannerCD−ROM
R = C = 2 0 0 1
0 1 2 0 0 0 1 0
2 1 0 0 Belegungsmatrix
Ressourcenvektor Ressourcenrestvektor
Anforderungsmatrix 2 0 1 1 0 0
2
3
Zeile 2: Belegung Zeile 2: Forderungen
4.3.1 Deadlock-Erkennung und -Behebung ...
Beispiel:
( 2 1 0 0 ) E = ( 4 2 3 1 ) A =
BandgerätePlotterScannerCD−ROM BandgerätePlotterScannerCD−ROM
R = C = 2 0 0 1
0 1 2 0 0 0 1 0
2 1 0 0
Ressourcenvektor Ressourcenrestvektor
2 0 1 1 0 0
2
3
4.3.1 Deadlock-Erkennung und -Behebung ...
Beispiel:
2. A j = A j + C3,j ; markiere Prozeß 3
( 2 2 2 0 ) E = ( 4 2 3 1 ) A =
BandgerätePlotterScannerCD−ROM BandgerätePlotterScannerCD−ROM
R = C = 2 0 0 1
0 1 2 0 0 0 1 0
2 1 0 0 Belegungsmatrix
Ressourcenvektor Ressourcenrestvektor
Anforderungsmatrix 2 0 1 1 0 0
2
3
4.3.1 Deadlock-Erkennung und -Behebung ...
Beispiel:
( 2 2 2 0 ) E = ( 4 2 3 1 ) A =
BandgerätePlotterScannerCD−ROM BandgerätePlotterScannerCD−ROM
R = C = 2 0 0 1
0 1 2 0 0 0 1 0
2 1 0 0
Ressourcenvektor Ressourcenrestvektor
2 0 1 1 0 0
2
3
4.3.1 Deadlock-Erkennung und -Behebung ...
Beispiel:
1. R1,4 > A 4 Prozeß 1 kann auch nicht Deadlock zwischen ( 2 2 2 0 )
E = ( 4 2 3 1 ) A =
BandgerätePlotterScannerCD−ROM BandgerätePlotterScannerCD−ROM
R = C = 2 0 0 1
0 1 2 0 0 0 1 0
2 1 0 0 Belegungsmatrix
Ressourcenvektor Ressourcenrestvektor
Anforderungsmatrix 2 0 1 1 0 0
2
3
4.3.1 Deadlock-Erkennung und -Behebung ...
Wann wird Deadlock-Erkennung durchgef ¨uhrt?
➥ Bei jeder Ressourcen-Anforderung:
➥ Deadlocks werden schnellstm ¨oglich erkannt
➥ ggf. zu hoher Rechenaufwand
➥ In regelm ¨aßigen Abst ¨anden
➥ Wenn Prozessorauslastung niedrig ist
➥ Rechenkapazit ¨at ist verf ¨ugbar
➥ niedrige Auslastung kann Hinweis auf Deadlock sein
4.3.1 Deadlock-Erkennung und -Behebung ...
M ¨oglichkeiten zur Behebung von Deadlocks
➥ Tempor ¨arer Entzug einer Ressource
➥ schwierig bis unm ¨oglich
➥ (wir betrachten hier ununterbrechbare Ressourcen ...)
➥ R ¨ucksetzen eines Prozesses
➥ Prozeßzustand wird regelm ¨aßig gesichert (Checkpoint)
➥ bei Verklemmung: R ¨ucksetzen auf Checkpoint, bei dem Prozeß Ressource noch nicht belegt hatte
➥ auch schwierig
➥ Abbruch eines Prozesses
➥ w ¨ahle Prozeß, der problemlos neu gestartet werden kann
4.3.2 Deadlock-Avoidance
Vorbemerkung: Ressourcenspur
gib CD frei
belege CD
gib CD
CD
Prozeß B
Prozeß A belege
Verboten
4.3.2 Deadlock-Avoidance
Vorbemerkung: Ressourcenspur
gib CD frei
belege CD
gib CD frei CD
CD
Prozeß B
Prozeß A belege
CD
Verboten
4.3.2 Deadlock-Avoidance
Vorbemerkung: Ressourcenspur
gib CD frei
belege CD
gib CD
CD
Prozeß B
Prozeß A belege
Verboten
4.3.2 Deadlock-Avoidance
Vorbemerkung: Ressourcenspur
belege Scanner
gib Scanner
frei gib Scanner frei
Scanner
Scanner
gib CD frei
belege CD
gib CD frei CD
CD
belege Scanner Prozeß B
Prozeß A belege
CD
4.3.2 Deadlock-Avoidance
Vorbemerkung: Ressourcenspur
belege gib
gib Scanner frei
Scanner
Scanner
gib CD frei
belege CD
gib CD
CD
belege Scanner Prozeß B
Prozeß A belege
4.3.2 Deadlock-Avoidance
Vorbemerkung: Ressourcenspur
belege Scanner
gib Scanner
frei gib Scanner frei
Scanner
Scanner
gib CD frei
belege CD
gib CD frei CD
CD
In diesem Bereich: Verklemmung ist unvermeidlich!
belege Scanner Prozeß B
Prozeß A belege
CD
4.3.2 Deadlock-Avoidance
Vorbemerkung: Ressourcenspur
belege Scanner ? Prozeß B
Prozeß A belege
4.3.2 Deadlock-Avoidance
Vorbemerkung: Ressourcenspur
Verklemmung!
Was wäre, wenn unmittelbar nach Zuteilung des Scanners alle Pro−
zesse ihre maximalen Restforderungen stellen würden?
belege CD
belege Scanner belege Scanner
Prozeß B
Prozeß A belege
CD
4.3.2 Deadlock-Avoidance ...
Sichere und unsichere Zust ¨ande:
➥ Ein Zustand heißt sicher,
wenn es eine Ausf ¨uhrungsreihenfolge der Prozesse gibt, in der alle Prozesse (ohne Deadlock) zu Ende laufen,
selbst wenn alle Prozesse sofort die maximalen Ressourcen- anforderungen stellen
➥ Sonst heißt der Zustand unsicher
➥ Anmerkung:
➥ ein unsicherer Zustand muß nicht zwangsl ¨aufig in eine Ver-
4.3.2 Deadlock-Avoidance ...
Bankiers-Algorithmus
➥ BS teilt Ressource nur dann zu, wenn dadurch auf keinen Fall ein Deadlock entstehen kann
➥ dazu: BS pr ¨uft bei jeder Ressourcenanforderung, ob der Zustand nach der Anforderung noch sicher ist
➥ falls ja, wird die Ressource zugeteilt
➥ falls nein, wird der anfordernde Prozeß blockiert
➥ sehr vorsichtige (restriktive) Ressourcenzuteilung!
➥ Das BS muß dazu die (maximalen) zuk ¨unftigen Forderungen aller Prozesse kennen!
➥ in der Praxis i.a. nicht erf ¨ullbar
➥ Verfahren nur f ¨ur spezielle Anwendungsf ¨alle tauglich
4.3.2 Deadlock-Avoidance ...
Bestimmung, ob ein Zustand sicher ist
➥ Durch angepaßten Matrix-Algorithmus zur Deadlock-Erkennung (☞ 4.3.1, Folie 230)
➥ Der aktuelle Zustand des Systems ist durch E, A, und C beschrieben
➥ vorhandene, freie und belegte Ressourcen
➥ R beschreibt nun die maximalen zuk ¨unftigen Forderungen
➥ Der Zustand ist genau dann sicher, wenn der Algorithmus f ¨ur diese Werte von E, A, C und R keine Verklemmung erkennt
4.3.3 Deadlock-Prevention
Ziel: Vorbeugendes Verhindern von Deadlocks
➥ Eine der vier Deadlock-Bedingungen wird unerf ¨ullbar gemacht
➥ damit sind Deadlocks unm ¨oglich
➥ h ¨aufigste L ¨osung in der Praxis!
Wechselseitiger Ausschluß
➥ Ressourcen nur dann direkt an einzelne Prozesse zuteilen, wenn dies unvermeidlich ist
➥ Beispiel: Zugriff auf Drucker nur ¨uber Drucker-Spooler
➥ es gibt keine Konkurrenz mehr um den Drucker
➥ aber: evtl. Deadlocks an anderer Stelle m ¨oglich (Konkurrenz um Platz im Spooler-Puffer)
4.3.3 Deadlock-Prevention ...
Hold-and-Wait-Bedingung
➥ Forderung: jeder Prozeß muß alle seine Ressourcen bereits beim Start anfordern
➥ Nachteil: i.d.R. sind Forderungen nicht bekannt
➥ Weiterer Nachteil: m ¨ogliche Ressourcen-Verschwendung
➥ Anwendung bei Transaktionen in Datenbank-Systemen:
Two Phase Locking (Sperrphase, Zugriffsphase)
➥ Alternative: vor Anforderung einer Ressource alle belegten Ressourcen kurzzeitig freigeben
➥ i.a. auch nicht praktikabel (wechselseitiger Ausschluß!)
4.3.3 Deadlock-Prevention ...
Zyklisches Warten
➥ Durchnumerieren aller Ressourcen
➥ Anforderungen von Ressourcen zu beliebigem Zeitpunkt, aber nur in aufsteigender Reihenfolge!
➥ d.h. Prozeß darf nur Ressource mit gr ¨oßerer Nummer als bereits belegte Ressourcen anfordern
➥ Deadlocks werden damit unm ¨oglich:
➥ zu jedem Zeitpunkt: betrachte reservierte Ressource mit der h ¨ochsten Nummer
➥ Prozeß, der diese Ressource belegt, kann zu Ende laufen
➥ er wird nur Ressourcen mit h ¨oherer Nummer anfordern
➥ Induktion: alle Prozesse k ¨onnen zu Ende laufen
4.3.3 Deadlock-Prevention ...
Zyklisches Warten ...
➥ In der Praxis erfolgversprechendster Ansatz zur Verhinderung von Deadlocks
➥ Probleme:
➥ Festlegen einer f ¨ur alle Prozesse tauglichen Ordnung nicht immer praktikabel
➥ kann zu Resourcenverschwendung f ¨uhren
➥ Ressourcen m ¨ussen evtl. bereits reserviert werden, bevor sicher ist, daß sie ben ¨otigt werden
4.4 Verhungerung
➥ Situation: ein Prozeß P bekommt eine Ressource nie zugeteilt, obwohl kein Deadlock vorliegt
➥ wegen st ¨andiger Ressourcenanforderungen anderer Prozesse, die vor der von P erf ¨ullt werden
➥ Beispiel: L ¨osung des Leser/Schreiber-Problems aus 3.1.5
➥ Vermeidung des Verhungerns: z.B. durch FIFO-Strategie
➥ FIFO: First In First Out
➥ teile Ressource an den Prozeß zu, der am l ¨angsten wartet
➥ Anmerkung: manchmal ist die M ¨oglichkeit des Verhungerns
”gewollt“
➥ wenn bestimmten Prozessen Priorit ¨at gegeben werden soll
4.5 Zusammenfassung / Wiederholung
➥ Deadlock: eine Menge von Prozessen wartet auf Ereignisse, die nur ein anderer Prozeß der Menge ausl ¨osen kann
➥ Bedingungen f ¨ur Ressourcen-Deadlocks:
➥ Wechselseitiger Ausschluß
➥ Hold-and-Wait (Besitzen und Warten)
➥ Ununterbrechbarkeit (kein Ressourcenentzug)
➥ Zyklisches Warten
➥ Behandlung von Deadlocks:
➥ Erkennung und Behebung
4.5 Zusammenfassung / Wiederholung ...
➥ Behandlung von Deadlocks ...:
➥ Avoidance (Vermeidung)
➥ Ressource nur dann vergeben, wenn der entstehende Zustand sicher ist
➥ sicherer Zustand: kein Deadlock, selbst wenn alle Prozesse sofort ihre Maximalforderungen stellen
➥ Prevention (Verhinderung)
➥ eine der vier Bedingungen unerf ¨ullbar machen
➥ z.B. Spooling: vermeidet wechselseitigen Ausschluß
➥ oft auch: Festlegung einer Reihenfolge der Ressourcen
➥ wenn alle Prozesse die Ressourcen nur in dieser Reihenfolge belegen, k ¨onnen keine Deadlocks entstehen