Advancing Operating Systems via Aspect-Oriented Programming

Operating system kernels are among the most complex pieces of software in existence to- day. Maintaining the kernel code and developing new functionality is increasingly compli- cated, since the amount of required features has risen significantly, leading to side ef fects that can be introduce...

Descripción completa

Guardado en:
Detalles Bibliográficos
Autor principal: Engel, Michael
Otros Autores: Freisleben, Bernd (Prof. Dr.) (Orientador)
Formato: Dissertation
Lenguaje:inglés
Publicado: Philipps-Universität Marburg 2005
Materias:
Acceso en línea:Texto Completo PDF
Etiquetas: Agregar Etiqueta
Sin Etiquetas, Sea el primero en etiquetar este registro!

Betriebssystem-Kernel zählen zu den komplexesten Software-Systemen, die heutzutage verwendet werden. Die Wartung des Kernel-Codes und die Entwicklung neuartiger Funk- tionalität wird zunehmend komplizierter, da die Menge an benötigten Eigenschaften eines Kernels stetig steigt. Dies kann zu unabsichtlich in den Code eingebrachten Nebeneffekten führen, wenn ein Teil des Systems geändert wird, der zu einem anderen Kontext gehört. Software-Entwickler modularisieren ihre Code-Basis in einzelne funktionale Einheiten. Einige Funktionalität – auch “concern” genannt – die im Kernel benötigt wird, gliedert sich nicht sauber in die vorgegebene Modularisierungsstruktur ein; die zugehörigen Codestücke sind dann oft über das gesamte System verteilt und ihre Implementierung ist mit der Imple- mentierung anderer Funktionalit ̈at vermischt. Diese sogenannten “crosscutting concerns” (querschneidende Belange) sind besonders schwierig in der Handhabung, da Änderungen an einem solchen crosscutting concern erfordern, dass alle die über die gesamte Codebasis verteilten relevanten Stellen gefunden und modifiziert werden. Aspekt-orientierte Software-Entwicklung (Aspect Oriented Software Development, AOSD) ist ein Ansatz zur einfacheren Handhabung von crosscutting concerns, der den zugehörigen Code in separate Module herausfaktorisiert. Der in diesen Modulen enthaltene sogenannte ”Advice-Code” wird dann mit der ursprünglichen Code-Basis nach Vorgabe einer sogenan- nten Pointcut-Beschreibung verwoben, die aus einer Menge an Interaktionspunkten mit dem ursprünglichen Code, den sog. “Join Points” besteht. Um AOSD im Rahmen von Betriebssystemen zu verwenden, müssen aspektorientierte Werkzeuge zur Unterstützung für den dort vorherrschenden prozeduralen Programmierstil sowie eine unterstützende Infrastruktur für das Weben von Aspekten zur Verfügung ste- hen. Viele Interaktionen mit dem Kernel sind dynamisch, daher ist ein dynamischer Weber erforderlich, der Aspekte zur Laufzeit in das System einfügen und wieder aus diesem ent- fernen kann. Diese Arbeit stellt eine Erweiterung der Programmiersprache “C” vor, die aspektori- entierte Programmierung unterstützt. Darauf aufbauend werden zwei Werkzeugsätze für dynamisches Weben – TOSKANA und TOSKANA-VM – vorgestellt, die dynamische Aspekte im monolithischen NetBSD-Kernel bzw. in einem Linux-Kernel realisieren, die auf einer In- frastruktur aufbauen, die aus einem L4-Microkernel und einer unterstützenden virtuellen Maschine besteht. Auf der Basis von TOSKANA werden Anwendungen für diese dynami- sche Aspekttechnologie vorgestellt und bewertet. Ein Ausblick auf eine aspekt-orientierte Kernelstruktur, die mit Hilfe von dynamischen Aspekten Kohärenz sicherstellt und crosscutting concerns handhabt und zugleich die Sys- tementwicklung durch den Einsatz domänenspezifischer Programmiersprachen erleichtert, schließt die Arbeit ab.