Dozent
Roland Weber
IBM Entwicklungslabor Böblingen
rolweber (at) de.ibm.com
Ich beantworte gerne auch Fragen per eMail.
Aufgaben und Aufträge
Einige der Übungen bearbeiten und besprechen wir in der Vorlesung. Die meisten sind jedoch zur selbstständigen Bearbeitung vorgesehen, alleine oder in kleinen Lerngruppen. Musterlösungen stelle ich nach und nach bereit, wenn die jeweiligen Themen drankommen. Ich rate dringend, die Übungen während des Semesters anzugehen. Wer erst kurz vor der Klausur mit dem Lernen anfängt, ist selbst schuld. Ihr seid gewarnt!
Die Übungen fallen in zwei Kategorien. V-Aufgaben dienen dem Verständnis eines Themas vor oder während der Vorlesung, oder zum Vertiefen des Stoffs in der Nachbereitung. K-Aufgaben eignen sich zur intensiven Klausurvorbereitung. Viele davon sind frühere Klausuraufgaben. Gegen Ende des Semesters stelle ich mindestens eine Probeklausur mit Musterlösung bereit.
Kleine Arbeitsaufträge während des Semesters bereiten Vorlesungen vor oder ergänzen deren Inhalte. Soweit nicht anders angegeben sind Arbeitsaufträge klausurrelevant, insbesondere wenn sie Recherchen oder Nachlesen erfordern.
Material
Videos (2020)
-
Ein paar Begriffe habe ich seither geändert.
→ Kernobjekte, Abschnitt 7.3 und verstreut 13:21 min
→ Kernaktionen, Abschnitte 12.2+3 12:45 min
→ Umgebungswechsel, Abschnitt 16.2 13:51 min
Das Begleitbuch liegt in drei Fassungen vor:
- A4 komplett dient als Referenz für Seitenangaben.
- A5 randlos und ohne Seitennummern, ebenfalls komplett, ist für das Lesen auf Tablets gedacht.
- A4 Auswahl ist meine Empfehlung zum Ausdrucken, wer das möchte.
Lehr- und Lernziele
Systemarchitektur
Betriebssysteme stellen Laufzeitumgebungen für Programme bereit. Eine Laufzeitumgebung beinhaltet sowohl Resourcen wie Speicher und Rechenzeit, als auch Schnittstellen für Systemfunktionen wie Dateizugriffe. Die Teilnehmer unterscheiden ablaufende Programminstanzen von der Infrastruktur, d.h. dem Kern des Betriebssystems. Eine Instanz umfasst ein Programm und meist mehrere, dynamisch gebundene Bibliotheken. Die Infrastruktur stellt Resourcen und systemnahe Schnittstellen für alle Instanzen bereit. Anwendungsnahe Schnittstellen liegen in Bibliotheken.
Interaktionsmuster
Interaktionsmuster beschreiben, wie zwei oder mehr Prozesse (siehe unten) in verschiedenen Rollen miteinander arbeiten. Die Teilnehmer verstehen eine Auswahl von einfachen Grundmustern, die sie variieren und zu komplexeren Mustern zusammensetzen. Die Grundmuster sind: Client/Server, Erzeuger/Verbraucher, Reproduktion, Fließband, Pufferung, Team. Zur Darstellung dienen Interaktionsdiagramme.
Adressräume
Jede Programminstanz läuft in einem Adressraum ab, wo sie nur auf bestimmte Speicherbereiche zugreifen darf. Die Teilnehmer kennen den schematischen Aufbau von Adressräumen und ausführbaren Programmdateien. Sie verstehen, wie eine MMU (memory management unit) ungültige Speicherzugriffe unterbindet und erstellen vereinfachte Übersetzungstabellen für die MMU.
Prozesse
Prozesse erhalten Rechenzeit vom Betriebssystem, um Programmcode auszuführen. Die Teilnehmer begreifen das Prinzip der Prozessumschaltung. Sie kennen ein einfaches Prozessmodell mit sieben Zuständen, die zugehörigen Prozessmengen sowie die Rollen von Aufgreifstrategien und Prioritäten. Die Prozesszustände sind: Aktiv (Bereit + Rechnend), Blockiert, Inaktiv (+ Fertig), Nicht. Die Teilnehmer vergleichen dieses Modell mit dem Five State Process Model für Unix.
Interaktion
Interaktion verbindet Prozesse miteinander und mit ihrem Umfeld. Die Teilnehmer verstehen Zweck und Funktionsweise der systemnahen Synchronisation und Kommunikation mittels Kernobjekten. Auf Englisch bezeichnet man systemnahe Interaktion auch als IPC: inter-process communication. Die Teilnehmer kennen Datenströme als anwendungsnahen Mechanismus zur Kommunikation und zum Zugriff auf Dateien.
Kernoperationen
Der Kern wird von Instanzen aufgerufen oder reagiert auf Unterbrechungen. Die Teilnehmer verstehen, wie der Kern zwischen Prozessen umschaltet oder sie bei Bedarf blockiert in Wartemengen ablegt, um Operationen später zu beenden. Als Beispiele dienen die Operationen eines Semaphors, verschiedener anderer Synchronisationsobjekte sowie der Austausch von Nachrichten an Kanälen. Die Teilnehmer übertragen das Prinzip auf ähnliche Interaktionsmechanismen.
Dateisysteme
In Dateisystemen liegen Daten, deren Lebensdauer nicht an einen Programmlauf gebunden ist. Die Teilnehmer verstehen den Aufbau von Verzeichnisstrukturen und die Funktion von Verweisen (symbolic links, hard links). Sie kennen die Grundzüge der Organisation eines Dateisystems auf einem Massenspeicher. Sie wissen, wie eine Systemfunktion die Zugriffe aller Instanzen auf die angeschlossenen Dateisysteme ermöglicht und koordiniert.
Virtueller Speicher
Durch geschickten Einsatz von MMUs kann das Betriebssystem Daten dynamisch zwischen Hauptspeicher und Massenspeicher verschieben. Darauf basieren Dateizugriffe mittels MMIO (memory-mapped IO) und das Auslagern von Speicherinhalten (Paging). Die Teilnehmer verstehen die zugrunde liegenden Mechanismen. Sie kennen Grenzen für das Auslagern.
Links und Literatur
-
Adressräume, Prozesse, InteraktionPOSIX.1 (IEEE 1003.1) definiert unter anderem eine Reihe von C-Schnittstellen für Prozesse (POSIX threads) und Interaktion (signals, IPC). Sie stammen ursprünglich aus Unix, sind aber zum Teil auch auf anderen Betriebssystemen gängig. Ein guter Einstieg in die umfangreiche Spezifikation ist "System Interfaces => General Information". Der Zugang zur HTML-Version (online und herabladbar) erfordert eine kostenlose Registrierung. Der Link zum Herabladen befindet sich recht unscheinbar ganz unten im Hauptframe der Einstiegsseite.
-
Interaktion, InteraktionsmusterEin freies Buch (PDF) über Synchronisationsprobleme aus Entwicklersicht, mit vielen Aufgaben und Lösungen. Semaphore werden sowohl zum Sperren als auch zum Signalisieren eingesetzt.
-
Programme, AdressräumeEin Artikel über Heap-Overflow-Angriffe. Auf den ersten beiden Seiten geht es um das Speicherlayout eines Programms zur Laufzeit und die Verwaltung einer Halde.
-
Prozesse, InteraktionQt ist eine plattformunabhängige Bibliothek zum Entwickeln von Anwendungen. Der Artikel beschreibt Threads und deren Synchronisation mit Mechanismen, die ich auch in der Vorlesung präsentiere.
-
ProzesseDie Seite beschreibt kurz einige Strategien zum Aufgreifen von Prozessen. Eine Übersicht der Strategien in verschiedenen Betriebssystemen nennt häufig die Multilevel Feedback Queue, die auch in COSY zum Einsatz kam.
-
Prozesse, InteraktionAllgemeine Beschreibung von QNX Neutrino. Der Inhalt ist auf diverse Unterseiten verteilt, unter anderem eine mit einem Diagramm der Prozesszustände. Im Programmierhandbuch findet sich eine etwas andere Beschreibung dieser Zustände.
In einer älteren Version der Dokumentation ist die Darstellung übersichtlicher, aber auch veraltet. Insbesondere das Diagramm mit den Prozesszuständen wurde seither überarbeitet. -
Kernaufrufe, ProzesszuständeSehr detaillierte Beschreibung des Microkernels von QNX Neutrino.
-
Adressräume, ProzesseMeine Diplomarbeit beschreibt unter anderem Details zur Prozessumschaltung und zur Realisierung von Adressräumen in COSY.
-
ProzesseErläuterungen zu Unix-artigen Prozessen, mit einem alternativen Zustandsübergangsdiagramm.
-
ProzesseDie historische Entwicklung von der kooperativen zur verdrängenden Prozessumschaltung in Mac OS.
-
ProgrammeAufrufkonventionen von Apple OS X für verschiedene Prozessortypen. Unterhalb von "Function Calls" beschreibt "Stack Structure" den Aufbau von Stack Frames und "Register Preservation" die Verwendung der Register bei Funktionsaufrufen.
-
ProgrammeAufrufkonventionen und Dateiformate für Programme auf ARM-Prozessoren mit 32 und 64 Bit. Die PDF-Dokumente "Procedure Call Standard" beschreiben jeweils in Kapitel 5 die Verwendung der Register bei Prozeduraufrufen und den Aufbau eines Adressraums mit Stapel und Halde. Die Details zur Verlinkung von Stack Frames bleiben aber dem jeweiligen Compiler überlassen.