• Keine Ergebnisse gefunden

Aufgabe 1: Wechselseitiger Ausschluss: strikter Wechsel

N/A
N/A
Protected

Academic year: 2022

Aktie "Aufgabe 1: Wechselseitiger Ausschluss: strikter Wechsel"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Prof. Dr. rer. nat. Roland Wism ¨uller

Aufgabenblatt 6

(Besprechung am 25.11.2021)

Vorlesung Betriebssysteme I Wintersemester 2021/22

Aufgabe 1: Wechselseitiger Ausschluss: strikter Wechsel

Schauen Sie sich die L¨osung des striktes Wechsels (siehe Vorlesung Kapitel 3.1.3: L¨osungsversuch 3) zur Realisierung des wechselseitigen Ausschlusses an:

int turn = 0;

Thread 0: Thread 1:

while (true) {

while(turn != 0); // warten KritischerAbschnitt();

turn = 1;

NichtKritischerAbschnitt();

}

while (true) {

while(turn != 1); // warten KritischerAbschnitt();

turn = 0;

NichtKritischerAbschnitt();

}

Entwickeln Sie ein Szenario, das folgende Behauptung belegt: wenn ein Thread viel langsamer als der andere ist, wird der schnelle Thread daran gehindert (innerhalb kurzer Zeit) in den kritischen Abschnitt einzutreten, obwohl sich kein Thread im kritischen Abschnitt befindet.

Aufgabe 2: Wechselseitiger Ausschluss: Strikter Wechsel

Geben Sie eine L¨osung in einer Pseudo-Programmiersprache f¨ur den strikten Wechsel f¨urNThreads an.

Aufgabe 3: Wechselseitiger Ausschuss im Betriebssystem

Code des Betriebssystems, der im Systemmodus ausgef¨uhrt wird, muss w¨ahrend eines kritischen Abschnitts alle Interrupts sperren (vgl. L¨osungsversuch 1 in Abschnitt 3.1.3 der Vorlesungsfolien). Warum ist dies notwendig, selbst wenn eine (wie auch immer geartete) L¨osung des wechselseitigen Ausschlusses mit Sperrvariablen zur Verf¨ugung steht?

Tipp: ¨uberlegen Sie sich ein Szenario, das beim Eintreffen eines Interrupts fehlschl¨agt.

Aufgabe 4: Synchronisation mit Semaphoren

Geben Sie eine L¨osung in einer Pseudo-Programmiersprache f¨ur folgendes Problem an: Mehrere Studenten, die ihre Bachelor-Arbeit schreiben m¨ochten, ben¨otigen daf¨ur jeweils drei B¨ucher. Leider stehen in der Bibliothek nur 3 Exemplare von Buch 1 und je 2 Exemplare von Buch 2 und Buch 3 zur Verf¨ugung.

a) Geben Sie an, welche Semaphore wof¨ur ben¨otigt werden und womit sie initialisiert werden.

b) Erl¨autern Sie die Vorgehensweise eines Studentenprozesses.

1

(2)

Aufgabe 5: Streng abwechselnde Synchronisation

Gegeben sind die beiden folgenden Threads:

Thread 0: Thread 1:

while (true) {

print(”1”);

}

while (true) {

print(”2”);

}

Diese beiden Threads sollen mit Hilfe von Semaphorenso synchronisiert werden, dass ihre Ausgaben immer streng abwechselnd erfolgen. Die Ausgabe sollte also1 2 1 2 1 2... sein.

a) Geben Sie eine L¨osung f¨ur diese Synchronisation an!

b) DasJava-Programm, das Sie auf der Vorlesungs-Webseite1finden, erlaubt Ihnen unter anderem, eine falsche L¨osung f¨ur das Problem zu simulieren. Starten Sie das Programm dazu mit

java -cp Demo.jar Demo Abwechselnd wrong=1

Erzeugen Sie zun¨achst einen Ablauf, der die richtige Ausgabe produziert. Versuchen Sie dann, einen Ablauf zu erzeugen, bei dem eine unzul¨assige Ausgabe entsteht. Welche m¨oglichen Ausgaben erzeugt dieses Programm?

Aufgabe 6: Synchronisation mit Semaphoren

Versetzen wir uns f¨ur diese Aufgabe in den Alltag einer Familie mit drei Kindern, die im Winter draußen spielen wollen.

Damit sie sich nicht erk¨alten, braucht jedes Kind eine M¨utze, ein Paar Handschuhe und einen Schal, um draußen spielen zu k¨onnen.

Leider ist ihre Oma mit dem Stricken noch nicht soweit, so dass jedes Kind im Moment erst eines dieser drei Klei- dungsst¨ucke besitzt und zwar jedes Kind ein anderes.

Außerdem haben die Kinder im Kleiderschrank noch eine alte M¨utze, ein altes Paar Handschuhe und einen großen Schal gefunden. Wenn nun ein Kind nach draußen will, braucht es noch zwei von den Sachen aus dem Schrank:

• entweder Schal und M¨utze,

• oder M¨utze und Handschuhe,

• oder Handschuhe und Schal.

a) Geben Sie eine L¨osung dieses Problems in einer Pseudo-Programmiersprache unter Verwendung von Semaphoren an. Achten Sie darauf, dass drei verschiedene Prozesse implementiert werden sollen, je ein Prozess f¨ur jedes Kind.

b) Uberlegen Sie, ob sich das von Ihnen angegebene Prozesssystem verklemmen kann.¨

1https://www.bs.informatik.uni-siegen.de/lehre/material/bs1/demos/Demo.jar

2

Referenzen

ÄHNLICHE DOKUMENTE

Der Block kann nur dann von einem Thread t ausgef¨ uhrt werden, wenn t die Sperre von obj erhalten hat. Hierbei ist void op() {synchronized

Es gibt mehrere M¨oglichkeiten, diese Frage zu beantworten.. Letzerer wird

Wenn i > j, dann gilt J [a − b] K = ∅, wof¨ ur wir leider keinen regul¨ aren Ausdruck haben. Diesen Fall m¨ ussen wir

1) Safety (zu jedem Zeit- punkt höchstens einer), 2) Fairness (jeder Request Wieso sind garantiert:.. 1) Safety (zu jedem Zeit- punkt höchstens einer), 2) Fairness

Mehr dazu (und weitere Verfahren) siehe: Luk, Wong, "Two New Quorum Based Algorithms for Distributed Mutual Exclusion",

[r]

[r]