Musterlösung Prüfung WS 01/02 Fach: I3 Software-Technik (SEE, GRS, BTS) Teilprüfung: Betriebssysteme Tag: 29.01.2002 10:45 14.45 Raum: 1006 Bearbeitungszeit: 4 Stunden Name:... Matr.Nr.:... Punkte:... Note:... Hilfsmittel: Vorlesungsskripte und Lehrbücher Betriebssysteme Hinweise: Die Aufgaben sind auf den vorgelegten Aufgabenblätter zu lösen. Die Aufgabenblätter sind vollständig abzugeben. Bitte nicht mit Bleistift schreiben! Ich habe zusätzlich zu den Aufgabenblättern... Blätter abgegeben. Unterschrift:... Aufgabe Punkte (maximale Punkte 56) 01 02 03 04 05 mui3ws0102
Aufgabe 1: Allgemeines und Vermischtes 12 = 2 + 2 + 2 + 2 + 2 + 2 Punkte a) Charakterisieren Sie bitte, möglichst mit einem Satz, die Aufgaben eines Dispatcher. Der Dispatcher schaltet die Prozesse zwischen den einzelnen Zuständen um (Prozessumschalter). b) Charakterisieren Sie bitte, möglichst mit einem Satz, die Aufgaben eines Scheduler. Der Scheduler legt die Auswahlstrategie (Ablaufplan) fest, nach der den Prozessen ein knappes Betriebsmittel (CPU) zugeordnet wird. c) Was ist, neben der modularen Zerlegung, der Grund den Dispatcher und den Scheduler in zwei Module zu legen und nicht in einen Modul zu packen? Der Dispatcher läuft auf der zugrundeliegenden Hardware. Die Auslegung des Schedulers bestimmt das Anwendungsspektrum des Rechners. Bei Änderungen der Hardwarebasis muss nur der Dispatcher geändert werden. Bei Änderung des Einsatzspektrums muss nur der Scheduler geändert werden.
d) Bitte geben sie stichpunktartig die Unterschiede zwischen einem Prozess (Task) und einem Thread an. Prozess ist ein Programm in Ausführung. Thread wird unter einem Prozess aufgefädelt. Prozess stellt die Betriebsmittel einem Thread zur Verfügung. Prozess wird innerhalb des Betriebssystem durch Hardware-PCB und Software-PCB dargestellt. Thread benötigt nur Hardware-PCB und der Software-PCB reduziert sich auf die Thread-ID, da der Prozess die Betriebsmittel verwaltet. Dadurch kann ein Thread schneller angelegt werden und die Umschaltzeiten zwischen Threads sind geringer als die Umschaltzeiten zwischen Prozessen. e) Gehen Sie von einem Einprozessorsystem aus. Erläutern Sie die Unterschiede, Vor- und Nachteile zwischen Kooperativen Multitasking und Verdrängendes (Preemptive) Multitasking? Kooperatives Multitasking: Die Task bestimmt wenn Sie den Prozessor freigibt. Preemptive Multitasking: Das Betriebssystem verdrängt, entweder nach Ablauf der Zeitscheibe bei Round Robin Scheduling oder beim Vorliegen einer höher-prioren Prozesses bei prioritätsgesteuertem Scheduling den Prozess. Nachteil kooperatives Multitasking: Ist eine Task nicht kooperativ, kann sie andere Task an der Abarbeitung hindern. Nachteil preemptive Multitasking: Beim Verdrängen muss auf einen anderen Prozess umgeschaltet werden (Kontextwechsel). Kontextwechsel ist Overhead für das Betriebssystem.
f) Was versteht man bei parallelen Prozessen (Tasks) unter einer Verklemmung (Deadlock)? unter einer Behinderung (Problem des Verhungerns)? Prozesse sind verklemmt, wenn jeder Prozess auf das Ereignis oder Aktion eines anderen Prozesses wartet und die wartenden Prozesse bilden einen Zyklus. Ein Prozess wird behindert (verhungert), wenn bei der Abarbeitung von mehreren Prozessen dieser eine Prozess keine Berücksichtigung findet.
Aufgabe 2: Swapping 9 = 3 + (2 +4) Punkte a) Was ist der Unterschied zwischen Swapping und Paging? Beim Swapping wird ein kompletter Prozesse (alle Seiten des Prozesses) auf die Platte aus- und später wieder in den Hauptspeicher eingelagert. Beim Paging werden nur die Seiten eines Prozesses vom Hauptspeicher auf die Platte ausgelagert werden und benötigt der Prozess die Seiten wieder, so werden sie von der Platte in den Hauptspeicher eingelagert. b) Diskutieren sie die Vor- und Nachteile und vergleichen Sie die Unterteilung des Swap-Bereiches (Swap-Partition) einer Platte b1) in gleich lange Stücke, b2) in variabel lange Stücke. Diskutieren Sie unter b2) hauptsächlich die verschiedenen möglichen Allokationstrategien für freie Bereiche in der Swappartition und deren Vor- und Nachteile. b1) Zur Belegungsdarstellung des Swapbereiches reicht ein Bitvektor. Interne Fragmentierung tritt auf. Beim Swap out braucht keine freier Bereich gesucht zu werden. b2) Zur Belegungsdarstellung des Swapbereiches benötigt man eine Liste mit der Länge der freien und belegten Bereiche. Externe Fragmentierung tritt auf. Beim Swap out muss ein genügend großer freier Bereich gesucht werden: Suchstrategien: First Fit: Der erste freie Bereich wird belegt. Im Laufe der Zeit müssen viele kleine Reststücke betrachtet werden. Suchaufwand steigt. Best Fit: Das beste passende Stück von der Größe her wird belegt. Minimale externe Fragmentierung. Beim Suchen muss alle freien Stücke betrachtet werden. Worst Fit: Das schlechteste passende Stück von der Größe her wird belegt. Beim Suchen müssen alle freien Stücke betrachte werden. Die freien Reststücke streben einer einheitlichen Länge zu.
Aufgabe 3: Synchronisation 20 = 4 + 4 + 4 + 4 + 4 Punkte Sie haben 100 Prozesse vorliegen, die den Lebenslauf eines PKW simulieren: task PKW is -- Fahre herum -- Fahre ins Parkhaus P5 -- Parke (sleep) -- Fahre aus dem Parkhaus end ; end PKW; Alle PKW fahren in das gleiche Parkhaus P5. Das Parkhaus P5 hat jedoch nur 50 Stellplätze, so dass nur 50 der 100 Autos im Parkhaus Platz finden. a) Schreiben Sie einen Vaterprozess der 100 Kinder (die 100 PKW-Prozesse) startet mit dem fork-systemaufruf aus Unix. Zur Erinnerung: der fork-systemaufruf gibt null an das Kind zurück und die Prozessidentifikation des Kindes (pid) an den Vater. main() { for (i= 1; i <= 100; i ++) if (fork ==0) { // Code des Sohnes // PKW-Prozess } }
b) Synchronisieren Sie bitte die 100 PKW-Prozesse mit Semaphoren. Zur Erinnerung: Sie haben 100 Pkws aber nur 50 Pkw fasst das Parkhaus. task PKW is -- Fahre herum -- Setze die Semaphoroperation ein! P(Sema); -- Fahre ins Parkhaus P5 -- Parke (sleep) -- Fahre aus dem Parkhaus -- Setze die Semaphoroperation ein! V(Sema); end ; end PKW; -- Initialisieren Sie bitte den Semaphor! S_Init (Sema, 50); c) Synchronisieren Sie bitte die 100 PKW-Prozesse mit bedingten kritischen Regionen. task PKW is -- Fahre herum region Parkhaus when Counter < 50 do Counter++; end region; -- Fahre ins Parkhaus P5 -- Parke (sleep) -- Fahre aus dem Parkhaus region Parkhaus do Counter --; end region; end ; end PKW; Counter := 0; //Initialisierung
d) Synchronisieren Sie bitte die 100 PKW-Prozesse mit einem Monitor Parkhaus und den Monitorprozeduren Einfahren und Ausfahren. task PKW is -- Fahre herum Parkhaus.Einfahren; -- Fahre ins Parkhaus P5 -- Parke (sleep) -- Fahre aus dem Parkhaus Parkhaus.Ausfahren; end ; end PKW; monitor Parkhaus is -- Deklarieren Sie bitte hier ihre globale Variable und Bedingungsvariable! Counter : Integer; Frei: Condition; procedure Einfahren is -- Schreiben Sie hier bitte den Code der Monitorprozedur Einfahren hin! if Counter > 50 then wait (Frei); end if; Counter++; end Einfahren; procedure Ausfahren is -- Schreiben Sie hier bitte den Code der Monitorprozedur Ausfahren hin! Counter --; signal (Frei); end Ausfahren; -- Initialisierung Counter := 0; end Parkhaus;
e) Synchronisieren Sie bitte die 100 PKW-Prozesse mit einem Serverprozess Parkhaus und dem selektiven Ada-Rendezvous. task PKW is -- Fahre herum Parkhaus.Einfahren; -- entry call -- Fahre ins Parkhaus P5 -- Parke (sleep) -- Fahre aus dem Parkhaus Parkhaus.Ausfahren; -- entry call end ; end PKW; task body Parkhaus is -- Serverprozess mit den Entries Einfahren und Ausfahren. counter Integer := 0; -- Schreiben Sie hier bitte das selektive Ada-Rendezvous hin! select when counter < 50 accept Einfahren do counter := counter +1; end accept; or accept Ausfahren do counter := counter - 1; end accept; end select; end ; end Parkhaus;
Aufgabe 4: Virtuelle Speicherverwaltung 8 Punkte Zeigen Sie, wie eine virtuelle Adresse bestehend aus den drei Komponenten s Segmentadresse p Seitenadresse und d Realtivadresse auf eine physikalische Adresse abgebildet werden kann.
Aufgabe 5: Scheduler 7 = 3 + 4 Punkte a) Was ist der Unterschied beim prioritätsorientierten Scheduling zwischen festen (statischen) und dynamischen Prioritäten. Bei statischen Prioritäten besitzen die Prozesse eine fest nicht sich ändernde Priorität Während ihrer gesamten Lebenszeit im System. Bei dynamischen Prioritäten kann sich die Priorität eines Prozesses im Laufe der Zeit ändern. b) Benutzt das Deadline Scheduling feste oder dynamische Prioritäten? Das Deadline Scheduling benutzt dynamische Prioritäten. b1) Falls sie unter b) feste Priorität gewählt haben, welche feste statische Priorität erhalten die einzelnen Prozesse? b2) Falls Sie unter b) dynamische Priorität gewählt haben, wie steigt die Priorität der einzelnen Prozesse? Nach Ablauf eine Toteszeit-Intervalls und falls der Prozess nicht am laufen war, erhöht sich die Priorität um eins und das Toteszeit-Intervall wird halbiert.