• Keine Ergebnisse gefunden

4.1 Einf ¨uhrung

N/A
N/A
Protected

Academic year: 2022

Aktie "4.1 Einf ¨uhrung"

Copied!
63
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

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

(2)

Betriebssysteme I

WS 2021/2022

4 Verklemmungen (Deadlocks )

(3)

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)

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, ...

(5)

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

(6)

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

(7)

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;

(8)

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;

(9)

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;

(10)

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;

(11)

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;

(12)

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

(13)

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

(14)

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:

(15)

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

(16)

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

(17)

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

(18)

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

(19)

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

(20)

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

(21)

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

(22)

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

(23)

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

(24)

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

(25)

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

(26)

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

(27)

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

(28)

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

(29)

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

(30)

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

(31)

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

(32)

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

(33)

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!

(34)

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

(35)

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

(36)

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

(37)

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

(38)

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

(39)

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

(40)

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

(41)

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

(42)

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

(43)

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

(44)

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

(45)

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

(46)

4.3.2 Deadlock-Avoidance

Vorbemerkung: Ressourcenspur

gib CD frei

belege CD

gib CD

CD

Prozeß B

Prozeß A belege

Verboten

(47)

4.3.2 Deadlock-Avoidance

Vorbemerkung: Ressourcenspur

gib CD frei

belege CD

gib CD frei CD

CD

Prozeß B

Prozeß A belege

CD

Verboten

(48)

4.3.2 Deadlock-Avoidance

Vorbemerkung: Ressourcenspur

gib CD frei

belege CD

gib CD

CD

Prozeß B

Prozeß A belege

Verboten

(49)

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

(50)

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

(51)

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

(52)

4.3.2 Deadlock-Avoidance

Vorbemerkung: Ressourcenspur

belege Scanner ? Prozeß B

Prozeß A belege

(53)

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

(54)

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-

(55)

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

(56)

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

(57)

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)

(58)

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ß!)

(59)

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

(60)

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

(61)

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

(62)

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

(63)

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

Referenzen

ÄHNLICHE DOKUMENTE

Zeigen Sie, daß folgende Gleichungen auf regul¨ aren Ausdr¨ ucken erf¨ ullt

• Weiterhin kann dem Automaten ¨ uber drei verschiedene F¨ acher entweder ein Scho- koriegel, ein Becher Yoghurt oder ein Apfel entnommen werden, sofern mindestens der

Mathematisches Institut der Universit¨ at M¨

Besteht nicht mehr gen ¨ugend Platz f ¨ur die tempor ¨are Datei, so wird beim Start nur ein Teil der Datei in den Editor geladen und/oder er schaltet w ¨ahrend dem Editieren in

ci Speichert neue Version in einer Archivdatei (check in) co Entnimmt eine Version aus einer Archivdatei (check out) rcs Erstellt neue Archivdateien oder ¨andert ihre Attribute

F¨ ur Argumente von Funktionen bedeutet dies, dass die Funktion die nachpr¨ ufbare Zusicherung gibt, dieses Argument nicht zu ver¨ andern und dass beim Aufurf auch konstante

Andrew Dolphin Fachbereich Mathematik und Statistik Prof.. Markus Schweighofer

Groß, Weiand (Universit ¨at Trier) Excel/OpenOffice Kurs 2014 2/38