Musterlösung Prüfung SS 2002 Fach: I4neu (SEE, KOS, GRS, BTS) Teilprüfung: Betriebssystem Tag: 2.7.2002 8:15 12:15 Raum 1006 Bearbeitungszeit: 72 Minuten 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 max. 45 01 02 03 04 Aufgabe 01: (Allgemeines und Vermischtes) 12 = 3 + 4 + 3 + 1 +1 Punkte
Name :... 2 a) Vergleichen und erläutern Sie die drei Betriebsarten eines Rechners: Batch, Interactive oder Time Sharing und Real-Time. Mehrere Aufträge (Jobs) werden zusammengefasst zu einem Stapel (Batch) und dem Rechensystem zu Bearbeitung übergeben. Die Bearbeitung der Jobs laufen ohne Interaktion des Benutzers ab. Der Benutzer übergibt einen Auftrag dem Rechensystem und erwartet in kürzester Zeit eine Rückantwort. Jeder Benutzer bekommt dabei für mehrere Zeitscheiben (Time Sharing) den Prozessor zugewiesen für die Bearbeitung seiner Aufträge. Der Rechner reagiert auf Ereignisse, die aus einem physikalisch technischen Prozess kommen. Dazu besitzt der Rechner eine schnelle Interruptfähigkeit und stellt Multitasking mit prioritätsbasierter Abarbeitung zur Verfügung. b) Erläutern Sie die folgenden Strukturierungsmethoden für Betriebssysteme Monolith, Schalenmodell, Objektorientiert und diskutieren Sie deren Vor- und Nachteile. Monolithische Systeme sind eine Ansammlung von Prozeduren, wobei jede Prozedur eine andere aufrufen kann. Vorteil: Systemfunktionen stehen als einfache Prozeduraufrufe zur Verfügung. Nachteil: Schlechte Strukturierung des Betriebssystems. Hinzufügen einer weiteren Komponente bedingt eine Neucompilation des Betriebssystems und Linken aller Komponenten. Das Schalenmodell untergliedert die Betriebssystemkomponenten in verschiedene Schichten oder Schalen. Dabei baut jede weitere Schicht oder Schale auf die darrunterliegende Schicht oder Schale auf. Vorteil: Jede Schicht stellt ein Schutzhierarchie dar und es darf nur auf Speicherbereiche von dieser Schicht (Schale) zugegriffen werden. Nachteil: Der Prozessor muss bei jedem Wechsel der Schicht oder Schale in einen neuen Schutzmodus geschaltet werden (Overhead). Objektorientierte Ansätze zerlegen die Komponenten des Betriebssystems in Objekte (abstrakte Datentypen). Der Schutz der Daten ist durch den abstrakten Datentyp geregelt und liegen somit in der Software. Darüber hinaus kann noch ein Objektmanager vorhanden sein, der bestimmt welche Zugriffsfunktionen aufgerufen werden dürfen. Ein weitere Vorteil ist, dass das Betriebssystem leicht durch weitere Komponenten Durch Hinzufügen von Objekten erweiterbar ist. c) Worin liegt der Unterschied zwischen Aktivem und Passivem Warten?
Name:... 3 Beim Aktivem Warten verbleibt der Prozess auf dem Prozessor und wartet somit aktiv und verschwendet Prozessorzeit. Beim Passiven Warten kommt der Prozess vom Prozessor und wird während des Wartens in eine Warteschlange verbracht. c1) Welche Synchronisationsmethode benutzt Aktives Warten? Test and Set Befehl (TAS-Befehl) c2) Und welche benutzt Passives Warten? Semaphore mit P- und V-Operationen Aufgabe 02: (Prozesse) 14 = 6 + (2 + 2) + (2 + 2) Punkte
Name :... 4 a) Erzeugen Sie mit dem fork-systemaufruf unter Unix den folgenden Prozessbaum: main P 1 P 2 P 3 P 22 P 1,P 2,P 3 sind dabei sequenzielle Prozesse, die in endlicher Zeit enden. P 22 ist ein sequenzieller Prozess und P 2 startet den Prozess P 22 und wartet anschließend auf dessen Beendigung. (Waitpid-Systemaufruf). Schreiben Sie bitte hier das C-Code ähnliche Programmfragment hin. main()
Name:... 5 // Code des Vaters (main) if (fork () == 0) // Code von P1 exit(1); else if (fork == 0) //Code von P2 if (fork()==0) //Code von P22 exit(22); wait(pid von P22) exit(2); else if (fork() == 0) //Code von P3 exit(3); b1) Zeigen Sie, wie Sie in obigem Prozessbaum Waisen erzeugen können. Wird Prozess P2 durch ein Kill-Kommando beendet, dann wird Prozess P22 zum Waisen. b2) Geben Sie bitte die Prozessidentifikationsnummer PID des neuen Vaters des Waisen an. Init-Prozess mit PID 1 c1) Zeigen Sie, wie Sie in obigem Prozessbaum Zombies erzeugen können und erläutern Sie kurz was Zombies sind. Zombies sind terminierte Prozesse deren Returncode der Vater noch nicht abgenommen hat. P22 kann durch das Kill-Kommando terminiert werden, dann wird er kurzzeitig zum Zombie bis der Vater P2 den Returncode abgenommen hat. c2) Woran ersehen Sie beim ps-kommando, dass es sich um Zombies handelt?
Name :... 6 Entweder durch Z oder <defunc> Markierung (Solaris) bei ps al. Aufgabe 03: (Synchronisation) 14 = 3 + 3 + 4 + 4 Punkte a) Fügen Sie bei den folgenden beiden Endlosprozessen Ping und Pong Semaphoroperationen P und V ein, so dass die Prozesse endlos PingPong, PingPong, PingPong,... ausgeben. Geben Sie bitte auch die Initialisierung der Semaphoren an.
Name:... 7 task Ping is task Pong is loop loop P(Sema_Ping); P(Sema_Pong); print( Ping ); print( Pong, ); V(Sema_Pong); V(Sema_ping); end loop; end loop; end Ping; end Pong; -- Initialisierung der Semas s_init (Sema_Ping, 1); s_init(sema_pong,0); b) Lösen Sie das Problem unter a) mit Hilfe von bedingten kritischen Regionen. task Ping is task Pong is loop loop region PP when Pong region PP when Ping printf( Ping ); printf( Pong, ); Ping := True; Pong := True; Pong := False; Ping := False; end loop; end loop; end Ping; end Pong; c) Lösen Sie das Problem unter a) mit Hilfe von Monitorprozeduren. Geben Sie dazu den Monitor an und verwenden Sie dazu Bedingungsvariable und die Operationen wait und signal darauf. monitor PingPong is Ping_Start, Pong_Start : CONDITION; Ping_B, Pong_B : BOOLEAN; procedure Ping Is if Pong_B then signal (Pong_Start);
Name :... 8 wait(ping_start); end if, print ( Ping ); Ping_B := False; Pong_B := True; end Ping; procedure Pong Is if Ping_B then signal (Ping_Start); wait (Pong_Start); end if; print ( Pong ); Pong_B := False; Ping_B := True; end Pong; Ping_B := True; Pong_B := False; end PingPong; d) Lösen Sie das Problem unter a) mit Hilfe des selektiven Ada Rendezvous. Schreiben Sie dazu einen Server mit den Entries Ping und Pong.
Name:... 9 task body Ping_Pong_Server is loop select when Ping_B => accept Ping do print ( Ping ); Pong_B := True; Ping_B:= False; end accept; or when Pong_B => accept Pong do print ( Pong ); Ping_B := True; Pong_B:= False; end accept; end select; end loop; end Ping_Pong_Server; Aufgabe 04: (Scheduling, Hauptspeicherverwaltung) 5 = 2 + (1 + 2) Punkte a) Die Prozessumschaltzeit sei t. Wie groß in Abhängigkeit von t muss das
Name :... 10 Zeitquantum q bei der Round Robin Scheduling-Strategie gewählt werden, so dass der Overhead des Betriebssystems für die Prozessumschaltung zehn Prozent ist? q = 10t b1) Unter welchen Umständen tritt ein Seitenfehler (Page-Fault) auf. Ein Seitenfehler tritt auf, wenn ein Prozess auf eine Seite zugreift, die sich nicht im Hauptspeicher befindet. b2) Beschreiben Sie die Aktionen des Betriebssystems, wenn ein Seitenfehler auftritt. Gehen Sie davon aus, dass im Hauptspeicher keine Seite mehr frei ist. Seitenfehler tritt auf. Interruptroutine zur Behandlung des Seitenfehler wird angesprungen. Alle Seiten des Hauptspeicher belegt? Bestimme nach einer Strategie eine Seite des Hauptspeichers, die ausgelagert wird. Falls Änderungen an der auszulagernden Seite (Dirty-Bit) vorgenommen wurde, Seite auf Platte auslagern. Benötigte Seite von der Platte in den freigewordenen Seitenrahmen laden und Seitenverwaltung aktualisieren.