In der Klausur wird nicht programmiert. Es gibt aber Aufgaben wo kleine Snippets in C geschrieben werden müssen. Daher sollte der Einsatz von C in der Betriebssystemprogrammierung bekannt sein.
Aufgabe 1. Erklären Sie den Begriff Schichtenarchitektur bei einem BS. Nennen Sie einen Vorteil der Schichtenarchitektur.
Grob ist das Gesamtsystem in den Kernel und Benutzerprogramme unterteilt und getrennt (Kernel und Benutzerschicht)
Das Betriebssystem ist durch den Hardware Abstraction Layer (HAL) unabhängig von der darunterliegenden Hardware.
Beim Austausch der Hardware muss nicht das komplette Betriebssystem mitausgetauscht werden.
Trennung von User- und Kernelmodus - damit ist nur ein gesicherter Zugriff auf die Hardware möglich.
Wenn der Kernel selber noch in Schichten unterschiedlicher Operationalität und Abstraktion aufgeteilt ist kann die Qualität und Robustheit des Kernels verbessert werden ⇒ Modularisierung und Kapselung.
Aufgabe 2. Was versteht man unter einem Mikrokern eines Betriebssystems?
Eine Betriebssystemarchitektur, die einen leichtgewichtigen Kernel enthält, wird als Mikrokern-Architektur bezeichnet.
Der Kernel wird bei dieser Architekturvariante dadurch entlastet, dass Funktionalität in Anwendungsprozesse, sog. Serverprozesse, ausgelagert wird.
Der Kernel übernimmt hier im Wesentlichen die Abwicklung der Kommunikation zwischen Client- und Serverprozessen.
Clientprozesse greifen bei dieser Betriebssystemarchitektur auf den Mikrokern über eine Service-Request-Schnittstelle mittels Nachrichten zu.
Der Kernel übernimmt nur Speicher-, low-level Prozess-, Kommunikations- und Hardwareverwaltung sowie Gerätetreiber (HAL)
Aufgabe 3. Nennen Sie vier Betriebsmittel, welche das Betriebssystem verwaltet! Welche davon sind hardware- und welche softwaretechnische Betriebsmittel?
Speicher (Hardware)
Prozessor (Hardware)
Gerät (Hardware)
Datei (Software)
Nachricht (Software)
Prozess (Software)
Programmierung
Aufgabe 4. Warum programmiert man Betriebssysteme in C? Nennen Sie Vor- und Nachteile.
C bildet das Speichermodell direkt über Speicherzeiger ab.
Speicher wird nicht automatisch verwaltet. Die manuelle Verwaltung erlaubt größen Gestaltungsfreiraum.
Aber: Manuelle Speicherverwaltung beinhaltet das Risiko von Fehlern und Dateninkosistenz.
Arrays sind lineare Bereiche im Hauptspeicher
Funktionen besitzen ebenfalls eine Speicheradresse und können in Tabellen effizient verwaltet werden
Das Typsystem (Kerndatentypen) ist auf Mikroprozessoren, Speicher und Speicherbus ausgelegt und kann die Bitbreite genau wiedergeben.
C unterstützt Datenstrukturen als direktes lineares Speicherabbild, d.h. die Felder einer Datenstruktur treten mit bekannter Länge sequenziell im Speicher auf
Unions ermöglichen Mehrfachnutzung von Speicherbereichen mit verschiedener Datentypen (Coercion, Typcasting)
C ist eine Hochsprache, aber dennoch hardwarenah
Aber: C ist nicht preemptiv-sicher und parallel aus Sicht des Compilers, d.h. Aufruf von Interrupthandlern oder Multithreading können Daten- und Kontrollinkosistenz hervorrufen
C ist portabel und der meiste Programmkode könen vom Mikrokontroller bis Server verwendet werden
Pro und Con zugleich: Es gibt unbedingte Sprünge zu Marken mittels goto!
Aufgabe 5. Wozu braucht verwenden Mikroprozessoren Register? Wann wählt ein Compiler diese anstelle des Hauptspeichers aus? Nehmen wir an ein Prozessor hat eine genügend große Anzahl von Registern. Weisen Sie im nachfolgenden Ausdruck den Variablen Hauptspeicher (M) und Register (R) zu. Register müssen eindeutig nummeriert werden (aber frei wählbar).
int y;
void foo(int a,int b) {
y=(a+b)*(a-b)/2
}
... foo(2,3) ...
Diese schnellen Speicher werden benötigt, um die Maschinenbefehle effizient auszuführen.
Je nach Maschinenbefehl werden eines oder mehrere Register benötigt. Die Maschinenbefehle schreiben ihre Operanden oft in Register oder lesen Operanden aus Registern.
Ein Compiler wählt Register für temporäre Berechnungen aus. Auch der Prozessorstack ist im Hauptspeicher und langsamer im Zugriff.
a => R1, b => R2, (a+b) => R3, (a-b) => R4, y=> M
Aufgabe 6. Ein Speicherbereich im Adressraum habe den Adressbereich 1000-1015. Definieren und initialisieren Sie in C eine Variable x die vorzeichenlose Ganzzahlen (wie nehmen 32 Bit an) mit der auf diesen Speicherbereich zugegriffen werden kann.
dW5zaWduZWQgaW50ICp4PShpbnQqKTEwMDA7
Prozesse
Aufgabe 7. Erklären Sie folgenden Begriff: Was bezeichnet man als Timesharing?
Allgemein teilen sich mehrere Prozesse einen Prozessor (wechselseitig)
Unter Timesharing im Kontext des CPU Schedulings versteht man Zeitscheibenverfahren.
Die CPU-Zeit wird für Prozesse also nur für ein gewisses Zeitfenster/Quantum zugeteilt.
Aufgabe 8. Erläutern Sie: Warum ist der Scheduling-Algorithmus "Shortest Remaining Time First" (SRTF) kaum zu realisieren?
weil beim modernen Mehrprogrammbetrieb nicht abzusehen ist, wie lange ein Prozess noch dauern wird. Nur bei applikationsspezifischen Systemen und mittels probabalistischen Vorhersagen kann die restlaufzeit abgeschätzt werden.
Man kann nicht in die Zukunft sehen und nur aus vergangenen Abläufen lernen.
Aufgabe 9. Woraus besteht bzw. was kennzeichnet der/den Zustand eines Prozesses allgemein (unabhängig vom Betriebssystem)?
Aufgabe 10. Welche drei administrativen Zustände eines Prozesses (aus Sicht des Betriebssystems) werden benötigt um Prozessverwaltung und Prozesswechsel zu ermöglichen?
Rechenbereit (Ready)
Wartend (Wait, auf Ereignis), d.h. Prozess ist blockiert
In Ausführung (Run)
Aufgabe 11. Zeichnen Sie nun das Zustandsübergangsdiagramm (Graph) mit diesen drei Prozesszuständen. Es soll noch zwei weitere Zustände geben: Start und Ende (End).
Auf den Knopf mit dem Doppelkasten klicken um die Zeichnung zu bearbeiten. Die Zeichnung wird gespeichert ebenso die Historie der Linien (Undo später möglich). Die Strichstärke und Farbe kann eingestellt werden.
⧉
5
Aufgabe 12. Nachfolgend soll der Prozesswechsel und die Prozessauswahl nach dem Round-Robin Prinzip mit einer Zeitscheibe von 2 Zeiteinheiten für die Prozesse P1 - P4 in ein Zeitliniendiagrammen eingetragen werden. Es gibt außer bei Erreichen des Zeitquantums keine Präemption, EA wird nicht bevorzugt. Entscheidend ist die Einreihung in die Ready Queue. Das Scheduling und die Prozessausführung wird in Zeitliniendiagrammen beschrieben. Es gelten folgende Farben und textuell Symbole:
grün: Prozess in Ausführung (X);
rot: Prozess ist blockiert (W);
blau: Prozess is rechenbereit (R).
In einem Zeitschritt (Spalte) kann der Zustand von jedem Prozess durch Auswahl der Farbe aus der Farbpalette ausgewählt und durch Klicken im Feld gesetzt werden.
P1: Start bei 0, Warten auf Ereignis am Ende von 4 (ab 5), Eintritt Ereignise bei 7
P2: Start bei 5
P3: Start bei 1, Warten auf Ereignis am Ende von 3 (ab 4), Eintritt Ereignise bei 8
P4: Start bei 6
Ein 4-Prozesssystem
T
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
P1
G
G
B
B
G
R
R
B
B
B
B
G
G
B
B
P2
W
W
W
W
W
G
G
B
B
G
G
B
B
B
B
P3
W
B
G
G
R
R
R
R
B
B
B
B
B
G
G
P4
W
W
W
W
W
W
B
G
G
B
B
B
B
B
B
Synchronisation
Aufgabe 13. Warum müssen die Semaphor-Operationen P() und V() selbst wieder ununterbrechbar sein? Bedenken Sie eine Ausführung mit einem parallelen Multiprozessorsystem.
Die Operationen P() (=Betreten) und V() (=Verlassen) eines Semaphors müssen atomar sein (also in einem Maschinenbefehl ausführbar), weil eine Unterbrechung zu Inkonsistenzen in der Warteschlangenbearbeitung oder des Zählers führen kann.
Daher ist entweder ein Mutex Lock oder eine atomare Test-und-Set Operation des Prozessors erforderlich um z.B. if x>0 then x=x-1 atomar ausführen zu können.
Created by the NoteBook Compiler Ver. 1.36.2 (c) Dr. Stefan Bosse (Mon Feb 10 2025 18:17:24 GMT+0100 (Central European Standard Time))