Systemsoftware und Verteilte Systeme

iPosix - Ein objektorientierter Kernel in C++

Individuelles Projekt (Diplom), Bachelorarbeit

Bild

Abgeschlossen am 14. September 2009 von Eike Möhlmann und Janko Timmermann

Ansprechpartner:

Themengebiete

  • Betriebssysteme
  • Software Engineering

Hintergrund

iPosix steht für Individual Project: Operating System 2009. iPosix ist ein Lehrbetriebssystem, welches im Rahmen einer Bachelorarbeit von Eike Möhlmann und Janko Timmermann erstellt wurde. Es bietet den Studierenden ein Basisbetriebssystem, das zum Beispiel im Rahmen eines Praktikums eingesetzt und von den Studierenden erweitert werden kann, um bewusst fehlende Funktionalität zu erweitern. Aufgrund eigener Erfahrungen in Vorlesungen, Praktika und Seminaren der Praktischen Informatik, aber hauptsächlich im Bereich der Betriebssystemlehre, entstand die Idee, zukünftigen Studierenden ein solches Basisbetriebssystem und eine entsprechende saubere und experimentierfreudige Arbeitsumgebung zur Verfügung zu stellen.

Das Lehrbetriebssystem iPosix zeichnet sich insbesondere dadurch aus, dass theoretische Konzepte mit Methoden des Software-Engineering verknüpft wurden. So wurden konsequent sogenannte Designpattern und Modellierungswerkzeuge wie UML zur Konzeptionierung und anschließenden Implementierung herangezogen, was eine hohe Qualität der Quelltexte zur Folge hat und den Studierenden das Arbeiten mit iPosix erleichtert. Weiterhin verringert es den Einarbeitungsaufwand für Studierende, da diese gelernte Muster wiedererkennen und anwenden können.

Die Zielarchitektur für iPosix sind Intel-kompatible Rechner, da diese vor allem im privaten Bereich sehr weit verbreitet sind. So ist es den StudentInnen möglich, mit dem Betriebssystem direkt auf dem eigenen Rechner und nicht ausschließlich mit Hilfe von spezieller Hardware, Emulatoren oder anderen Simulationsumgebungen arbeiten zu müssen.

Um die Modellierung auch in der Implementierung widerzuspiegeln, wurde ein objektorientierter Ansatz gewählt, da StutdentInnnen eben diesen in ihrer Ausbildung vermittelt bekommen. Dafür wurden Funktionalitäten in
Module und Klassen gekapselt. Die Verwendung der Programmiersprache C++ erlaubt dabei gleichermaßen die Möglichkeit der Auseinandersetzung mit der Hardware als auch ausschließlich mit der abstrakteren eher konzeptionellen Ebene der Module und Klassen. Zusätzlich stehen Standardbibliotheken zur Verfügung, welche nicht durch eigene Implementierungen nachempfunden werden müssen. Damit wird der Fokus auf die eigentliche Programmierung des Betriebssystems und das Erlernen von Betriebssystemkomponenten gelegt und Implementierungsdetails werden versteckt. Diese Kombination erlaubt somit eine schnelle und prototypische Arbeit. Durch den objektorientierten Ansatz wurde eine saubere Trennung von architekturabhängigen Komponenten und architekturunabhängigen Komponenten erreicht.

Weiterhin wurden konsequent Komponenten und deren Nutzungsstrategie getrennt. Zum Beispiel können Hauptspeicherverwaltungen mit unterschiedlichem Funktionsumfang und verschiedenen Nutzungsstrategien einfach programmiert und in das Betriebssystem integriert werden. Diese Kombinationen könnten nun im Betrieb oder aber auch vor Inbetriebnahme durch eine andere Kombinationen ersetzt werden. Das Vergleichen und Bewerten der jeweiligen Komponenten und Strategien kann dadurch schnell und einfach erfolgen.

Die Erarbeitung von iPosix war naturgemäß eine stark konzeptionell und praktisch geprägte Aufgabe. Der Fokus lag somit auf der hohen Qualität und dem großen Umfang der Implementierung. Insgesamt wurden rund 25.000 Zeilen Quelltext erstellt.

Durch die systematische Trennung von Hardwarekomponenten, Betriebssystemkomponenten und Nutzungsstrategien, lässt sich iPosix sehr gut im Bereich der Lehre und Forschung einsetzen. Als zukünftige Arbeiten sind Netzwerkanbindungen zur Lehre und Erforschung von verteilten Systemen, sowie die Portierung einiger Benutzerprogramme und dynamisches Laden von Bibliotheken in Planung. iPosix wird bereits als Lehrbetriebssystem im Rahmen von weiteren Abschlussarbeiten eingesetzt und soll in Zukunft insbesondere in Praktika verwendet werden.

Vorkenntnisse

  • C++
  • Betriebssystemarchitektur