12.07.2015 Aufrufe

Technische Informatik II

Technische Informatik II

Technische Informatik II

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.

Institut für<strong>Technische</strong> <strong>Informatik</strong> undKommunikationsnetze<strong>Technische</strong> <strong>Informatik</strong> <strong>II</strong>Übung 1: Prozesse und ThreadsAufgabe 1:Prozesse und Threadsa) Wie verhält sich eine Applikation die aus mehreren Prozessen bzw. aus mehreren Userspace-Threads besteht bei einem blockierenden Diskzugriff?Lösung: Bei einem blockierenden Diskzugriff wird der ganze Prozess angehalten und somit auchalle seine Threads. Anders als die Applikation mit mehreren Prozessen, wird die multithreadedApplikation also blockieren.b) Welche der folgenden Ressourcen werden von allen Threads eines Prozesses geteilt und welchebestehen pro Thread? Program-Counter, Heap-Speicher, globale Variablen, Stack, CPU-Register,geöffnete Dateien, Accounting- und Benutzer-Informationen.Lösung: Pro Thread: Program-Counter, Stack und CPU-Register.Aufgabe 2:Schedulinga) Was versteht man unter Langzeit-Scheduling (Job-Scheduling), was unter Kurzzeit-Scheduling(CPU-Scheduling)?Lösung: Der CPU-Scheduler wählt den als nächstes auszuführenden Prozess aus der Ready-Queueaus, der Job-Scheduler bestimmt welche Prozesse in den Speicher geladen und welche ausgelagertwerden. Desweiteren wird Der CPU-Scheduler aktiv, wann immer ein anderer Prozess zum Zugkommen soll, der Job-Scheduler hingegen wird nur ausgeführt wenn ein Prozess terminiert oderzu wenig Speicher zur Verfügung steht.b) Warum ist es für den Scheduler sinnvoll zwischen I/O-bound und CPU-bound Prozessen zu unterscheiden?Lösung: I/O-bound Programme sind die meiste Zeit mit der Ein- und Ausgabe von Daten beschäftigt.Sie brauchen ihre Zeitscheibe meist nicht auf sondern blockieren vor deren Ablauf undbelasten die CPU kaum. CPU-bound Programme andererseits belasten die CPU sehr stark undbeanspruchen ihre Zeitscheibe meist komplett.c) Was sind die Vor- und Nachteile von preemptiv gegenüber non-preemptiv Multitasking.Lösung: Die Hauptvorteile des preemtiv Multitasking sind, dass ein einzelner Prozess das Systemnicht blockieren kann und dass die Zuordnung der Prozesszeit besser gesteuert werden kann (priorisierungeinzelner Prozesse ist möglich). Ein Nachteil ist zum Beispiel der grössere Aufwand fürdie Synchronisation der Prozesse und den Schutz von kritischen Abschnitten.


d) Gegeben seien die folgenden Prozesse die alle zur Zeit t = 0 erstellt und gestartet werden.Prozess A B C D EPriorität 2. 5. 3. 1. 4.Bedienzeit 100 10 20 10 50Berechnen Sie für die unten aufgeführten Scheduling-Algorithmen die mittlere Antwortzeit (Responsetime)RT und die Ausführungszeit (Turnaround Time) TT und stellen Sie den Ablauf grafischdar.First Come First Server (FCFS)RT = (0 + 100 + 110 + 130 + 140)/5 = 96TT = (100 + 110 + 130 + 140 + 190)/5 = 134Shortest Job First (SJF)RT = (0 + 10 + 20 + 40 + 90)/5 = 32TT = (10 + 20 + 40 + 90 + 190)/5 = 70Priority Scheduling (PS)RT = (0 + 10 + 110 + 130 + 180)/5 = 86TT = (10 + 110 + 130 + 180 + 190)/5 = 124Round Robin (RR) mit einer Zeitscheibe von 5RT = (0 + 5 + 10 + 15 + 20)/5 = 10TT = (190 + 35 + 75 + 45 + 140)/5 = 972


Aufgabe 3:Prozess Synchronisation, Deadlock und Starvationa) Erörtern Sie die Begriffe Race Condition anhand des folgenden Beispiels und markieren sie alleCritical Sections. Was für Probleme können bei der Ausführung auf mehreren Prozessen auftretenund wie können diese (z.B. mit Hilfe von Semaphoren oder Monitoren) behoben werden?global const buf_size := 10global var buf[buf_size]global var num := 0function boolean push(a)if (num < buf_size)buf[num] := anum := num + 1return trueelsereturn falseendendfunction pop()if (num > 0)num := num - 1return buf[num]elsereturn nullendendLösung:Critical Section Abschnitt eines Programms in dem eine beliebige Unterbrechung zu ungewolltenEffekten führen kann. Im obigen Beispiel sind dies die beiden Funktionen push() undpop().Race Condition Konstellationen in denen das Ergebnis einer Operation vom zeitlichen Verhaltenbestimmter Einzeloperationen abhängt. Im obigen Beispiel kann es z.B. sein, dass zweiProzesse scheinbar gleichzeitig etwas auf den Stack legen, aber nur der zuletzt geschriebeneWert erhalten bleibt.Prozess Abuf[num] := anum := num + 1Prozess Bbuf[num] := anum := num + 1b) Beschreiben Sie mit Hilfe von Pseudocode die atomaren Operationen TestAndSet, Swap und FetchAndAdd.Lösung:atomar function TestAndSet(a, b, c)if (a == b)a := creturn trueelse3


eturn falseendendatomar procedure Swap(a,b)var t := aa := bb := tendatomar function FetchAndAdd(a)var t := aa := t + 1return tendc) Gegeben sei die folgende atomare Instruktion:atomar function TestAndAdd(a, b, c)if (a == b)a := a + creturn trueelsereturn falseendendZeigen Sie wie mit deren Hilfe eine binäre Semaphore implementiert werden kann.Lösung:global var s := 1procedure P()while (not TestAndAdd(s, 1, -1)) do endendprocedure V()TestAndAdd(s, 0, 1)endd) Eine einfache Lösung des Dining-Philosophers-Problem besteht darin, dass einer der Philosophendie Gabeln in der umgekehrten Reihenfolge aufnimmt als alle anderen. Zeigen Sie, dass dieseLösung deadlockfrei ist, in dem Sie angeben welche Deadlock-Voraussetzung(en) nicht erfülltist/sind. Ist die Lösung auch gerecht, das heisst starvationfrei?Lösung: Die Bedingung Circular Wait ist nicht erfüllt. Die Lösung ist nicht starvationfrei; es istnicht garantiert, dass die Gabel eines Philosophen nicht dauernd von dessen Nachbarn beanspruchtwird, wenn dieser darauf zugreifen will.4


Aufgabe 4:Prozess Synchronisation, Deadlock und StarvationGegeben sei ein Programm aus drei Prozessen (P1, P2, P3), die ein Haus zeichnen sollen (siehe unten).Es kommt kooperatives Multitasking zum Einsatz. Prozesswechsel passieren nur in der down()Funktion und nur, falls der laufende Prozess warten müsste.Dazu können folgende Operationen ausgeführt werden:(A) draw(dx, dy) (B) move(x, y)Wobei draw eine Linie relativ zur aktuellen Position zeichnet und move den Zeichenkopf zur angegebenenPosition bewegt, aber nichts zeichnet. Die Ausführung einer Operation dauert eine Sekunde.Es sind folgende Operationen implementiert:(A1) draw(0, 2) (B1) move(2, 0)(A2) draw(-2, 0)(A3) draw(2, -2)(A4) draw(-2, -2)A3(A5) draw(1, 1)A1(A6) draw(1, -1)A2A4A5A6y3210 0 1 2xDas Programm ist unten abgebildet. Eine Programmzeile ist durch ihre Zeilennummer und durch dieentsprechende Operation gekennzeichnet.Init:100 (B1)101 semaphore S1=0102 start(P1, P2, P3)P1: P2: P3:200 down(S1) 300 down(S1) 400 down(S1)205 (A1) 305 (A1) 405 (A5)210 (A4) 310 (A2) 410 (A6)215 (A3) 315 up(S1) 415 (A2)220 up(S1) 420 up(S1)1. An welcher Koordinate befindet sich der Zeichenkopf 20 Sekunden nachdem das Programm gestartetwurde?Lösung:An der Koordinate (2,0)5


2. Passen Sie den Gebrauch der Semaphore im obigen Programm so an, dass ein korrektes Hausgezeichnet wird. Verwenden Sie genau drei Semaphore und vergessen Sie nicht, die Semaphore zuinitialisieren.Lösung:Init:100 (B1)101 semaphore S1=0, S2=0, S3=0P1: P2: P3:200 300 down(S1) 400 down(S3)205 (A1) 305 (A1) 405 (A5)207 307 up(S3) 407208 308 down(S1) 408210 (A4) 310 (A2) 410 (A6)212 up(S1) 312 412213 down(S2) 313 413215 (A3) 315 415 (A2)217 up(S1) 317 417 up(S2)3. Das Programm wird auf einem Rechner ausgeführt wo Priority Scheduling verwendet wird. ProzessP1 hat die höchste Priorität und P3 die kleinste (P(P1) > P(P2) > P(P3)). (Prozesswechselpassieren nach wie vor nur in der down() Funktion).i) Wie viele Semaphore werden jetzt mindestens gebraucht, damit das Programm korrekt funktioniert?Lösung:1 Semaphorii) Passen Sie den Gebrauch der Semaphore so an, dass mit der minimalen Anzahl Semaphoredeterministisch ein korrektes Haus gezeichnet wird.Lösung:Init:100 (B1)101 semaphore S1=0P1: P2: P3:200 300 400205 (A1) 305 (A1) 405 (A5)208 308 down(S1) 408210 (A4) 310 (A2) 410 (A6)212 down(S1) 312 412215 (A3) 315 415 (A2)218 up(S1) 418 up(s1)6

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!