Prof. Dr. rer. nat. Roland Wism ¨uller
Aufgabenblatt 9
(Besprechung am 16.12.2021)
Vorlesung Betriebssysteme I Wintersemester 2021/22
Aufgabe 1: Parkhaus-Synchronisation in Java (f ¨ ur Motivierte)
Schreiben Sie ein Simulationsprogramm f¨ur ein Parkhaus. Neue Autos kommen nach einem Zufallsverfahren an und verlassen nach zuf¨alliger Wartezeit das Parkhaus. Realisieren Sie jedes Fahrzeug als separaten Thread. Das Parkhaus hat nat¨urlich nur eine begrenzte Kapazit¨at.
Beschreiben Sie Ihre Implementierung. Verwenden Sie den vorgegebenen Code-Ger¨ustParking.java.
Die Meldungen sind in denenter()undexit()Methoden eingef¨ugt, damit man sieht welches Auto an der Reihe ist.
Z.B.:
”Car 7 herausfahren ... , Frei: 1“ (Auto 7 hat das Parkhaus verlassen, Freie Plaetze: 1) oder
”Car 4 wartet ...“ (Auto 4 soll warten, kein Platz frei.) Hinweise:
• Sie k¨onnen das Java Synchronisations-PaketBssync.jarverwenden. (siehe Webseite unter
”Materialien“; dort finden Sie auch die entsprechende Dokumentation)
• Versuchen Sie unterschiedliche L¨osungen mit den gelernten Synchronisationskonzepten zu implementieren.
Testen Sie Ihre L¨osung gr¨undlich. Sie k¨onnen (und sollen!) Ihre L¨osung in der ¨Ubung pr¨asentieren.
Aufgabe 2: Kommunikation zwischen Prozessen: benannte Pipe oder FIFO
Unbenannte Pipes werden im Systemkern erzeugt und verwaltet. Sie besitzen keine Eintr¨age ¨uber ihren Besitzer und eine Authentifizierung ist damit nicht m¨oglich. Moderne Betriebssysteme bieten aber ein erweitertes Konzept f¨ur Pipes, die so genannten Named Pipes (oder FIFO), an. FIFOs haben einen Eintrag im Dateisystem und sind durch Zugriffsrechte identifizierbar. Bei Unix-Systemen k¨onnen Sie mitmkfifo(oder Systemaufrufmknod) eine FIFO erzeugen. Es gibt einen POSIX-kompatiblen Funktionsaufruf und auch ein Unix Kommando mit gleicher Funktionalit¨at (s.man mkfifo undman 3 mkfifo).
Schreiben Sie entweder ein C-Programm oder eine Sequenz von Unix-Kommandos, um einen Datenaustausch zwischen zwei Prozessen mit Hilfe einer FIFO zu realisieren.
Aufgabe 3: Deadlocks
Gegeben sei ein System mit drei Prozessen (P1, P2, P3) und vier Semaphoren (A, B, C, D), die jeweils mit dem Wert 1 initialisiert wurden. Die Prozesse f¨uhren die folgenden Anweisungsfolgen aus:
1
Prozess P1 Prozess P2 Prozess P3
P(C) P(A) P(B)
P(A) P(B) P(D)
... P(D) P(C)
... ... ...
V(A) V(D) V(C)
V(C) V(B) V(D)
V(A) V(B)
Weisen Sie nach, dass sich dieses Prozesssystem prinzipiell verklemmen kann, indem Sie einen Ablauf angeben, der zu einer Verklemmung f¨uhrt. Stellen Sie den zeitlichen Ablauf der drei Prozesse in Form eines Diagramms dar, in dem Sie auch die Ausf¨uhrung der Semaphor-Operationen und auftretende Prozess-Blockierungen kennzeichnen.
Aufgabe 4: Belegungs/Anforderungs-Graph
Gegeben sei ein System mit drei Prozessen (P1, P2, P3) und drei Semaphoren (A, B, C), die jeweils mit dem Wert 1 initialisiert wurden. Die Prozesse f¨uhren die folgenden Anweisungsfolgen aus:
Prozess P1 Prozess P2 Prozess P3
P(A); P(B); // (2) P(B); // (1)
P(B); // (1) (2) P(C); // (1) P(C);
... P(A); P(A); // (2)
... ... ...
V(B); V(A); V(A);
V(A); V(C); V(C);
V(B); V(B);
Nehmen Sie an, daß bei zwei verschiedenen Ausf¨uhrungen des Prozess-Systems die Prozesse jeweils bis zu den mit (1) bzw. (2) markiertenP-Operationen gekommen sind, d.h. dieP-Operation wurde vom Prozess aufgerufen, ist aber noch nicht beendet (beachten Sie, daß das nicht zwangsl¨aufig bedeutet, daß der Prozess in derP-Operation blockiert wurde;
es k¨onnte genausogut sein, dass die Operation ohne Blockierung ausgef¨urt werden kann und nur noch nicht beendet ist).
Zeichnen Sie f¨ur die beiden Zust¨ande (1) und (2) je einen Belegungs/Anforderungs-Graphen. Liegt in einem der F¨alle eine Verklemmung vor?
Aufgabe 5: Belegungs/Anforderungs-Graph
Gegeben sei ein System mit drei Prozessen (P1, P2, P3) und drei Semaphoren (A, B, C), die jeweils mit dem Wert 1 initialisiert wurden. Die Prozesse f¨uhren die folgenden Anweisungsfolgen aus:
Prozess P1 Prozess P2 Prozess P3
P(A); P(C); P(C);
P(B); P(A); // (*) V(C);
V(B); P(B); P(A); // (*)
P(C); // (*) ... P(B);
... ... ...
V(C) V(B); ...
V(B); V(A); V(B);
V(C); V(A);
In einem bestimmten Ablauf hat sich dieses System in den mit (*) gekennzeichnetenP-Operationen verklemmt. Zeichnen Sie f¨ur diesen Zustand einen Belegungs/Anforderungs-Graphen.
2
Aufgabe 6: Verklemmungserkennung: matrixbasierter Algorithmus
Gegeben ist der folgende Zustand eines Prozess-Systems:
RessourcenvektorE= 3 4 1 2
BelegungsmatrixC=
1 0 0 0 0 1 1 0 2 0 0 0 0 1 0 0 0 0 0 1
AnforderungsmatrixR=
0 0 0 2 0 0 1 0 0 3 0 0 2 0 0 0 0 1 0 0
a) Bestimmen Sie zun¨achst den RessourcenrestvektorA. b) F¨uhren Sie nun den matrixbasierten Algorithmus durch.
c) Liegt eine Verklemmung vor?
Aufgabe 7: Verklemmungserkennung: matrixbasierter Algorithmus
Gegeben sei ein System mit drei Prozessen (P1, P2, P3) und drei Semaphoren (A, B, C), die jeweils mit dem Wert 1 initialisiert wurden. Die Prozesse f¨uhren die folgenden Anweisungsfolgen aus:
Prozess P1 Prozess P2 Prozess P3
P(A); P(B); // (2) P(B); // (1)
P(B); // (1) (2) P(C); // (1) P(C);
... P(A); P(A); // (2)
... ... ...
V(B); V(A); V(A);
V(A); V(C); V(C);
V(B); V(B);
Nehmen Sie an, daß bei zwei verschiedenen Ausf¨uhrungen des Prozess-Systems die Prozesse jeweils bis zu den mit (1) bzw. (2) markiertenP-Operationen gekommen sind, d.h. dieP-Operation wurde vom Prozess aufgerufen, ist aber noch nicht beendet (beachten Sie, daß das nicht zwangsl¨aufig bedeutet, daß der Prozess in derP-Operation blockiert wurde;
es k¨onnte genausogut sein, dass die Operation ohne Blockierung ausgef¨urt werden kann und nur noch nicht beendet ist).
Bestimmen Sie f¨ur die beiden Zust¨ande (1) und (2) mit Hilfe des matrixbasierten Algorithmus, ob eine Verklemmung vorliegt.
3