Betriebssysteme und Verteilte Systeme 1 (BVS1) Modulbezeichnung / Kürzel Betriebssysteme und Verteilte Systeme 1 (BVS1) Stand: 11.05.2007 Fachsemester 3. Semester Modulverantwortliche(r) Prof. Dr. Carsten Vogt Sprache Deutsch Lehrformen / SWS Seminaristischer Unterricht mit Praktikum, V2, Ü1, P1 Kreditpunkte 5 ECTS-Punkte Arbeitsaufwand 60 h Präsenz 90 h Selbststudium Voraussetzungen IN 1 / IN 2 (Programmieren in Java oder C, Grundkenntnisse über Aufbau, Funktionsweise und Dienste von Rechensystemen) Lernziele/Kompetenzen Die Studierenden kennen Architekturkonzepte und Nutzungsmöglichkeiten von Betriebsystemen (BS) und nebenläufigen, verteilten Systemen (VS). Sie können ihr Wissen praktisch anwenden: • Sie kennen die Aufgaben von BS und VS, die ihnen zugrundeliegende Hardware und Möglichkeiten für ihre Softwarearchitektur. • Sie kennen Aufbau, Schnittstellen und Anwendungsmöglichkeiten des BS UNIX/Linux. • Sie kennen verschiedene Arten der Nebenläufigkeit in Hard- und Software, entsprechende Betriebsarten eines BS und Programmiertechniken. • Sie kennen die Problematik der Synchronisation (der Steuerung des zeitlichen Verhaltens nebenläufiger Programme) und Techniken zur Lösung von Synchronisationsproblemen. • Sie kennen fundamentale Begriffe und Techniken der Kommunikation (des Datenaustauschs) in lokalen Systemen und in Netzen. • Sie kennen fundamentale Begriffe und Techniken der Kooperation (der Lösung von Anwendungsproblemen durch nebenläufige Programme) in verteilten Systemen. • Sie können Techniken der UNIX/Linux-C-Schnittstelle anwenden, um nebenläufige Anwendungsprogramme zu realisieren (einschließlich Synchronisation, Kommunikation und Kooperation). Sie besitzen entsprechende Grundkenntnisse bezüglich Java. Inhalt Einführung in Betriebssysteme und verteilte Systeme: Position und Aufgaben eines Betriebsystems. Klassen der Nebenläufigkeit in Hard- und Software. Betriebsarten. Komponenten und Eigenschaften verteilter Systeme. Softwarestrukturen in Betriebssystemen und verteilten Systemen. Die Betriebssysteme UNIX und Linux: Schalenstruktur und Schnittstellen: Kern und Shell, Programmierund Benutzerschnittstelle. Benutzersicht: Kommandoausführung, Dateisystem, typische Dienste (insbes. C-Compiler). Software-Nebenläufigkeit: Prozesse und Threads: Allgemeine Eigenschaften, Prozesse in UNIX (Funktion fork() und verwandte Funktionen), Threads in Java (Klasse Thread). Synchronisation: Problemstellung und Arten der zeitlichen Koordination nebenläufiger Aktivitäten. Deadlocks. Synchronisationsmechanismen: Spinlocks, Signale, Semaphore, Monitore, Transaktionen. Signale und Semaphore in UNIX. Monitore in Java. Lokale Datenkommunikation Grundbegriffe: u.a. Shared Memory vs. Nachrichtensystem, Mailboxen und Ports, synchrone vs. asynchrone Kommunikation. UNIXMechanismen: Shared Memory, Pipes, Message Queues. Datenkommunikation im Netz Nachrichten und Protokolle. Protokollstacks: OSI-Modell, InternetProtokolle. Beispiele für Netze und Protokolle: u.a. Ethernet, WLAN, TCP/IP. Sockets in UNIX und Java. Grundlagen der Kooperation Kooperationsmodelle: Client-Server, Peer-to-Peer. Datei- und Namensdienste. Implementierung durch Mehrschichtenarchitekturen. Prozeduraler Ansatz: Remote Procedure Call (RPC) in UNIX. Studien-/Prüfungsleistungen Regelmäßige Anfertigung von Praktikumsberichten mit Vorführung Schriftliche Prüfung Voraussetzung: bestandenes Praktikum Medienformen Vorgefertigte Folien, in der Vorlesung entwickeltes Tafelbild, Beamerpräsentation mit Computerdemonstration, Webseite (www.nt.fh-koeln.de/vogt/bs.html) Literatur Vogt, Betriebssysteme, Spektrum-Verlag Vogt, C für Java-Programmierer, Hanser-Verlag Ehses et al., Betriebssysteme, Pearson Studium Tanenbaum / Woodhull, Operating Systems, Pearson / Prentice Hall Bengel, Grundkurs Verteilte Systeme, Vieweg-Verlag Tanenbaum / van Steen, Distributed Systems, Prentice Hall Weitere Literaturempfehlungen, auch zu Spezialgebieten: www.nt.fh-koeln.de/vogt/bs/folien.html -> Literaturempfehlungen