Studiengang Angewandte Informatik Systemsoftware Prof. Dr.-Ing. Silvia Keller Übungsaufgaben Aufgabe 1 In der Vorlesung wurde ein Schichtenmodell als Architektur für ein Betriebssysteme eingeführt. Dabei wurde das Betriebssystem in zwei Softwareschichten aufgeteilt, die Systemfunktionen und die Systemaufrufe, auch Supervisor Calls ( SVC) genannt. 1.1 Kennzeichnen Sie in der folgenden Grafik die Schicht der "Systemfunktionen" und die Schicht der "Systemaufrufe (SVC) " Anwenderprogramme Rechnerhardware 1.2 Erläutern sie kurz die Aufgaben, die eine Systemfunktion übernimmt und mit welcher Programmiertechnik eine Systemfunktion realisiert wird, d.h. in welcher Form Systemfunktionen dem Anwenderprogramm zu Verfügung stehen. 1.3 Erläutern Sie kurz mit welcher Technik ein Systemaufruf (SVC ) realisiert wird und was bei einem Systemaufruf im Rechner abläuft? 1.4 A Das System unterscheidet zwei Abwicklungsmodi User und Privilegiert. In welchem Modus laufen die Systemfunktionen ? In welchem Modus laufen die Systemaufrufe ? UFGABE 2 MULTIPROGRAMMING In einem Multiuser/Multitasking-Betriebssystem können mehrere Prozesse nebenläufig abgearbeitet werden. Jeder Prozeß läuft dabei auf einer virtuellen CPU ab, die im Multiplexverfahren einer realen CPU zugeteilt werden. Die Speicherverwaltung kann bei Speicherbedarf Prozesse auslagern. a) Wie wird ein Prozeß vom Betriebssystem verwaltet ? Welche Datenstrukturen werden beim Erzeugen eines Prozesses angelegt und welche Informationen sind dort abgelegt. b) Prozesse nehmen normalerweise verschiedene Zustände an. Geben Sie den Zustandsgraph eines Prozesses an. Erläutern Sie die Bedeutung der Zustände und die Bedingungen für die Zustandsübergänge Systemsoftware A UFGABE Übungsaufgaben 3 Oktober 02 Seite 2 MULTIPROGRAMMING In einem multiuser/multitasking Betriebssystem können mehrere Prozesse nebenläufig abgearbeitet werden. Jeder Prozeß läuft dabei auf einer virtuellen CPU ab, die im Multiplexverfahren einer realen CPU zugeteilt werden. Die Zuteilung einer virtuellen CPU an die reale CPU erfolgt durch das Betriebssystem nach einem bestimmten Algorithmus. a) Erklären Sie die Funktion von Dispatcher und Scheduler Gegeben ist folgendes Petrinetz, das die kausale Abfolge von Aktionen bei der Prozeßverwaltung beschreibt. Kennzeichnen Sie im Petrinetz diejenige Transitionen , die zur Programmabwicklung eines Prozesses gehören mit P, diejenigen, die zum Dispatcher gehören mit D und diejenigen Transitionen, die zum Scheduler gehören, mit S. ( Jede Transition im Petrinetz muß gekennzeichnet werden.) Programmbefehl abwickeln aktuellen Prozeß deaktivieren neuen Prozeß auswählen neuen Prozeß aktivieren b) Bei der Zuteilung der realen CPU an einen Prozeß unterscheidet man non-preemptive und preemptive Zuteilungsstrategien. Durch welche Ereignisse findet ein Prozeßwechsel statt • • A im Falle von non-preemptive Scheduling im Falle von preemptive Scheduling. UFGABE 4 MULTIPROGRAMMING Die Verweildauer eines Prozesses ist die Zeit vom Start eines Prozesses ( Einlagerung in die ReadyWarteschlange) bis zum Ende eines Prozesses. Die Verweildauer umfaßt damit sowohl reine Rechenzeit als auch die Zeit, die der Prozeß auf die Zuteilung warten muß. Die mittlere Verweildauer von Prozessen ist die Summe der Verweildauer aller Prozesse, die in einem Zeitintervall ablaufen, geteilt durch die Anzahl der ausgeführten Prozesse. Sie kann als Gütemaß für einen Zuteilungsalgortihmus herangezogen werden. Berechnen Sie die mittlere Verweildauer für die im folgenden angegebene Situation • Fünf Prozesse werden auf zwei Rechnersystemen mit unterschiedlicher Zuteilungsstrategie in der gleichen zeitlichen Reihenfolge gestartet. • Betriebssystem A arbeitet nach der non-preemptive Strategie FIRST COME FIRST SERVE ( Prioritäten werden nicht berücksichtigt ). • Betriebssystem B arbeitet mit preemptive PRIORITÄTENGESTEUERTER Zuteilung. Berechnen Sie die mittlere Verweildauer für beide Fälle Betriebssystem A und Betriebssystem B. Systemsoftware Übungsaufgaben Prozeßnummer Oktober 02 Seite 3 Startzeitpunkt ( in ms ) Rechenzeit ( in ms ) (bezogen auf to=0 ms) A 1 0 10 1 2 5 5 2 3 8 3 5 4 10 10 3 5 15 7 3 5 UFGABE Priorität MULTIPROGRAMMING In einem Multitasking-Betriebssystem werden mehrere Prozesse nebenläufig abgearbeitet. Bei der Zuteilung der CPU an einen rechenbereiten Prozeß verfolgt das Betriebssystem eine preemptive Prioritätensteuerung mit dynamischen Prioritäten d.h. beim Starten eines Prozesses erhält der Prozeß eine Basispriorität, die während der Laufzeit dynamisch vom Betriebssystem verändert wird. Gibt es zwei Prozesse mit gleicher Priorität, so hat immer der gerade rechnende Prozeß Vorrang vor einem wartenden Prozeß. Gibt es mehrere wartende Prozesse, so hat der Prozeß Vorrang, der als letzter gerechnet hat, also der Prozeß mit der kleinsten Wartezeit. Die dynamische Korrektur der Priorität erfolgt nach folgenden Regeln: a) Nach jeder Zeiteinheit Rechenzeit wird die Priorität um 1 erniedrigt. Negative Prioritäten werden zu 0 gesetzt. b) Nach einem Systemaufruf (SVC) wird nach Ablauf der Zeiteinheit die Priorität um 2 erhöht. c) Bei der Berechnung der Priorität am Ende einer Zeiteinheit wird sowohl Regel a) als auch Regel b) angewendet, d.h ein Prozeß ohne SVC wird um 1 erniedrigt ein Prozeß mit SVC wird um 1 erhöht. d) Tritt ein SVC zum Zeitpunkt einer Zeiteinheit auf, so wird Regel a) und Regel b) angewendet d.h. die Priorität erhöht sich in diesem Fall um 1. Im folgenden Beispiel werden drei Prozesse P1, P2 und P3 betrachtet. Die Prozesse starten alle zum gleichen Zeitpunkt t=0, haben jedoch unterschiedliche Basisprioritäten. Alle SVC's treten zum Zeitpunkt einer Zeiteinheit auf. ( d.h. in diesem Fall soll Regel d anwendet werden ). In der folgenden Tabelle sind die drei Prozesse im Detail beschrieben . Startzeit und Rechenzeit der einzelnen Prozesse sind in Zeiteinheiten (ZE) angegeben. Prozeßnummer Rechenzeit ( in ZE) Basispriorität SVC bei Rechenzeit Startzeit 1 6 5 kein SVC 0 2 5 3 1,2 0 3 4 4 2 0 Tragen Sie in die folgende Zeitleiste ein, welcher Prozeß in der jeweiligen Zeiteinheit abläuft. Zeiten, in denen das Betriebssystem arbeitet, sind wegzulassen. 1 2 ----> Zeit in ZE 3 4 5 6 7 8 9 10 11 12 13 14 15 Systemsoftware A Übungsaufgaben 6 UFGABE Oktober 02 Seite 4 MULTIPROGRAMMING Auf ihrem Rechner ist ein Multiprogramming-Betriebssystem MUBS installiert. Der Scheduler von MUBS realisiert eine preemptive Zuteilungsstrategie, eine Kombination aus Round Robin (RR) und dynamischen Prioritäten. Die Priorität eines Prozesses wird beim Start angegeben. Ein Prozess kann die Priorität während der Laufzeit durch Aufruf der Systemfunktion PRIO() um den Wert 1 erniedrigt werden. Die Erniedrigung der Priorität wird erst in der folgenden Zeitscheibe wirksam. Eine Erhöhung der Priorität um den Wert 2 erfolgt durch das Betriebssystem, wenn ein Prozess ein I/O_Operation über die API-Funktionen IO_read() und IO_write() durchführt. Die Erhöhung der Priorität wird erst in der folgenden Zeitscheibe wirksam. Eine beim Start vergebene Priorität bleibt solange erhalten, bis der Prozess endet oder bis durch Aufruf der Systemfunktion PRIO() die Priorität erniedrigt wird oder das BS aufgrund einer I/O-Operation eine Erhöhung anordnet. Die neu berechnete Priorität bleibt erhalten, bis zum Ende des Prozesses oder einem erneuten Aufruf von PRIO() bzw. I/O-Operation. Wird PRIO() oder eine IO_Operation innerhalb einer Zeitscheibe mehrmals aufgerufen wird die Priorität bei jedem Systemaufruf erniedrigt bzw. erhöht d.h. nach dem zweiten Systemaufruf von PRIO() ist die Priorität um 2 niedriger, nach zwei I/O_Operationen innerhalb einer Zeitscheibe um 4 erhöht. Existieren zu Beginn einer Zeitscheibe mehrere Prozesse mit gleicher Priorität, so wird das Round Robin Verfahren angewendet und es darf der Prozess beginnen, der am längsten nicht gerechnet hat. In der folgenden Tabelle ist eine Situation beschrieben, in der 4 Prozesse zu unterschiedlichen Zeiten starten. Alle Zeiten in der Tabelle sind als Zeiteinheiten angegeben ( 1 Zeiteinheit= 1 Zeitscheibe ). Die Prozesse starten mit unterschiedlicher Priorität. Prozess 1,2 und 3 erniedrigen zur Laufzeit ihre Prioritäten. In der Spalte 5 ist angegeben in welcher Zeiteinheit ein Aufruf von PRIO() erfolgt. In Spalte 6 ist eingetragen, ob und wann die Prozesse eine I/O-Operation durchführen. Die Rechenzeit wird in Anzahl von Zeiteinheiten angegeben, die der Prozess rechnet. Nach dem Start befindet sich ein Prozess daher in der Rechenzeit 1. Prozess-ID Startzeit Priorität beim Start Rechenzeit Aufruf von PRIO() I/O-Operationen im Zeitintervall innerhalb des Zeitintervalls 1 0 3 3 2 3 2 2 4 5 2 1 3 5 6 7 1 und 5 - 4 10 5 5 - 2 und 4 Tragen Sie in die vorgegebene Zeitleiste ein, welcher Prozess in welcher Zeiteinheit mit welcher Priorität abläuft ProzessID Priorität Zeiteinheit 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20