Betriebssysteme und Computernetze

Betriebssysteme und Computernetze

Profil und Zielsetzung

Das Labor Betriebssysteme und Computernetze unterstützt die Vorlesungen der Studiengänge Angewandte Informatik, Informatik/Wirtschaft+ und Wirtschaftsinformatik. Es bietet den Studierenden Gelegenheit, Problemstellungen in diesen Bereichen nachzubilden und gezielt Werkzeuge und Lösungsmethoden einzusetzen, die sie zuvor in den Vorlesungen kennengelernt haben. 

Die Laborumgebung wird ebenfalls genutzt für Bachelor- und Masterarbeiten, sowie für Projektarbeiten und Drittmittelprojekte.

Im Labor im Steinbeis-Gebäude der Hochschule finden statt:

Praktika

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. Ü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...

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.

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. Optional ist ein Versuch zur Systemprogrammierung mit Python.

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 Wirtschafsinformatik (-plus) 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 Praktikum sind die Teilnehmer vertraut mit der in der Praxis wichtigen Socketprogrammierung von Netzwerkanwendungen.

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 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 zu betreiben. 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.

In einem Versuch zum TCP Congestion Control bauen die Studierenden ein Python-Verbindung zu einem Server in Sydney auf und beobachten den Datenverkehr bei einem großen Datei-Download. Neuere Verfahren wie das TCP Cubic Congestion Control werden so praktisch erfahrbar.

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 Icinga, 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

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.

Praktika und Übungen

Die Praktika finden in der Regel in Kleingruppen von zwei bis drei Studierenden statt und strukturieren sich in je 4-6 Versuche pro Praktikum. Zu jedem Versuch existiert eine ausführliche Praktikumsanleitung mit Pre-Lab und Post-Lab-Aufgaben. Die Praktika werden unterstützt durch ein Online-E-Learning-Portal mit zusätzlichen Lernmaterialien und Uploadbereichen.

Die Rechner sind in 5 Inseln mit je vier Rechnern angeordnet, welche jeweils untereinander zu einem LAN verbunden sind. Räumlich sind die Inseln so angeordnet, dass die Laborgruppen konzentriert und effizient zusammenarbeiten können. In den Versuchen werden die Programmiersprachen C, C#, C++, Java und Python, sowie die Middleware-Technologien JMS, RMI, gRPC und Web Services (AXIS2) eingesetzt.

Ausstattung

  • 24 Multi-Core High Speed PCs mit mehreren Netzwerkkarten
  • Dual Boot Windows / OpenSuse Linux
  • Standard CISCO Router, Switches, Hubs, WLAN Access Points
  • Zodiac und HP OpenFlow-Switches
  • Standard-IDEs Eclipse, PyCharm, KDevelop und Microsoft Visual Studio
  • Natives IPv6, Netzwerktool-Suite, gRPC, openVPN, Icinga, NS3
  • Alle Rechner können von einem zentralen Installations- und Konfigurationsserver automatisch installiert und rückgesetzt werden.