Universität Karlsruhe
Identifikation und Modellierung von Komponenten im SawMill-Betriebssystem

Diplomarbeit (abgeschlossen)

Die Arbeit befaßt sich mit dem automatischen Extrahieren von Betriebssystemdiensten und -komponenten aus existierendem monolithischem Linux-Code, um ein aus Modulen und Aspekten konfigurierbares Multisever-Betriebssystem (SawMill-Linux) erzeugen zu können.

Die aktuelle Entwicklung von Betriebssystemen geht weg von monolithischen Kernen zu modularen Systemen, speziell Mikrokernsystemen. Der Zweck dieser Entwicklung ist es, robuste Betriebssysteme zu erhalten, die man leicht konfigurieren kann. Die einzelnen Dienste eines Betriebssystems wie beispielsweise Speicherverwaltung und Dateisystem bilden dabei eigenständige Systemteile, die als Prozesse auf Anwendungsebene laufen. Der eigentliche Betriebssystemkern besteht dann nur noch aus Infrastrukturoperationen und natürlich der Verwaltung von Instanzen wie beispielsweise Prozessen. Im Extremfall des L4-Mikrokerns sind Interprozeßkommunikationsoperationen (engl. inter process communication, IPC) die einzigen Infrastrukturoperationen im Kern. Da die Systemdienste auf Anwendungsebene laufen und damit jeweils eigene Adreßräume erhalten, sind sie gegeneinander geschützt. Versehentliche Manipulationen eines Dienstes im Bereich eines anderen und daraus folgende Systemabstürze vermeidet man somit. Da die Systemdienste als eigenständige Prozesse laufen und auch im Quellcode entsprechend separiert notiert sind, kann man ein Betriebssystem durch Auswahl entsprechender Prozesse und Quellen konfigurieren. Einzelne Prozesse bzw. Quelldateien sind als Konfigurationsgranularität noch zu grob. Gerade Kommunikations- und Synchronisationscode kommen in gleicher oder ähnlicher Form in verschiedenen Prozessen und Quelldateien vor. Man möchte auch diese Kommunikations- und Synchronisationseigenschaften eines Prozesses konfigurieren. Diesen Ansatz verfolgt die Entwicklung des SawMill-Linux-Systems. Da es noch kein vollständiges solches Betriebssystem gibt und es sehr aufwendig ist ein solches neu zu schreiben, möchte man für die einzelnen Systemdienste bereits existierenden Quellcode wiederverwenden. Quellcode existiert aber nur für monolithische Kerne, wie beispielsweise Linux. Der Ansatz von SawMill-Linux ist daher, entsprechende Systemdienste aus existierendem Linux-Quellcode zu extrahieren. Die Diplomarbeit bearbeitet daher folgende Aufgaben:

  • Definition eines Komponentenmodells, das so feingranular ist, daß es bis auf die Ebene von Kommunikations- und Synchronisationscodestücken reicht, aber auch den Code ganzer Prozesse abdeckt.
  • Evaluation von Werkzeugen zur Analyse von im gcc-Stil geschriebenen Linux-Quellen und Auswahl eines geeigneten Werkzeugs, um Komponenten aus dem existierenden Code extrahieren zu können. Am Lehrstuhl Goos ist ein solches System in Entwicklung (CRECODER), das aus dem Metaprogrammiersystem RECODER für Java abgeleitet ist.
  • Extrahieren von Komponenten aus Linux-Code mit dem gewählten Werkzeug entsprechend des gewählten Komponentenmodells. Da dies im Rahmen der Diplomarbeit natürlich nicht für das gesamte System möglich ist, wird in der Diplomarbeit nur der Tulip-Netzwerkkartentreiber betrachtet.
  • Visualisierung der gefundenen Komponentenzerlegung.
  • Nutzung der Ergebnisse aus der Analyse des aktuellen SawMill-Linux-Codes, um die Abhängigkeiten der einzelnen Systemteile zu dokumentieren und damit die gegenwärtig undurchsichtige Systemstruktur und den undurchsichtigen Konfigurationsprozeß zu vereinfachen und verbessern. Da dies im Rahmen der Diplomarbeit natürlich nicht für das gesamte System möglich ist, wendet die Arbeit die Erkenntnisse auf einen bereits gut verstandenen Systemteil (den Tulip-Netzwerkkartentreiber) an. Die Ergebnisse sind somit auch interpretierbar.

Betreuer

Alumni
Dr. Dirk Heuzeroth
Dr. Elke Pulvermüller
Partner
Dr. Kevin Elphinstone

Bearbeiter

Ex-Studenten
Stephan Wagner
Login
Links