Issuu on Google+

Betriebssysteme Übungsblatt 6

Aufgabe 15: a) i) Die Ausgabe der Process ID gibt jeweils die gleiche ID aus....weil es nur einen Prozess gibt?:-) ii) Bei dem Programm aus Blatt 4 kopiert der Prozess sich selbst und jede Kopie durchläuft den kompletten verbleibenden Programmcode. Hier aber spaltet sich nicht der Prozess, sondern es werden 2 Threads gestartet die jeweils print ausführen, plus das eine mal print im Hauptthread macht: 3. iii) Das erste mal wird print im Hauptprogramm aufgerufen, und da in der Funktion printer() die sleeps auskommentiert sind läuft die Funktion schneller durch als der nexte Thread erzeugt werden kann (durch den eine andere Ausgabe auftreten könnte). Zwischen den 2 Threads die erstellt werden sichert ein sleep dass die Folge 1-2-3 eingehalten wird. b) i) Die Ausgabe ändert sich nicht, das Erstellen eines neuen Threads dauert demnach länger als das ausführen der printer() Funktion ii) Nachdem sich jetzt vor dem Hochzählen der Variable 'cnt' ein sleep befindet braucht die Funktion print() länger zum ausführen als das Betriebssystem zum Erstellen eines neuen Threads, und der 3te Thread des Programms greift auf die Variable 'cnt' zu bevor diese durch den 2ten Thread erhöht wurde. iii) Hier wartet print() erst nach dem Hochzählen von 'cnt'. Dadurch hat 'cnt' bereits den neuen Wert wenn der 3te Thread darauf zugreift, anders als in ii. Aufgabe 16: a) FIFO: Auftrag

P1

P2

P3

P4

P5

P6

P7

P8

Verweilzeit

6

7

9

9

7

12

7

7

Wartezeit

0

4

7

8

4

5

4

5


SJF: Auftrag

P1

P2

P3

P4

P5

P6

P7

P8

Verweilzeit

6

13

6

3

3

12

9

4

Wartezeit

0

9

4

2

0

5

6

2

b) FIFO: (0+4+7+8+4+5+4+5) / 8 = 4,625 SJF: (0+9+4+2+0+5+6+2) / 8 = 3,5 Begr端ndung: Aus dem Skript: "SJF ist optimal bei nicht-preemptiven Scheduling-Algorithmen bzgl. der mittleren Verweildauer."

Die Verweildauer h辰ngt ab von: Bedienzeit(f端r FIFO und SJF nat端rlich gleich) und Wartezeit. --> Die Wartezeit ist bei SJF optimal, im Gegensatz zu FIFO. c)


sdfsdfsd