Image source: Wikimedia, Ken Thompson (sitting) and Dennis Ritchie at PDP-11, published under CC
Die Absolventen des Moduls können den Aufbau von Betriebssystemen am Beispiel UNIX erläutern und theoretische Grundlagen von Betriebssystemen erörtern, um die Auswirkungen von Betriebssystemvorgängen auf eigene Programme zu erkennen und darauf reagieren zu können. Die Teilnehmer können eigene C-Programme für verteilte Systeme erstellen, indem sie Daten in Dateien speichern, daraus lesen und diese verwalten, Sockets für Client- und Serverprogramme nutzen und Daten darüber senden und empfangen, Prozesse für nebenläufige Programmabläufe erzeugen, Kommunikation zwischen Prozessen mit Shared Memory, Pipes und Message Queues Daten realisieren, Race Conditions erkennen, kritische Abschnitte festlegen und Prozesse synchronisieren sowie die Lösungen klassischer Synchronisationsprobleme kennen und nutzen, um später eigene hardware- oder systemnahe Software für verteilte Systeme zu entwickeln oder zu bewerten, bspw. im Bereich »IoT«. Das Modul besteht aus einer Vorlesung und einem projekt-orientierten Praktikum.
Learning Outcomes
Die Studierenden können den Aufbau von Betriebssystemen am Beispiel UNIX erläutern, indem sie…
- die Ziele der Entwicklung von UNIX nennen und beschreiben,
- die Hauptaufgaben von Betriebssystemen nennen und beschreiben,
- den Aufbau von Betriebssystemen darstellen und erklären,
um die verschiedenen Bestandteile und Konzepte von Betriebssystemen nutzen zu können.
Die Studierenden können eigene C-Programme für verteilte Systeme erstellen, indem sie…
- einen Computer über die Shell bedienen und dort eigene Programme ausführbar machen,
- Daten mittels Systemschnittstellen in Dateien speichern, daraus lesen und diese verwalten,
- Sockets für Client- und Serverprogramme nutzen und Daten darüber senden und empfangen,
- Prozesse für nebenläufige Programmabläufe erzeugen,
- Kommunikation zwischen Prozessen mit Shared Memory, Pipes und Message Queues realisieren,
- Race Conditions erkennen, kritische Abschnitte festlegen und Prozesse synchronisieren,
- die Lösungen klassischer Synchronisationsprobleme kennen und nutzen,
um später hardware- oder systemnahe Software für verteilte Systeme zu entwickeln oder zu bewerten, bspw. im Bereich »Internet of Things«
Die Studierenden können theoretische Grundlagen von Betriebssystemen erörtern, indem sie…
- Programme und Prozesse unterscheiden und letztere mit ihren Zuständen modellieren,
- verschiedene Strategien für das Scheduling von Prozessen anwenden und bewerten,
- die Organisation des Speichers auf einem Datenträger erklären und darstellen,
- die Abbildung von Prozessen im Arbeitsspeicher erklären und verschiedene Ansätze zur Verwaltung erläutern,
um später Auswirkungen von Betriebssystemvorgängen auf eigene Programme zu erkennen und darauf zu reagieren.
Links zur Veranstaltung
- Materialien im Wiki (Login mit GMID)
- Aufgaben für Praktikum im Wiki (Login mit GMID)
- Anmeldung zum Praktikum
- Aus dem Hochschulnetz/VPN haben Sie Online Access zum Buch “Systemprogrammierung in UNIX / Linux” von Erich Ehses, Lutz Köhler, Petra Riemer, Horst Stenzel und Frank Victor
Vorlesung
- 2 SWS Dienstags, 09:00 bis 11:00 Uhr, Raum 3.102
- Folien und weitere Informationen zur Veranstaltung im Wiki (Login mit GMID)
- Geplanter Ablauf siehe Tabelle im Wiki (Login mit GMID)
Praktikum
- Aufgabenstellung und organisatorische Infos gibt es im Wiki (Login mit GMID)
- Anmeldung zum Praktikum über https://praktikum.gm.fh-koeln.de (bis 5. April!!!)