%****************************************************************************
%** Copyright 2002, 2003, 2005 by Lukas Ruf, <ruf@topsy.net>
%** Information is provided under the terms of the
%** GNU Free Documentation License <http://www.gnu.org/copyleft/fdl.html>
%** Fairness: Cite the source of information, visit <http://www.topsy.net>
%****************************************************************************

%Example structure for an introduction

%****************************************************************************
%** Copyright 2002, 2003 by Lukas Ruf, <ruf@topsy.net>
%** Information is provided under the terms of the
%** GNU Free Documentation License <http://www.gnu.org/copyleft/fdl.html>
%** Fairness: Cite the source of information, visit <http://www.topsy.net>
%****************************************************************************

\chapter{\label{intro}Einleitung}
Die Betriebssystemprogrammierung ist ein interessantes und anspruchsvolles Betätigunsfeld. Sie ist nicht nur von Bedeutung für die Entwicklung und Pflege dieser Softwareprodukte selbst, sondern bietet auch den Entwicklern von Anwendungsprogrammen die Wissensgrundlage für das Schreiben von effizienten und zuverlässigen Anwendungen innert kurzer Zeit. Aus diesem Grund entstand an der ETH Zürich das Bedürfnis, für Unterrichtszwecke ein von den Sachzwängen produktiv einzusetzender Software freies, eigenes Betriebssystem zu schaffen, um es im Rahmen der Lehrtätigkeit einsetzen zu können - TOPSY, das Teachable OPerating SYstem \cite{topsy}.\\
TOPSY ist ein kompaktes und modulares Betriebssystem mit präemptivem Multitasking \cite{patterson}. Es wurde am Elektrotechnik- und Informationstechnologiedepartement der ETH Zürich von George Fankhauser entwickelt und in der Folge bis zum Ende des Sommersemesters 2006 in der Lehre verwendet. \\
Um eine leistungsfähige Speicherverwaltung erweitert und unter dem Namen TOPSY v3 neu lanciert wurde TOPSY in einer Masterarbeit von Lukas Ruf mit dem Ziel, dieses Betriebssystem auch als Node~OS\cite{anta} auf Netzwerkgeräten einzusetzen. Ausserdem arbeiteten rund ein Dutzend Studenten an verschiedenen Projekten zur Weiterentwicklung und Portierung von TOPSY und TOPSY v3 mit.

\section{\label{intro:motivation}Motivation}
Im Rahmen einer Semesterarbeit stellte sich die Aufgabe, dieses Betriebssystem auf eine neue Plattform zu portieren. Diese abwechslungsreiche und herausfordernde Arbeit hatte zum Inhalt, den wenigen auf Netzwerkprozessoren \cite{ixp2k4prm,ixp1k2prodbrief,np4gs3} etablierten Betriebssystemen ein flexibles, freies, kompaktes Betriebssystem mit einer fortschrittlichen Architektur gegenüberstellen zu können, das auch in Zukunft aktiv weiterentwickelt werden soll. Ausserdem bot es die Gelegenheit, wertvolle praktische Erfahrung und tiefe Einblicke in die Betriebssystemprogrammierung zu gewinnen und an einem in der praxiserprobten Produkt mitzuarbeiten. \\

\section{\label{intro:outline}Dokumentstruktur}
Dieses Dokument führt in die betroffenen Themenbereiche ein und legt Rechenschaft über das Vorgehen bei der Erfüllung dieser Aufgabe ab. In den verbleibenden Abschnitten dieses Berichts geben 
wir zunächst einen Überblick über relevante Vorleistungen anderer Entwickler, auf denen unsere Arbeit aufbaut. Im Anschluss führt Kapitel \ref{problem} in die Einzelheiten der gestellten Aufgabe ein, 
und Kapitel \ref{design} beschreibt die Vorgehensweise, die wir wählten, um unsere Arbeit effizient angehen zu können und zuverlässig zu evaluieren und zu validieren. Das nachfolgende Kapitel geht 
auf die Einzelheiten der Implementation ein und beschreibt in je einem Abschnitt die vorgenommenen Änderungen an der Codebasis von TOPSY. Die Folgekapitel beurteilen die Erreichung der 
gesteckten Ziele, geben einen Überblick über die verwendete Methodik zur Evaluation und beleuchten ohne Anspruch auf Vollständigkeit diejenigen Bereiche, die sich für Verbesserungen und 
Erweiterungen der Funktionalität anbieten. Der Bericht schliesst mit einer Zusammenfassung und einigen Eindrücken, die für vergleichbare Arbeiten von Bedeutung sein könnten.\\
In den Anhängen finden sich zusätzliche Informationen, die es dem Leser erlauben, unsere Arbeit nachzuvollziehen: Die Konfiguration der verwendeten Toolchain und Angaben zur Funktionsweise  und 
Veränderungen des Binary Patchers, Angaben zum Code Cleanup, der aufgestellte Zeitplan sowie die Aufgabenstellung, die dieser Arbeit zugrunde liegt.

\section{\label{intro:acks}Acknowledgements}
Der grösste Dank gebührt unserem Betreuer, Herrn Dr. Lukas Ruf. Es war die angenehme Art der Zusammenarbeit, seine Begeisterung für das Projekt, und nicht zuletzt sein Erfahrungsschatz und das 
Fachwissen, was uns überhaupt befähigte und motivierte, diese Arbeit erfolgreich auszuführen. Zudem möchten wir Herrn Prof. Bernhard Plattner danken für die Bereitstellung der Ressourcen dieser 
spannenden Semesterarbeit, seine konstruktive Kritik und die Führung seines Departements, die eine Arbeitsatmosphäre wie die beschriebene zulässt. \\
Nicht unerwähnt bleiben darf auch Dipl. Ing. Hampa Hug, der mit der Entwicklung des ARM-Emulators \footnote{Wir sind uns der Tatsache bewusst, dass der Gebrauch dieses Begriffes der geläufigen Definition  zuwiderläuft. Da aber der Autor diese Software ebenfalls als Emulator bezeichnet und sich dieser Begriff während der Entwicklung eingebürgert hatte, verzichten wir darauf, die Software als Emulator und den Vorgang als Simulation zu bezeichnen, und verwenden im Interesse der Einheitlichkeit durchgängig die Begriffe Emulator und Emulation. } eine hervorragende Leistung vollbracht und uns einen unschätzbaren Dienst erwiesen hat, und ohne dessen Hilfsbereitschaft und kompetente Unterstützung dieser Bericht nicht in seiner heutigen Form vorliegen könnte.