Moderne Computersysteme zeichnen sich durch die Fähigkeit aus, verschiedenste Anforderungen in den unterschiedlichsten Bereichen erfüllen zu können. Ein Hauptgrund dafür ist die einfache Konfiguration durch individuelle Auswahl von Systemkomponenten. Hierbei ist auch der Anschaffungspreis ein entscheidender Faktor, weshalb viele Hersteller unterschiedliche Lösungen anbieten.
Diese Vielfalt an Hardware bewirkt auch, daß immer neue Programme zu ihrer Ansteuerung entwickelt werden müssen. Diese Gerätetreiber werden oft vom Hersteller selbst zur Verfügung gestellt, sind aber stets betriebssystemspezifisch und selten werden die Programm-Quellen offengelegt.
Für Forschungssysteme wie das mikrokernbasierte Dresden Real-Time Operating System existieren keine Gerätetreiber der Hersteller. Sie sind aber trotzdem nötig, um auch Geräte ansteuern zu können, die im Gegensatz zur Standard-Hardware wie Prozessor, DMA-Controller, PIC usw. von System zu System variieren. Die selbständige Entwicklung von Treibern für jedes Gerät ist aus zwei Gründen keine Lösung: 1. sind umfangreiche Spezifikationen der Hardware, wenn überhaupt verfügbar, teuer und mit rechtlichen Einschränkungen für die Weiterverwendung verbunden, und 2. sind Entwicklung und Test von Gerätesteuerprogrammen sehr zeitaufwendig.
Eine bessere Lösung ist die Portierung von Gerätetreibern anderer Betriebssysteme auf die Zielarchitektur mit dem Anspruch, den Originaltreiber möglichst nicht zu verändern, um den Wartungsaufwand gering zu halten. Arbeiten wie [Sta96] haben bewiesen, daß es möglich ist, den Gerätetreiber aus dem monolithischem Originalsystem herauszulösen und unverändert in eine mikrokernbasierte Architektur zu integrieren.
Der nächste logische Schritt ist eine Generalisierung dieses treiberspezifischen Prozesses für (nahezu) alle Treiber eines Betriebssystems. Mit diesem Thema setzt sich diese Arbeit auseinander und beschreibt den Prozeß der generischen Gerätetreiberportierung vom monolithischen Linuxkern auf das mikrokernbasierte DROPS.