Betriebssysteme / Verteilte Systeme - BVS
(Prof. Dr. C. Vogt,
Bereich Informatik,
Institut Nachrichtentechnik,
Fakultät 07,
TH Köln)
Materialien zum Kurs in Ilias (Vogt > BVS).
Video-Empfehlungen findet man
hier.
Einordnung, Ziele, Voraussetzungen und Sprachliches
Die Vorlesung "Betriebssysteme / Verteilte Systeme (BVS)" ist für den Bachelorstudiengang
"Technische Informatik" eine Pflichtveranstaltung
des dritten und vierten Semesters. Sie wird durch eine Übung und ein Praktikum ergänzt.
Die Veranstaltungen sollen mit den wesentlichen Konzepten von
Betriebssystemen sowie den Grundlagen von verteilten Systemen
vertraut machen und, am Beispiel des Betriebssystems UNIX/Linux, praktische Kenntnisse
zur Systemprogrammierung und zur nebenläufigen und verteilten Programmierung vermitteln.
Vorausgesetzt werden
- die Beherrschung der Programmiersprache C (ersatzweise Java) [BVS1] bzw. der Programmiersprachen C und Java [BVS2],
- Grundkenntnisse über den Aufbau von Rechensystemen,
- Grundkenntnisse der Benutzeroberfläche eines Betriebssystems und
- (für die Teilnahme am BVS-Praktikum)
ein bestandenes Praktikum in beiden Modulen des Fachs "PI - Praktische Informatik"
sowie bestandene Klausuren und Praktika gemäß der
Verriegelungsregelung der jeweils zutreffenden Studienordnung.
Zur Förderung der Internationalisierung wird die Vorlesung im Sommersemester (Modul BVS2) in englischer Sprache gehalten.
Themenübersicht
Wintersemester (BVS1):
- Einführung
Betriebsysteme: Position und Aufgaben im Rechensystem, Betriebssystem-Beispiele.
Nebenläufigkeit: Betriebsarten, Hard- und Softwarenebenläufigkeit.
Verteilte Systeme: Komponenten und Eigenschaften, Zusammenhang zu Betriebssystemen.
Softwarestrukturen: Lokale Betriebssysteme (u.a. Kern), verteilte Systeme (insbes. Client-Server- und Peer-to-Peer-Architekturen).
- UNIX und Linux
Schalenstruktur und Schnittstellen: Kern und Shell, Programmier- und Benutzerschnitstelle.
Benutzersicht: Kommandoausführung, Dateisystem, typische Dienste (insbes. C-Compiler).
- Nebenläufigkeit
Prozesse und Threads: Grundkonzepte und allgemeine Eigenschaften.
Prozesse und Threads in UNIX.
Threads in Java.
- Synchronisation
Synchronisationsbedingungen: wechselseitiger Ausschluss, Reihenfolge.
Synchronisationsmechanismen: Spinlocks, Signale, Mutexe, Semaphore, Monitore, Transaktionen.
Deadlocks.
Synchronisation in verteilten Systemen.
- Kommunikation
Grundbegriffe: u.a. Shared Memory vs. nachrichtenbasierte Kommunikation, Mailboxen und Ports, synchrone vs. asynchrone Kommunikation.
Lokale Kommunikation (insbes. in UNIX): Shared Memory, Pipes, Message Queues.
Kommunikation in Rechnernetzen: Sockets.
Sommersemester (BVS2): Vorlesung in englischer Sprache
- Kooperation
Client-Server-Modell: Zeitverhalten, Fehlerbehandlung, Beispiele (Datei- und Namensdienste), Implementierung in Mehrschichtenarchitekturen.
Peer-to-Peer-Modell.
Prozedurale Programmierung: Remote Procedure Call (RPC, insbes. in UNIX).
Objektorientierte Programmierung: Remote Method Invocation (RMI, insbes. in Java), objektorientierte Middleware.
WWW-basierte Dienste: dynamische WWW-Seiten (insbes. Servlets), Web Services (SOAP, REST).
- Implementierung von Prozessen und Threads
Grundlegende Aspekte der Implementierung: Informationen über Prozesse/Threads, Dispatching und Scheduling, Exceptions und Interrupts.
Speicherkonzepte: Komponenten der Speicherhierarchie, Swapping, virtueller Speicher (Segmentierung, Paging, hybride Formen).
Prozesse auf Multiprozessoren und in verteilten Systemen: Lastverteilung, Fehlertoleranz, Synchronisation.
- Daten und Dienste
Dateien und Dateisysteme: grundlegende Konzepte, logische Strukturen.
Lokale Dateisysteme: Realisierung von Verzeichnissen, Organisation des Sekundärspeichers, Durchsatzsteigerung und Fehlertoleranz.
Verteilte Dateisysteme: File Server und Name Server, verteilte Dateibäume, Caching und Replikation, Beispiele (NFS, AFS).
Dienste in verteilten Systemen: Cloud Computing, Web Services, Apache (insbes. Tomcat), kommerziell angebotene Dienste.
Prof. Dr. Carsten Vogt, 29.3.22