Prof. Dr. rer. nat. Roland Wism ¨uller
Aufgabenblatt 11 Musterl¨osung
Vorlesung Betriebssysteme I Wintersemester 2021/22
Aufgabe 1: Deadlock-Prevention
Um die Deadlock-Prevention f¨ursynchronized-Methoden in einem Java-Programm umzusetzen, m¨ussen wir eine Reihenfolge der Java-Objekte definieren, also(o1, o2, ..., on)(Dabei m¨ussen nur Objekte ber¨ucksichtigt werden, die synchronized-Methoden haben). Nun m¨ussen wir fordern, daß bei der Ausf¨uhrung einer Methodeoi.ma() nur Me- thodenoj.mb() mitj > iaufgerufen werden d¨urfen.
Da JavaReentrant Locksverwendet, sind tats¨achlich auch Methodenaufrufe auf Objektenok erlaubt, f¨ur die schon ein Aufruf im Aufrufkeller aktiv ist. Wenn also z.B.o1.ma() die Methodeo3.mb() aufruft, darf diese aucho1.mc() aufrufen (dao1ja schon / noch durch den Thread gesperrt ist), nicht abero2.md().
Diese Bedingung durch Einschr¨ankungen in der Struktur des Java-Codes zu erzwingen, ist nicht unbedingt einfach. In der Regel m¨usste man st¨arkere Bedingungen fordern, z.B.:
• Es gibt eine hierarchische (also baumartige) Beziehung zwischen den Klassen, so daß eine Klasse auf Ebenexnur Methoden von Klassen auf Ebeney > xaufrufen darf.
• Zus¨atzlich d¨urfen Methoden einer Klasse Methoden derselben Klasse nur auf dem this-Objekt aufrufen, aber nicht auf anderen Objekten.
Mit der ersten Bedingung vermeidet man Zyklen zwischen Objekten verschiedener Klassen, mit der zweiten Bedingung Zyklen zwischen Objekten derselben Klasse. In der Praxis wird es aber viele F¨alle geben, in denen man diese Bedingungen nicht allgemein erf¨ullen kann (oder will).
Aufgabe 2: Deadlocks
Ja, Deadlocks sind m¨oglich. Angenommen, alle Mailboxen sind leer. Jetzt sendet A an B und wartet auf eine Antwort, B sendet an C und wartet auf eine Antwort, und C sendet an A und wartet auf eine Antwort. Damit sind die Voraussetzungen f¨ur einen (Kommunikations-)Deadlock erf¨ullt.
Aufgabe 3: Schedulingalgorithmen
a) FCFS (First Come First Serve), nicht-pr¨aemptiv
0 A
8
B
36
C
48 D
51 E
55 Thread Ankunftszeit Bedienzeit Priorit¨at Wartezeit Durchlaufzeit
A 0 8 8-0-8 = 0 8-0 = 8
B 3 28 36-3-28 = 5 36-3 = 33
C 7 12 48-7-12 = 29 48-7 = 41
D 9 3 51-9-3 = 39 51-9 = 42
E 15 4 55-15-4 = 36 55-15 = 40
Mittelwerte: 109/5 = 21,8 164/5 = 32,8
1
b) HPF (Highest Priority First), nicht-pr¨aemptiv
0 A
8
C
20
B
48 D
51 E
55 Thread Ankunftszeit Bedienzeit Priorit¨at Wartezeit Durchlaufzeit
A 0 8 4 8-0-8 = 0 8-0 = 8
B 3 28 1 48-3-28 = 17 48-3 = 45
C 7 12 0 20-7-12 = 1 20-7 = 13
D 9 3 2 51-9-3 = 39 51-9 = 42
E 15 4 3 55-15-4 = 36 55-15 = 40
Mittelwerte: 93/5 = 18,6 148/5 = 29,6
c) SJF (Shortest Job First), nicht-pr¨aemptiv
0 A
8
C
20 D
23 E
27
B
55 Thread Ankunftszeit Bedienzeit Priorit¨at Wartezeit Durchlaufzeit
A 0 8 8-0-8 = 0 8-0 = 8
B 3 28 55-3-28 = 24 55-3 = 52
C 7 12 20-7-12 = 1 20-7 = 13
D 9 3 23-9-3 = 11 23-9 = 14
E 15 4 27-15-4 = 8 27-15 = 12
Mittelwerte: 44/5 = 8,8 99/5 = 19,8
d) RR (Round Robin), Zeitscheibenl¨ange 5, pr¨aemptiv
0 A
5 B
10 A
13 C
18 D
21 B
26 E
30 C
35 B
40 C 42
B 47
B 52
B 55 Inhalt der Bereit-Warteschlangen (n¨achster auszuw¨ahlender Thread steht links):
• Zeitpunkt 10: A, C, D, B
• Zeitpunkt 18: D, B, E, C
Die Warteschlangen sind immer f¨ur den Zeitpunkt angegeben, in dem der Scheduler aktiv ist, d.h. der bisher rech- nende Thread unterbrochen und hinten in die Warteschlange eingereiht, der erste Thread in der Warteschlange aber noch nicht rechnend gesetzt wurde.
Beachten Sie, daß RR nicht bedeutet, daß die Threads in der Reihenfolge A,B,C,D,E,A, ... rechnen!
Thread Ankunftszeit Bedienzeit Priorit¨at Wartezeit Durchlaufzeit
A 0 8 13-0-8 = 5 13-0 = 13
B 3 28 55-3-28 = 24 55-3 = 52
C 7 12 42-7-12 = 23 42-7 = 35
D 9 3 21-9-3 = 9 21-9 = 12
E 15 4 30-15-4 = 11 30-15 = 15
Mittelwerte: 72/5 = 14,4 127/5 = 25,4
e) HPF (Highest Priority First), pr¨aemptiv
0 A
3 B
7
C
19
B
43 D
46 E
50 A
55 Thread Ankunftszeit Bedienzeit Priorit¨at Wartezeit Durchlaufzeit
A 0 8 4 55-0-8 = 47 55-0 = 55
B 3 28 1 43-3-28 = 12 43-3 = 40
C 7 12 0 19-7-12 = 0 19-7 = 12
D 9 3 2 46-9-3 = 34 46-9 = 37
E 15 4 3 50-15-4 = 31 50-15 = 35
Mittelwerte: 124/5 = 24,8 179/5 = 35,8
2
f) Shortest Remaining Time First
0 A
8 C
9 D
12 C
15 E
19 C
27
B
55 Thread Ankunftszeit Bedienzeit Priorit¨at Wartezeit Durchlaufzeit
A 0 8 8-8-0 = 0 8-0 = 8
B 3 28 55-3-28 = 24 55-3 = 52
C 7 12 27-7-12 = 8 27-7 = 20
D 9 3 12-9-3 = 0 12-9 = 3
E 15 4 19-15-4 = 0 19-15 = 4
Mittelwerte: 32/5 = 6,4 87/5 = 17,4
Aufgabe 4: Scheduling
a) Richtig sind:
• nicht-pr¨aemptives SJF (Shortest Job First)
• pr¨aemptives SJF (Shortest Job First)
b) B
Prio. 0:
Prio. 1:
Prio. 0:
Prio. 1:
0 3 10 15
A C D
20
5 7 Zeit
A
A C
D B B A
A
D A C Wartezeit: 12 Durchlaufzeit: 20
3