• Keine Ergebnisse gefunden

Aufgabe 3: Synchronisation mit Monitor

N/A
N/A
Protected

Academic year: 2022

Aktie "Aufgabe 3: Synchronisation mit Monitor"

Copied!
3
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

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

Aufgabenblatt 8

(Besprechung am 09.12.2021)

Vorlesung Betriebssysteme I Wintersemester 2021/22

Aufgabe 1: Leser-Schreiber Synchronisation

In einer fr¨uheren Aufgabe haben Sie eine L¨osung f¨ur das Leser/Schreiber (Reader/Writer) Problem (siehe Vorlesung Kapitel 3.1.5) unter Verwendung vonMonitorenin einer Pseudo-Programmiersprache angegeben.

Modifizieren Sie diese L¨osung so, dass von allen Lesern nur maximal 3 gleichzeitig auf die Daten zugreifen d¨urfen.

Aufgabe 2: Toiletten-Synchronisation mit Monitoren

Eine Universit¨at in den USA will aus Gr¨unden der politischen Korrektheit eine Doktrin des U.S. Supreme Courts

”‘Ge- trennt aber gleich’ bedeutet Ungleichheit“ (Separate but equal is inherently unequal) nicht nur auf die Rasse, sondern auch auf das Geschlecht anwenden und die lange w¨ahrende Praxis der nach Geschlechtern getrennten Toiletten beenden.

Es gibt jedoch ein Zugest¨andnis an die Tradition: Wenn (mindestens) eine Frau auf der Toilette ist, darf nur eine andere Frau und kein Mann eintreten und umgekehrt.

Realisieren Sie einenMonitorin Pseudo-Code, der zur L¨osung dieses Synchronisationsproblems die folgenden Prozedu- ren zur Verf¨ugung stellt:

• Frau_moechte_eintreten

• Frau_verlaesst_die_Toilette

• Mann_moechte_eintreten

• Mann_verlaesst_die_Toilette

Aufgabe 3: Synchronisation mit Monitor

Der nachfolgende Pseude-Code zeigt einen Monitor, der eine Sicherheitsmaßnahme f¨ur Linienbusse realisiert: Der Bus darf die T¨ure erst ¨offnen, nachdem die die Haltestellenbremse bet¨atigt wurde. Erg¨anzen Sie den Monitor um die notwen- dige Synchronisation, die sicherstellt, daß die ProzedurTuerAufsolange wartet, bisHaltestellenbremseAnausgef¨uhrt ist.

Bus

HaltestellenbremseAn

TuerAuf

end;

end monitor;

...

begin

condVar; procedure

boolean monitor

condition

begin procedure

// Türe öffnen end;

// Bremse anziehen bremseAn = false;

Anmerkung: dies ist eine Aufgabe im Klausurstil.

1

(2)

Aufgabe 4: Erzeuger-Verbraucher Synchronisation

In dieser Aufgabe soll das Erzeuger-Verbraucher Problem (siehe Vorlesung Kapitel 3.1.5 und 3.1.7) n¨aher betrachtet werden. In dem gegebenen Code ist der beschr¨ankte Puffer durch ein Array (Ringpuffer) realisiert. Von Interesse sind die Aspekte der Synchronisation: der Erzeuger bzw. der Verbraucher m¨ussen blockiert werden, wenn der Puffer voll bzw. leer ist, und die Zugriffe auf den Puffer m¨ussen unter wechselseitigem Ausschluss ausgef¨uhrt werden.

Laden Sie den Beispiel-Code f¨ur dasErzeuger/Verbraucher-Problem in Javavon der Webseite herunter (unter

”Materiali- en“).

Entpacken Sie das Archiv. Die drei Implementierungen (reines Java; mit Semaphoren; mit Mutex und Bedingungsva- riablen) werden in drei Verzeichnisse (Java, Semaphore und MutexCondition) entpackt. Das Archiv enth¨alt auch das SynchronisationspaketBSsync.jar, das f¨ur die ¨Ubersetzung und Ausf¨uhrung ben¨otigt wird (siehe Kommentar im Co- de).

F¨ur zus¨atzliche Informationen siehe Vorlesung Kapitel 3.1.4 bis 3.1.7.

a) Ubersetzen Sie jede Implementierung und f¨uhren Sie das Programm aus. Die Ausgabe des Programms ist erweitert¨ durch dieLock-Klassen-Variableverbose. Analysieren Sie die Ausgabe und beobachten Sie, wie die Threads sich synchronisieren.

b) Uberlegen Sie, ob die L¨osungen frei von Deadlocks sind. Begr¨unden Sie Ihre Antwort. Erzeugen Sie noch zwei¨ Threads (ein Erzeuger und ein Verbraucher) und f¨uhren Sie die Programme erneut aus. Beschreiben Sie Ihre Beob- achtungen.

Hinweis: Verwenden Sie die Seiten der Dokumentation f¨ur das SynchronisationspaketBSsync, die Sie ¨uber die Vorlesungs-Webseite (unter

”Materialien“) erreichen.

Aufgabe 5: Synchronisation: Implementierung eines Semaphors

Implementieren Sie eine Java KlasseMySemaphore, die ein (z¨ahlendes) Semaphor mit Hilfe des Synchronisationspakets BSsync.jar(LockundCondition) realisiert. Die Klasse soll folgenden Aufbau haben:

public class MySemaphore {

// Erzeugt neues Semaphor mit initialem Wert

public MySemaphore(int initVal) { ... }

// P−Operation

public void acquire() { ... }

// V−Operation

public void release() { ... } }

Testen Sie Ihre L¨osung, indem Sie z.B. zwei Threads so synchronisieren, daß Sie eine streng abwechselnde Ausgabe machen (siehe vorhergehendes ¨Ubungsblatt).

Aufgabe 6: Rendezvous-Problem

Die Fachgruppe BSVS hat sich zu einem gemeinsamen Mensabesuch verabredet. Als Treffpunkt wurde der Geb¨audekern auf Ebene 8 am H¨olderlin-Campus benannt. Erst wennalleMitglieder der Fachgruppe dort eingetroffen sind, geht die Gruppe gemeinsam in Richtung Mensa.

Sehen Sie sich die DateiRendezvous.javaan. Erweitern Sie die Methoderendezvous(), sodass sie das oben be- schriebene Verfahren implementiert, also alle Threads in der Methode blockieren, bis diese von allen Threads aufgerufen wurde. Achten Sie darauf, dass das System nicht verklemmt und benutzen Sie das PaketBSsyncvon der Webseite.

Sie k¨onnen davon ausgehen, dass ein Thread die Methoderendezvous()nicht mehr betritt, nachdem er sie verlassen hat.

2

(3)

Aufgabe 7: Toiletten-Synchronisation in Java (f ¨ ur Motivierte)

In einer fr¨uheren Aufgabe haben Sie das Problem der Synchronisation f¨ur den Zugang zu Toiletten realisiert, die von Frauen und M¨annern gleichermaßen benutzt werden k¨onnen. Schreiben Sie ein Java-Programm, das diese L¨osung imple- mentiert.

Testen Sie Ihre L¨osung mit unterschiedlichen Anzahlen von

”Frau“ und

”Mann“ Threads. Sie k¨onnen (und sollen!) Ihre L¨osung in der ¨Ubung pr¨asentieren.

3

Referenzen

ÄHNLICHE DOKUMENTE

Musterlösung Juli-Vollklausur Verständnisteil SS 2005 Analysis I für Ingenieure. Aufgabe

[r]

[r]

[r]

[r]

Denn der gute Arzt bildet nur dann ein Gegenbeispiel gegen Nikias’ Defintion, wenn er unter das Definiens f¨ allt (weiß, was man f¨ urchten muß), nicht aber unter das Definiendum

Diesen Einwand kann man aber wie folgt zur¨ uckweisen: Wenn die Philosophen nicht nur wegen der Erkenntnis philosophieren, sondern auch wegen des Nutzens N, dann kann man nicht

Nach Aristoteles ist es aber auch m¨ oglich, statt desjenigen Stoffes, der zuerst bestand, den zeitlich sp¨ atesten als Urstoff zu bezeichnen (das ist allerdings nicht vertr¨