Prof. Dr. rer. nat. Roland Wism ¨uller
Aufgabenblatt 10 Musterl¨osung
Vorlesung Betriebssysteme I Wintersemester 2021/22
Aufgabe 1: Deadlock-Avoidance
Zun¨achst stellen wir fest, daß der RessourcenvektorE = 1 1 1
ist. Vor der ersten Ressourcen-Anforderung ist der Zustand gegeben durch (Reihenfolge der Prozesse: A, B, C; Reihenfolge der Ressourcen: R, S, T):
C=
0 0 0 0 0 0 0 0 0
R=
1 1 0 0 1 1 1 0 1
A= 1 1 1
1) Anfrage R von Prozeß A. Der Zustandnachder (simulierten) Zuteilung ist:
C =
1 0 0 0 0 0 0 0 0
R=
0 1 0 0 1 1 1 0 1
A= 0 1 1
Es ist leicht zu sehen, daß alle Prozesse beendet werden k¨onnen (Reihenfolge z.B.: A, B, C). Daher ist der Zustand sicher, und R wird an A zugeteilt.
2) Anfrage S von Prozeß B. Der Zustandnachder (simulierten) Zuteilung ist:
C =
1 0 0 0 1 0 0 0 0
R=
0 1 0 0 0 1 1 0 1
A= 0 0 1
Auch hier k¨onnen alle Prozesse beendet werden (Reihenfolge: B, A, C), und der Zustand ist sicher. S wird also an B zugeteilt.
3) Anfrage T von Prozeß C. Der Zustandnachder (simulierten) Zuteilung ist:
C =
1 0 0 0 1 0 0 0 1
R=
0 1 0 0 0 1 1 0 0
A= 0 0 0
Nun kann kein Prozess mehr weitergef¨uhrt werden, der Zustand ist unsicher, T wird nicht an C zugeteilt, d.h. C wird blockiert.
4) Anfrage S von Prozeß A. S ist belegt, also wird A blockiert.
5) Anfrage T von Prozeß B. Der Zustand nach der (simulierten) Zuteilung ergibt sich aus dem Zustand nach Schritt 2), da die Zuteilung in Schritt3)ja nicht erfolgt ist und A in Schritt4)die Ressource nicht zugeteilt wurde. Daher bleibt diese Ressource als Restforderung von A in der ersten Zeile vonRstehen:
C =
1 0 0 0 1 1 0 0 0
R=
0 1 0 0 0 0 1 0 1
A= 0 0 0
Jetzt k¨onnen die Prozesse in der Reihenfolge B, A, C zu Ende gef¨uhrt werden. Der Zustand ist somit sicher, und T wird an B zugeteilt.
Bei der Freigabe von T durch Prozeß B erkennt das Betriebssystem, daß Prozeß C auf dieses Betriebsmittel wartet (siehe Schritt3)). Daher muss es pr¨ufen, ob jetzt eine Zuteilung m¨oglich ist. Das Zustand nach Freigabe von T durch Prozeß B ist:
1
C=
1 1 0 0 0 0 0 0 0
R=
0 0 0 0 1 1 1 0 1
A= 0 0 1
(Hinweis: wenn ein Prozeß ein Betriebsmittel freigibt, k¨onnen wir dieses wieder zu den maximalen Restforderungen dazunehmen. Wir erlauben also, daß ein Prozess die Betriebsmittel auch mehrfach hintereinander anfordern kann, solange er seine beim Start angegebene MaximalbelegungRnicht ¨uberschreitet.)
Nach der simulierten Zuteilung von T an C haben wir den Zustand:
C=
1 1 0 0 0 0 0 0 1
R=
0 0 0 0 1 1 1 0 0
A= 0 0 0
Dieser Zustand ist sicher, da die Prozesse in der Reihenfolge A, C, B zu Ende laufen k¨onnen. Also wird T jetzt an C zugeteilt.
Aufgabe 2: Sichere Zust¨ande
Im Folgenden werden die Spalten der Vektoren bzw. Matrizen immer in der Reihenfolge (Scanner, Modem, Drucker, Festplatte) angegeben.
a) RessourcenvektorE= 2 1 3 3
BelegungsmatrixC=
0 0 0 0 0 0 1 0 0 1 0 1 1 0 2 0 0 0 0 1
AnforderungsmatrixR=
1 1 0 0 2 0 1 0 0 0 0 1 0 0 2 1 0 1 3 1
Belegungsvektor c= 1 1 3 2
RessourcenrestvektorA=E−c= 1 0 0 1
Das System befindet sich nicht in einem sicheren Zustand. Nach dem Bankier-Algorithmus kann er nie die Forde- rungR4,j ≤Aerf¨ullen haben, da nur 3 Drucker zur Verf¨ugung stehen und Prozess D fordert maximal 4 Drucker an!
b) Neue Situation ohne Prozess D:
RessourcenvektorE= 2 1 3 3
BelegungsmatrixC=
0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1
AnforderungsmatrixR=
1 1 0 0 2 0 1 0 0 0 0 1 0 1 3 1
Belegungsvektor c= 0 1 1 2
RessourcenrestvektorA=E−c= 2 0 2 1
(i) Prozess B und Prozess C k¨onnen zun¨achst terminieren, weilR2,j≤ 2 0 2 1
undR3,j≤ 2 0 2 1 . Es ist egal in welcher Reihenfolge, danach istA′ = 2 1 3 2
. Nun k¨onnen auch Prozess A und Prozess E terminieren weil: 1 1 0 0
=R1,j≤A′= 2 1 3 2
und 0 1 3 1
=R4,j≤A′ = 2 1 3 2 .
(ii) Neue Situation: Prozess E belegt die zweite (die letzte ben¨otigte) Festplatte.
RessourcenvektorE = 2 1 3 3
BelegungsmatrixC=
0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 2
AnforderungsmatrixR=
1 1 0 0 2 0 1 0 0 0 0 1 0 1 3 0
Belegungsvektor c= 0 1 1 3
2
RessourcenrestvektorA=E−c= 2 0 2 0
Prozess B kann zu Ende gef¨uhrt werden, dadurch wirdA′ = 2 0 3 0
. Nun kann kein weiterer Prozess weitergef¨uhrt werden: Prozess C nicht, weil 0 0 0 1
=R1,j6≤A′= 2 0 3 0 gilt;
ebensowenig Prozess A und Prozess E, weil kein Modem verf¨ugbar ist.
Die Situation ist also unsicher. Ein Deadlock entst¨unde z.B. dann, wenn Prozess E ein Modem und Prozess C eine weitere Festplatte zugeteilt w¨urde.
(iii) Neue Situation: Prozess E verzichtet auf das Modem, Prozess A belegt einen Scanner und Prozess E belegt eine Festplatte.
RessourcenvektorE = 2 1 3 3
BelegungsmatrixC=
1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 2
AnforderungsmatrixR=
0 1 0 0 2 0 1 0 0 0 0 1 0 0 3 0
Belegungsvektor c= 0 1 1 3
RessourcenrestvektorA=E−c= 1 0 2 0
Der Zustand ist unsicher, da keiner der Prozesse zu Ende gef¨uhrt werden kann.
Ein Deadlock entsteht wenn Prozess A ein Modem, Prozess C eine Festplatte, Prozess E drei Drucker und Prozess B beide Scanner anfordern:
• A fordert 1 x Modem von C
• C fordert 1 x Festplatte von E
• E fordert 3 x Drucker (davon 1 x Drucker ist von B belegt)
• B fordert 2 x Scanner (davon 1 x Scanner ist von A belegt
Aufgabe 3: Deadlock- Avoidance
RessourcenvektorE= 3 2
, RessourcenrestvektorA= 1 0
BelegungsmatrixC=
1 0 1 1 0 1
, AnforderungsmatrixR=
1 2 1 0 2 0
Dieser Zustand ist sicher:
• R2,j≤A ⇒Prozess 2 kann zu Ende laufen,A2= 2 1 .
• R3,j≤A2 ⇒Prozess 3 kann zu Ende laufen,A3= 2 2 .
• R1,j≤A3 ⇒Prozess 1 kann zu Ende laufen,A1= 3 2 . Das Betriebssystem wird die Ressource also zuteilen.
Aufgabe 4: Belegungs-Anforderungs-Graph / Deadlock- Avoidance
a) Prozess 1 Prozess 2 Prozess 3
Drucker CD−ROM
Festplatte
Anmerkung:Der Graph zeigt den Deadlock durch einen Zyklus zwischen Prozess 2 und Prozess 3 an.
b) (i) RessourcenvektorE = 2 3 2
, RessourcenrestvektorA= 1 0 1
BelegungsmatrixC=
1 2 0 0 1 0 0 0 1
, AnforderungsmatrixR=
1 1 2 1 0 1 2 1 0
(ii) R2,j≤A, P2 kann zu Ende laufen, danach istA′= 1 1 1
. Dann ist kein Prozess mehr ausw¨ahlbar.
(iii) Nein.
3
Aufgabe 5: Deadlock-Prevention
Um zyklisches Warten zu vermeiden, ordnen wir die Ressourcen (die Konten) gem¨aß ihrer Kontonummern. Nach dem Lesen einer Eingabezeile sperrt ein Prozess zuerst das Konto mit der niedrigeren Nummer, dann, wenn er die Sperre bekommt (was zu Wartezeiten f¨uhren kann), sperrt er das andere Konto. Da kein Prozess jemals auf ein Konto wartet, das eine kleinere Nummer hat als das Konto, das er bereits gesperrt hat, gibt es nie ein zyklisches Warten, also nie einen Deadlock.
4