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