| 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
Bearbeiter
| |