Sie sind auf Seite 1von 2

Ausgabedatum: 30.05.

2023

Übungsblatt 8: Prozesse und Synchronisation


Verteilte Systeme und Systemsicherheit · SoSe 2023
Abgabe spätestens bis 06.06.2023 10:00
Peer-Review spätestens bis 11.06.2023 23:59
Besprechung am 06., 07. und 08.06.2023

Vorbemerkung: Das Übungsblatt dient der Vertiefung und Anwendung des Stoffes im Kurs Verteilte Syste-
me und Systemsicherheit. Wir erwarten, dass Sie die Aufgaben eigenständig bearbeiten. Im Übungsbetrieb
werden die Aufgaben, deren Lösungen sowie die zugrundeliegenden Inhalte besprochen. Die Übungster-
mine für dieses Blatt finden am 06., 07. und 08.06.2023 statt. Der Inhalt aller Aufgaben ist klausurrelevant.
Der Besuch der Vorlesung ist für das Verständnis der Inhalte und die erfolgreiche Teilnahme an der Klausur
essenziell. Die Termine finden Sie im Moodle-Kurs Verteilte Systeme und Systemsicherheit.
Die Abgabe für dieses Blatt erfolgt unter: https://svs.informatik.uni-hamburg.de/abgabe/vss-ss23/8/. Einrei-
chungen können bis zur Abgabefrist beliebig oft aktualisiert werden.

Aufgabe 1 Programme und Prozesse


Wie lassen sich die Begriffe „Programm“ und „Prozess“ jeweils definieren? Worin bestehen die Unterschiede?

Aufgabe 2 Prozesse und Threads


Bei der Ausführung von Programmen kann neben der Verwendung von Prozessen auch auf Threads zurück-
gegriffen werden.

a) Worin unterscheiden sich Threads von Prozessen?


b) Welche möglichen Vor- und Nachteile bietet die Verwendung von mehreren Threads im Gegensatz zur
Verwendung von separaten Prozessen?

Aufgabe 3 Strategien zur Deadlockvermeidung


Zur Vermeidung von Deadlocks können u. a. die Strategien wound-wait und wait-die eingesetzt werden.

a) Worin unterscheiden sich die beiden Strategien?


b) Die folgenden Threads T1 und T2 sollen pseudoparallel ausgeführt werden. Beide greifen auf die Res-
sourcen A und B zu.
T1 : read(A), write(B).
T2 : read(B), write(B), read(A).
Betrachten Sie die folgende Ausführungsreihenfolge:

T1 T2
BOT
lockS(A)
read(A)
BOT
lockX(B)
read(B)
* lockX(B) *
..
.

Zur Deadlockvermeidung soll die Strategie wound-wait eingesetzt werden. Beschreiben Sie, welche
Aktion demnach an der mit * gekennzeichneten Stelle zu ergreifen ist.

1
Aufgabe 4 Parallelität in verteilten Systemen
Betrachten Sie das folgende Codebeispiel:
1 funktionA () {
2 solange nicht Lock1 : fordere Lock1 an , warte 100 ms
3 solange nicht Lock2 : fordere Lock2 an , warte 100 ms
4
5 schreibe file (" Ausgabe aus Thread " + ThreadID )
6 unlock Lock1
7 unlock Lock2
8 }
9
10 funktionB () {
11 solange nicht Lock2 : fordere Lock2 an , warte 100 ms
12 solange nicht Lock1 : fordere Lock1 an , warte 100 ms
13
14 schreibe file (" Hallo aus Thread " + ThreadID )
15 unlock Lock2
16 unlock Lock1
17 }
18
19 MAIN () {
20 for ( i = 0; i <= 10; i ++) {
21 erzeuge Thread t
22 if ( i ist gerade ) {
23 starte t mit funktionA ()
24 } else {
25 starte t mit funktionB ()
26 }
27 }
28 }

a) Welche den Programmfluss störende Situation kann hier durch eine Bearbeitung mit mehreren gleich-
zeitigen Threads auftreten?
b) Stellen Sie den Code so um, dass diese Situation nicht mehr auftreten kann. Geben Sie dazu an, welche
Zeilen Sie wohin verschieben würden.

Das könnte Ihnen auch gefallen