Institut für Verteilte Systeme Prof. Dr. Peter Schulthess Steffen Gerhold Patrick Schmidt 4. Übung zur Vorlesung Betriebssysteme 08.07.2010 Aufgabe 1: Java-Threads Gegeben folgendes Programm in Java: public class Threading extends Thread { public static void main(String args[]) { new Threading('a').start(); new Threading('b').start(); System.out.println("finished"); } private int count=10; private char myChar; public Threading(char c) { myChar=c; } public void run() { while (count-->0) { System.out.print(myChar); Thread.yield(); } } } a) Gibt es in diesem Programm kritische Abschnitte? Begründen Sie Ihre Antwort! b) Bei mehrfacher Ausführung des Programms bekommen Sie folgende Ausgaben: baaaaaabbbbbbaaaabbbfinished aaaaaaaaaabbbbbbbbbbfinished afinished baaaaaaaaabbbbbbbbb Erklären Sie dieses Verhalten! Aufgabe 2: Dispatcher, Scheduler a) Erklären Sie den Unterschied zwischen Dispatcher und Scheduler. b) Erklären Sie Schritt für Schritt wie typischerweise ein Prozesswechsel zustande kommt und was dabei von dem Betriebssystem gemacht wird. c) Nennen und beschreiben Sie zwei Probleme, die bei prioritätsbasiertem Scheduling auftreten können. Wie können diese Probleme jeweils behoben werden? d) Tragen Sie die Prozesszustände dreier Prozesse A, B und C in ein Zeitdiagramm ein. Zeichnen Sie einen Balken auf die entsprechende Achse für die Zeit, in der sich der Prozess im jeweiligen Zustand befindet. Die Prozesse haben folgendes Ablaufverhalten: Prozess A startet zum Zeitpunkt tA = 0s. Er benötigt zunächst 1s CPU-Zeit, blockiert sich dann für 1,5s und terminiert nach weiteren 1,5s CPU-Zeit. Prozess B startet zum Zeitpunkt tB = 0,5s. Nach 1,5s CPU-Zeit tätigt der Prozess eine Ausgabeoperation, bei der er für 0,5s blockiert wird. Danach benötigt der Prozess noch 0,5s Rechenzeit bis zur Terminierung. Prozess C startet zum Zeitpunkt tC = 1s und benötigt 2s CPU-Zeit bis er sich ohne Ein-/Ausgabe-operationen beendet. Für das erste Diagramm Zeitscheibenlänge von 1s an: A nehmen Sie eine Round-Robin-Strategie mit einer laufend bereit blockiert B laufend bereit blockiert C laufend bereit blockiert 0 0,5 1 2 3 4 5 6 Für das zweite Diagramm gehen Sie von einer verdrängenden Shortest-Job-First-Strategie (PSJF) aus: A laufend bereit blockiert B laufend bereit blockiert C laufend bereit blockiert 0 0,5 1 2 3 4 5 6 Aufgabe 3: Synchronisierung a) Beschreiben Sie ein möglichst einfaches Szenario, bei dem fehlende Synchronisierung zu Inkonsistenzen führen kann. b) Nennen und beschreiben Sie drei Synchronisierungsmechanismen. c) Beschreiben Sie, wie die Anwendung eines von Ihnen beschriebenen Synchronisierungsmechanismus die Inkonsistenzen in Ihrem Szenario verhindert. d) Angenommen, Ihr System hat nur sehr kurze kritische Abschnitte, so dass sich InterruptSperren für einen Wechselseitigen Ausschluss eignen. Worauf müssen Sie bei der Anwendung der Interrupt-Sperre achten, damit der wechselseitige Ausschluss auch bei verschachtelten Sperren weiterhin gegeben ist?