Betriebssysteme und Computernetze

Operating Systems and Computer Networks

Profile and objectives

The Operating Systems and Computer Networks Laboratory supports the lectures in Applied Computer Science, Computer Science/Economics+ and Business Informatics. It offers students the opportunity to recreate problems in these areas and to use specific tools and solution methods that they have previously learned in the lectures.  

In the laboratory in the Steinbeis building of the University:

  • Internship Operating Systems (2. semester)
  • Internship Systems Programming (3. semester)
  • Internship Computer Networks I (3. + 4. semester)
  • Internship Distrbuted Systems (6. semester)
  • Internship Computer networks II (7. semester)
  • Internship Advanced Networking (Master)

The laboratory environment is also used for bachelor and master theses, as well as for project work and third-party funded projects.

Praktikum Betriebssysteme (2. Semester)

Betriebssysteme sind das Herz jedes modernen Rechensystems. Ein Betriebssystem verwaltet Betriebsmittel wie CPU, Speicher oder E/A-Geräte und steuert die Ausführung von Programmen.

Das Praktikum Betriebssysteme unterstützt die gleichlautende Vorlesung im 2. Semester des Studiengangs Angewandte Informatik. Es gliedert sich in zwei Teile:

  • Versuche mit Microsoft Windows (insges. 5 Laboraufgaben)
  • LINUX-Praktikum (insges. 6 Laboraufgaben)

Im Windows-Teil lernen die Studierenden unter anderem den Umgang mit zentralen Administrations-, Konfigurations- und Analysewerkezeugen von Windows 7. Über selbstentwickelte Versuchsprogramme schauen die Teilnehmer dem Betriebssystemscheduler über die Schulter und messen das Schedulingverhalten unter diversen gegebenen Randbedingungen. Auch was ein Speicherleck ist und welche Konsequenzen es mit sich bringt, wird in einem Versuchsschritt ermittelt.

In einer weiteren Programmierübung erzeugen die Studierenden Threads und stellen fest, welchen gewaltigen Unterschied es macht, ob man eine kleine Bankanwendung mit oder ohne Synchronisationsunterstützung des Betriebssystems durchführt.

Da LINUX vor allem im Serverumfeld immer wichtiger wird, erhalten die Studierenden im zweiten Teil des Praktikums eine umfassende praktische Einführung in dieses Betriebssystem. Neben Laborübungen zum KDE Desktop und typischen UNIX-Anwendungen wird vor allem auf die für Softwareentwickler wichtigen Konsolkommandos eingegangen. In geführten Versuchen, lernen die Studierenden wie man "grept" und "piped" und "killed" und anderen die Rechte wegnimmt...

Systemprogrammierung (3. Semester)

Praktikum Systemprogrammierung

Die Systemprogrammierung umfasst im Gegensatz zur Anwendungsprogrammierung das Erstellen von Softwarekomponenten, die Teil des Betriebssystems sind oder eng mit dem Betriebssystem zusammenarbeiten.

Das Praktikum Systemprogrammierung unterstützt die gleichlautende Vorlesung im 3. Semester des Studiengangs Angewandte Informatik und beherbergt insgesamt 5 mittelgroße Programmieraufgaben.

Die Versuche decken die zentralen Themenfelder ungepufferte und gepufferte Ein-/Ausgabe, Prozesserzeugung und -verfolgung, Threadbibliotheken, Synchronisation über Semaphore und Mutexe, Kommunikation, sowie Kooperation über Shared Memory ab. Optional ist ein Versuch zur Programmiersprache Python.

Als Teil eines Versuches müssen die Studierenden beispielsweise ein Wettrennen programmieren, dessen Teilnehmer eine Menge selbst erzeugter Prozesse sind, welche auf einer virtuellen Rennbahn zufallsgesteuert unterschiedlich schnell vorankommen. Teil der Aufgabe ist die Visualisierung des Rennens am Bildschirm. Die Studierenden lernen die Prozesserzeugung, - verfolgung und -synchronisation am Beispiel praktisch einzusetzen.

Die Versuche werden in einer LINUX-Umgebung und der Programmiersprache C durchgeführt.

Computernetze I (3. + 4. Semester)

Praktikum Computernetze I

Computernetzwerke erobern die Welt. Nicht zuletzt durch den rasanten Aufstieg des Internets wird ein vertieftes Wissen im Bereich Kommunikationstechnik immer wichtiger.

Computernetze I behandelt die Grundlagen. Darauf aufbauend findet das vertiefende Praktikum Computernetze II in späteren Semestern statt.

Das Praktikum Computernetze I unterstützt die gleichlautende Vorlesung im 3. Semester des Studiengangs Angewandte Informatik und im 4. Semester der Studiengänge Informatik/Wirtschaft plus (IW-plus) und Wirtschafsinformatik mit insgesamt 6 Versuchen.

Grundlegende Administrations-, Konfigurations- und Analysewerkzeugen werden an exemplarischen Netzwerkanwendungen (ping, ftp, telnet) erprobt. Das Netzwerk-Sniffer-Werkzeug Wireshark und weitere Tools werden in praktischen Übungen zur Netzwerkanalyse eingesetzt. Die Studierenden lernen, sich die Netzwerkumgebung eines Rechners zu erschließen und diese korrekt zu konfigurieren.

Weiterhin steht der selbständige Aufbau eines einfachen lokalen Netzwerks (LANs) auf dem Programm. Die Studierenden machen sich praktisch mit dem Subnetting vertraut, erschließen sich durch mehrere Teilversuche die Funktionsweise des ARP-Protokolls, und stellen unter anderem fest, wie durch Spoofing Sicherheitslücken in einem Netzwerk ausgenutzt werden können. Auch der Aufbau von typischen Infrastrukturkomponenten wie einem DHCP Client und DHCP Server sind Versuchsteile.

Mit Hilfe von Routern lernen die Studierenden die Einsatzmöglichkeiten und Vorgehensweisen beim "Inter-Networking" kennen. Eingesetzt werden handelsübliche Router (CISCO 871), aber auch LINUX-Rechner, die von den Studierenden manuell als Router konfiguriert werden. In einer strukturierten Vorgehensweise, entwickeln die Teams für mehrere im Versuch vorgegebene Netzwerkumgebungen die Verkabelung, sowie die Schnittstellen- und Routerkonfigurationen.

In zwei Teilversuchen des Praktikums erhalten die Studierenden darüber hinaus eine Einführung in die Netzwerkprogrammierung. Sie entwickeln einfache Client-Server-Anwendungen unter Verwendung von UDP und TCP. Nach dem Praktikums sind die Teilnehmer vertraut mit der in der Praxis wichtigen Socketprogrammierung von Netzwerkanwendungen.

Verteilte Systeme (6. Semester)

Praktikum Verteilte Systeme

Durch den Einsatz von Computernetzwerken wird eine neue Art von Anwendung ermöglicht: Nicht ein einzelner Rechner löst ein Problem, sondern eine Menge unabhängiger Rechner, die sich durch Nachrichtenaustausch miteinander synchronisieren.

Dies ist die Motivation für das Praktikum Verteilte Systeme, welches die gleichlautende Vorlesung im 6. Semester des Studiengangs Angewandte Informatik mit insgesamt 4 Versuchen unterstützt.

In den ersten beiden Teilversuchen entwickeln die Studierenden eine Peer-to-Peer Anwendung, d.h. eine Anwendung, welche im Idealfall keinen zentralen Verwalter mehr hat, sondern sich autonom organisiert. Diese Art der Anwendungen haben gerade in der letzten Zeit in der Praxis immer mehr an Bedeutung gewonnen und bilden beispielsweise die Basis von zahlreichen File-Sharing-Diensten.

Die Studierenden entwickeln zunächst eine statische Peer-to-Peer-Chat-Anwendung und haben dann die Aufgabe die dynamische Änderung der Gruppenzusammensetzung (Chat Join-/Leave-Operationen) auf effiziente und praktikable Weise zu realisieren.

In einem Versuchsteil zu Middleware-Techniken realisieren die Studierenden eine gRPC (Google RPC)-Anwendung, welche sie mit anderen Middleware-Techniken wie JMS, RMI und Web Services vergleichen.

Schließlich realisieren die Studierenden in einer selbst entwickelten Simulationsumgebung eine verteilte Berechnung in einem größeren Netzwerk. Jeder Knoten im Netzwerk kennt nur seine direkten Nachbarn und hat kein Wissen über die Gesamttopologie. Unter diesen Randbedingungen soll ein beliebiger initiierender Knoten mittels eines von den Studierenden zu entwerfenden verteilten Algorithmus eine Aggregationsfunktion über alle Knoten realisieren, z.B. die Gesamtmenge des noch verfügbaren Plattenspeichers über alle Netzwerkknoten ermitteln. Eine zentrale Kontrolle ist nicht erlaubt, wohl aber ein zentrales Logging, um zu verifizieren, dass der Algorithmus korrekt funktioniert.

Da das Praktikum in einem bereits fortgeschrittenen Semester stattfindet, können die Studierenden eine Programmiersprache ihrer Wahl (C,C#,C++,Java, Python,..) einsetzen und auf Kommunikationsebene die Middleware selbst auswählen (UDP, TCP, JMS, gRPC, WS,..).

Elearning Applet: Verteilte Algorithmen

Computernetzwerke II (7. Semester)

Praktikum Computernetze II

Computernetzwerke erobern die Welt. Nicht zuletzt durch den rasanten Aufstieg des Internets wird ein vertieftes Wissen im Bereich Kommunikationstechnik immer wichtiger.

Das Praktikum Computernetze II nutzt die theoretischen Grundlagen aus den zugehörigen Vorlesungen Computernetze I und Computernetze II, um moderne Netzwerktechnologie konkret anzuwenden.

Im ersten Praktikumsversuch bekommen die Studierenden eine Einführung in das "Next Generation Internet". Das IPv6 Protokoll wird mittelfristig, das bisher im Internet noch vorherrschende IP(v4) verdrängen. Die Studierenden haben die Aufgabe, mit IPv6 Dual Stack Computern und IPv6-fähigen CISCO Routern ein eigenes IPv6 LAN aufzubauen. Sie lernen die für Unternehmen wichtigen Migrationsstrategien von IPv4 zu IPv6 praktisch einzusetzen und sich über 6to4- und Teredo-Tunneltechnologien mit externen IPv6 Servern im Internet zu verbinden. Der IPv6-Datenverkehr wird analysiert, wobei die Studierenden insbesondere die Unterschiede zu den bisherigen Verfahren herausarbeiten müssen.

NAT (Network Address Translation) ist eine zentrale Technologie zur Anbindung von Unternehmens- und Heimnetzen an das öffentliche Internet. Fast jeder, der zuhause einen DSL-Router mit Anbindung an einen Internet Service Provider betreibt, hat eine eingebaute "NAT Box", welche die Umsetzung von öffentlichen und privaten IP Adressen im Netzwerk realisiert. Im NAT-Praktikumsversuch lernen die Studierenden diese Technologie praktisch einzusetzen. Unterschiedliche NAT-Varianten werden mit CISCO-Routern konfiguriert und darüber gezielt ihr Verhalten gesteuert.

Virtual Private Networks (VPNs) sind der Inhalt des darauffolgenden Praktikumsversuchs. Mit Hilfe von "Tunnel"-Technologien werden externe Rechner oder externe Netzwerk in ein Unternehmensnetz sicher eingebunden. Die Studierenden konfigurieren in kleinen Gruppen unterschiedliche Tunneltypen, wie Site-to-Site und End-to-Site VPNs. Dabei lernen sie die unterliegenden Sicherheitstechnologien kennen und analysieren die ausgetauschten Nachrichten.

Im abschließenden Versuch geht es um das Network Management. Wie stellt man jederzeit fest, ob in einem großen Unternehmen die Rechnerinfrastruktur intakt und ohne Leistungsengpässe arbeitet? Die Studierenden lernen den praktischen Umgang mit dem Simple Network Management Protocol (SNMP) und konfigurieren die OpenSource Software Nagios, um ein beispielhaftes Netzwerkszenario zu überwachen. Eine Monitoring-Konsole zeigt ihnen anschließend über eine selbst konfigurierte Logik mit grünen und roten Symbolen, ob es Probleme im Netzwerk gibt.

Alle Versuche setzen eine intensive Vorbereitung der Studierenden mit dem jeweiligen Stoff voraus und werden durch Pre-Lab-Aufgaben ergänzt. Zusätzlich erhalten die Studierenden Aufgaben, die Sie in ihrem Heimnetzwerk ausführen sollen, z.B. um die häusliche Infrastruktur auf IPv6 vorzubereiten

Advanced Networking (Master)

Praktikum Advanced Networking

Das Praktikum Advanced Networking ergänzt die gleichnamige Vorlesung im Informatik Master. Es beinhaltet drei größere Versuche, die sich jeweils über zwei Termine erstrecken und in Teilen Projektcharakter haben. Die Studierenden bereiten die Praktika individuell vor (PreLabs), komplettieren Programmieranteile zwischen den Praktikaterminen und erstellen einen wissenschaftlich fundierten Laborbericht(PostLab).

Das Praktikum umfasst aktuell die folgenden drei Themenbereiche:

Cloud Computing

An konkreten Aufgabenstellungen lernen die Studierenden den Umgang mit Cloud-Ressourcen und –Werkzeugen. Jeder Studierende hat einen eigenen Cloud-Account, mit dem er z.B. Cloud-Ressourcen in Irland, Kalifornien und Sydney zu einer verteilten Anwendung verknüpft. Neben Zugriffen mittels Kommandozeile und Rest-API, werden auch Cloud-Plugins für IDEs eingesetzt, um eine fehlertolerante Cloud-Anwendung oder ein Load-Balancing-Szenario zu realisieren, welches anschließend analysiert und bezüglich seiner Leistung vermessen wird.

Software Defined Networking

Die Virtualisierung von Netzwerk-Equipment und die Verwendung von offenen Plattformen zur Entwicklung neuartiger Netzwerkgeräte stehen im Mittelpunkt dieses Versuchsteils. Basierend auf OpenFlow und der Floodlight-Controller-Umgebung entwickeln die Studierenden Netzwerkprogramme für dedizierte praktische Probleme. Für die Ausführung wird sowohl physikalische OpenFlow-Hardware als auch eine vSwitch-basierte Simulationsumgebung eingesetzt. Idealerweise ersetzt diese Technologie in der Zukunft proprietäre Router und Switches.

Distributed Hash Tables

Die Speicherung von Daten auf einem zentralen Server ist häufig aus Zuverlässigkeits- oder Skalierbarkeitsgründen nicht ideal. Peer-to-Peer-Lösungen, in denen Daten (redundant) an mehreren Orten gespeichert werden, gewinnen auch im Kontext von Cloud-Lösungen immer mehr an Bedeutung. Dieser Praktikumsversuch hat Projektcharakter und die Studierenden entwickeln eine konkrete verteilte Datenspeicherung basierend auf dem Ansatz der Chord Distributed Hash Tables. Das Leistungsverhalten des eigenen Programms wird über Messungen analysiert.

Equipment

  • 20 dual and quad-core PCs (64-bit, 2-4 GB RAM, 2 HDD, WLAN, 3 Ethernet ports)
  • 24 standard routers (CISCO 871), switches, hubs, WLAN access Points
  • PCs with dual boot Windows 7/Suse Linux
  • Standard IDEs Eclipse, NetBeans, KDevelop and Microsoft Visual Studio 
  • All workstations have access to a shared printer and the Internet.
  • All computers can be installed and reset automatically from a central installation and configuration server (OPSI).

Internships and Tutorials

The internships usually take place in small groups of two to three students and are structured in 4-6 attempts per internship. For each experiment there is a detailed practical training manual with pre-lab and post-lab tasks. The internships are supported by an online e-learning portal with additional learning materials and upload areas.

The computers are arranged in 5 islands with four computers each, each of which is connected to a LAN. The islands are arranged in such a way that the laboratory groups can work together in a concentrated and efficient manner. The programming languages C, C#, C++, Java and Python, as well as the middleware technologies JMS, RMI, CORBA and Web Services (AXIS2) are used in the experiments.