21.01.2015 Aufrufe

¨Ubungen zu ” Modellierung verteilter Systeme“

¨Ubungen zu ” Modellierung verteilter Systeme“

¨Ubungen zu ” Modellierung verteilter Systeme“

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Aufgabe 3 Programmieraufgabe: Synchronisation von Prozessen<br />

• Bäckerei-Problem<br />

Beim Betreten des Geschäfts erhält jeder Kunde eine Wartenummer. Der Kunde mit der kleinsten<br />

Nummer wird als nächster bedient. Da es keine Garantie gibt, dass zwei Kunden nicht die gleiche<br />

Wartenummer kriegen, wird im Falle zwei gleicher Nummern der Prozess (Kunde) mit dem<br />

kleinsten Namen als erster bedient. Das bedeutet, wenn P i und P j die gleiche Nummer erhalten<br />

und i < j, dann wird der Prozess P i als erstes bedient.<br />

– Schreiben Sie ein Programm in Pseudo-Code für das Backery-Problem.<br />

Hinweis: Da die Prozessnamen einzigartig und total geordnet sind, ist der Algorithmus<br />

komplett deterministisch.<br />

– Schreiben Sie ein Programm für das Backery-Problem, indem Sie binäre Semaphoren benutzen.<br />

– Optional: Schreiben Sie ein Programm in Java, dass den gleichen Sachverhalt umsetzt und<br />

vergleichen Sie die 2 Programme.<br />

• Das Philosophen-Problem<br />

Fünf Philosophen sitzen gemeinsam an einem runden Tisch, an dem sie unabhängig voneinander<br />

von Zeit <strong>zu</strong> Zeit essen. Jeder Philosoph hat rechts neben seinem Teller nur eine Gabel, benötigt<br />

aber <strong>zu</strong>m Essen zwei Gabeln, also auch die seines linken Nachbarn. Aus diesem Grund können nicht<br />

alle Philosophen gleichzeitig essen, sondern sie müssen sich bezüglich ihrer kritischen Abschnitte<br />

Essen synchronisieren.<br />

– Geben Sie eine Programmlösung unter Verwendung der P- und V-Operationen an, bei der es<br />

<strong>zu</strong> keinerlei Verklemmungen kommen kann.<br />

Hinweis:<br />

∗ Die Philosophen sollen als Prozesse modelliert werden<br />

∗ Jeder Philosoph kann sich in einem der folgende drei Zustände befinden (denkend, hungrig<br />

und essend)

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!