Diplomarbeit, 2007
178 Seiten, Note: 2,7
1 EINLEITUNG
1.1. Motivation
1.2. Beschreibung der Aufgabenstellung
1.3. Gliederung der Arbeit
2 GRUNDLAGEN
2.1. Specification
2.1.1. XML
2.1.2. SVG
2.1.2.1. Aufbau von SVG Dateien
2.1.2.2. Grafische Primitive
2.1.2.3. Text
2.1.2.4. Elemente zur Strukturierung
2.1.2.5. Sonstige Elemente und Funktionen von SVG
2.1.2.6. Beispiele
2.1.3. XSL Transformations (XSLT)
2.1.3.1. Aufbau und Funktionsweise von XSLT Stylesheets
2.1.3.2. Beispiel
2.1.4. XML Metadata Interchange Format (XMI)
2.2. Gathering
2.2.1. KProbes, JProbes und Kretprobes
2.2.2. Systemtap
2.2.2.1. Funktionsweise von Systemtap
2.2.2.2. Welche Tracingdaten können durch Systemtap Probes gesammelt werden ?
2.2.2.3. Systemtap Skriptsprache
2.2.2.3.1. Definition von Systemtap Probes
2.2.2.3.2. Definition von Hilfsfunktionen
2.2.2.3.3. Ausgabe durch Systemtap
2.2.2.3.4. Beispielskript
2.3. Analyzing-and-Visualizing
2.3.1. LTT
2.3.2. LTTng und LTTV
2.3.2.1. LTTV Viewer
2.3.3. Verbindung von Systemtap und LTTV Viewer
3 ANFORDERUNGSANALYSE UND AUSWAHL DER WERKZEUGE
3.1. Specification
3.1.1. Beschreibung der Schablonen
3.1.2. Erstellung der Schablonen
3.1.3. Transformation der Schablonen
3.1.4. Zuordnung der Schablonen, Transformationen und des Quellcodes zu den Tracingevents
3.2. Gathering
3.3. Analyzing-and-Visualizing
4 PROTOTYPISCHER ENTWURF UND IMPLEMENTIERUNG DES TOOLKITS
4.1. Specification
4.1.1. Möglichst automatische Erstellung der Systemtap Probes sowie der LTTV Eventdefinitionen
4.1.1.1. Finden des Quellcodes der zu instrumentierenden Kernel- und Kernelmodulfunktionen
4.1.1.2. Auslesen der Parameter- und Rückgabetypen sowie der Parameternamen der zu instrumentierenden Funktionen aus deren Quellcode
4.1.1.3. Weiterverarbeitung der Daten im XML Format
4.1.1.4. Erstellung der Systemtap Probes
4.1.1.5. Erstellung der LTTV Eventdefinitionen
4.1.2. Zuordnung und Erstellung der SVG Schablonen sowie der dazugehörigen XSLT Stylesheets
4.2. Gathering
4.3. Analyzing-and-Visualizing
4.3.1. Erstellung von Modulen für den LTTV Viewer
4.3.2. Finden aller einem Event zugeordneten Schablonen
4.3.3. Anzeige des Quellcodes
4.3.4. Darstellung der SVG Dateien durch das LTTV Modul
4.3.5. Einsatz und Ergebnisse des neuen LTTV Moduls
4.4. Verwendung von höherwertigen Werkzeugen zur Erstellung von SVG Schablonen und XSLT Transformationen
4.4.1. Erstellung der SVG Dateien durch einen SVG Editor
4.4.2. Verwendung von UML Diagrammen als Grundlage zur Erstellung von SVG Schablonen sowie der dazugehörigen XSLT Stylesheets am Beispiel von Sequenzdiagrammen
4.4.2.1. Erstellung der UML Diagramme
4.4.2.2. Konvertierung der UML Diagramme nach SVG
4.4.2.2.1. Aufbau von uml2svg.xsl (für Sequenzdiagramme relevanter Anteil)
4.4.2.2.2. Erweiterung von uml2svg.xsl
4.4.2.3. Automatische Erstellung der zu den SVG Dateien passenden XSLT Transformationen
5 PROTOTYPISCHES TESTEN AM BEISPIEL DES USB MAUSTREIBERS „USBMOUSE“
5.1. USB Grundlagen
5.2. Input Subsystem
5.3. USB Maustreiber „usbmouse“
5.4. Instrumentierung des Maustreibers und Visualisierung der Tracingdaten
5.5. Ergebnisse
6 FILTERUNG DER TRACINGDATEN
6.1. Filterung durch Verwendung des Systemtap Target PID Mechanismus
6.2. Dynamische Filterung anhand mehrerer PIDs
7 ANWENDUNGSBEISPIEL: ERMITTLUNG UND VISUALISIERUNG DER ZUSTÄNDE VON FILEDESKRIPTOR-TABELLEN
7.1. Aufgabenstellung
7.2. Filedeskriptor Tabellen und Openfiletable im realen System
7.3. Erstellung der Systemtap Skripte
7.4. Erstellung der SVG Schablonen und der XSLT Stylesheets
7.5. Erstellung der Prozesse
7.6. Ergebnisse
8 ZUSAMMENFASSUNG UND AUSBLICK
8.1. Zusammenfassung
8.2. Ausblick
Die vorliegende Arbeit zielt auf die Entwicklung eines generischen Systems ab, das Tracingdaten des Linuxkerns sammelt und diese mittels benutzerdefinierter Visualisierungsschablonen sowie Transformationsregeln grafisch aufbereitet. Zudem soll das System den korrespondierenden Kernel- oder Kernelmodulquellcode zu jedem Tracingevent identifizieren und anzeigen, um komplexe Systemabläufe transparent darzustellen.
1.2. Beschreibung der Aufgabenstellung
Ziel dieser Arbeit ist es, ein generisches System prototypisch zu entwickeln, das durch das Zusammenspiel verschiedener Werkzeuge, Tracingdaten des Linuxkernels und seiner Module sammeln und diese unter Verwendung von benutzerdefinierten Visualisierungsschablonen und Transformationsregeln visualisieren kann. Außerdem soll zu jedem Tracingevent der entsprechende Kernel- bzw. Kernelmodulquellcode gefunden und angezeigt werden.
Das System soll es ermöglichen, benutzerdefinierte Abläufe, Zusammenhänge und Implementierungssichten in Abhängigkeit der gesammelten Tracingdaten darstellen zu können. Die Visualisierung basiert dabei auf der Idee, dass der Benutzer Visualisierungsschablonen und Transformationsregeln definieren kann. Wird im Traceviewer ein Tracingevent vom Benutzer ausgewählt, soll eine dem Tracingevent zugeordnete Visualisierungsschablone ausgewählt, durch die dazugehörigen Transformationsregeln in Abhängigkeit der Eventdaten verändert und schließlich angezeigt werden.
Die Werkzeuge des zu entwickelnden Systems lassen sich in drei Gruppen einteilen; jede Werkzeuggruppe ermöglicht es dem Benutzer, einen spezifischen Aufgabenkomplex zu bearbeiten:
1) Specification (Instrumentierung des Kernels und/oder seiner Module zur Sammlung der Tracingdaten, Erstellung der Visualisierungsschablonen, Transformationsregeln, Zuordnungen der Tracingevents zu den Visualisierungsschablonen und den Transformationsregeln)
2) Gathering (Sammlung der Tracingdaten)
3) Analyzing-and-Visualizing (Darstellung der Tracingdaten, Anwendung der Transformationen auf die Visualisierungsschablonen, Darstellung der Visualisierungen, Quellcodeanzeige)
Für jede Teilaufgabe muss u.a. untersucht werden, welche Werkzeuge dafür bereits existieren, über welche Eigenschaften diese verfügen und welche Werkzeuge neu erstellt werden müssen.
Einige Einsatzmöglichkeiten des Systems sollen anhand von Beispielen demonstriert werden. Dabei soll auch gezeigt werden, wie der Benutzer die Werkzeuge des Systems nutzbringend einsetzen kann.
1 EINLEITUNG: Dieses Kapitel motiviert die Analyse des Linuxkerns durch Tracingtools und beschreibt die Zielsetzung sowie die Gliederung der Arbeit.
2 GRUNDLAGEN: Hier werden die verwendeten Technologien wie XML, SVG, XSLT, Systemtap und LTT/LTTV vorgestellt und deren Einordnung in das Gesamtsystem erläutert.
3 ANFORDERUNGSANALYSE UND AUSWAHL DER WERKZEUGE: Dieses Kapitel diskutiert die Anforderungen an die Toolkette und begründet die Auswahl der Werkzeuge für die Phasen Spezifikation, Sammlung und Visualisierung.
4 PROTOTYPISCHER ENTWURF UND IMPLEMENTIERUNG DES TOOLKITS: Hier wird der Entwurf des Gesamtsystems beschrieben, inklusive der automatisierten Erstellung von Systemtap-Probes und Eventdefinitionen sowie der Visualisierungslogik.
5 PROTOTYPISCHES TESTEN AM BEISPIEL DES USB MAUSTREIBERS „USBMOUSE“: Anhand des USB-Maustreibers wird die praktische Anwendung des entwickelten Systems zur Tracingdaten-Sammlung und Visualisierung demonstriert.
6 FILTERUNG DER TRACINGDATEN: Dieses Kapitel stellt Methoden zur PID-basierten Filterung von Tracingdaten vor, um die Systemlast bei der Datenerhebung zu reduzieren.
7 ANWENDUNGSBEISPIEL: ERMITTLUNG UND VISUALISIERUNG DER ZUSTÄNDE VON FILEDESKRIPTOR-TABELLEN: Hier wird ein weiteres, komplexeres Anwendungsbeispiel zur Visualisierung der Zustandsänderungen von Filedeskriptor-Tabellen in der Betriebssystemausbildung erörtert.
8 ZUSAMMENFASSUNG UND AUSBLICK: Das letzte Kapitel fasst die Ergebnisse zusammen und diskutiert potenzielle Erweiterungen für zukünftige Entwicklungen.
Linuxkern, Tracing, Systemtap, Visualisierung, SVG, XSLT, LTTV, XML, Instrumentierung, Filedeskriptor, Prozessanalyse, Kernelmodule, Quellcode-Visualisierung, Debugging, XMI
Die Arbeit befasst sich mit der Entwicklung eines generischen, prototypischen Systems zur Instrumentierung und flexiblen grafischen Visualisierung von Prozessen innerhalb des Linuxkernels.
Die Arbeit kombiniert Linux-Kernel-Tracing (mittels Systemtap), XML-basierte Datendefinition, Vektorgrafik-Visualisierung (SVG) und XSLT-Transformationen zur dynamischen Darstellung von Systemzuständen.
Das primäre Ziel ist es, Benutzern zu ermöglichen, komplexe, benutzerdefinierte Implementierungssichten auf das laufende Linux-System zu erstellen, ohne den Kernel bei jeder Änderung neu kompilieren zu müssen.
Es wird ein systematischer Software-Engineering-Ansatz angewandt: Anforderungsanalyse, Architektur-Design, prototypische Implementierung und Validierung durch praktische Anwendungsbeispiele.
Der Hauptteil gliedert sich in die Spezifikation, das Tracing (Gathering) und die Visualisierung. Er enthält den Entwurf des Toolkits, die algorithmische Umsetzung der Datentransformation und zwei Fallstudien (USB-Treiber und Filedeskriptor-Tabellen).
Linuxkern, Tracing, Systemtap, Visualisierung, SVG, XSLT, LTTV, XML, Instrumentierung, Filedeskriptor.
Systemtap wurde gewählt, da es eine dynamische Instrumentierung ohne Kernelpatch ermöglicht und sich im Vergleich zu alternativen Tracingsystemen am einfachsten in das entwickelte Toolkit integrieren ließ.
Die Transformation erfolgt mittels XSLT-Stylesheets, welche XML-Daten aus den Tracing-Events auf die SVG-Schablonen anwenden, um diese in Abhängigkeit der Event-Parameter dynamisch zu verändern.
Die Anzeige wird durch das GTK-Widget „GtkSourceView“ realisiert, welches speziell zur Darstellung und Syntax-Hervorhebung von Quellcode entwickelt wurde und direkt in das neue LTTV-Visualisierungsmodul integriert ist.
Der GRIN Verlag hat sich seit 1998 auf die Veröffentlichung akademischer eBooks und Bücher spezialisiert. Der GRIN Verlag steht damit als erstes Unternehmen für User Generated Quality Content. Die Verlagsseiten GRIN.com, Hausarbeiten.de und Diplomarbeiten24 bieten für Hochschullehrer, Absolventen und Studenten die ideale Plattform, wissenschaftliche Texte wie Hausarbeiten, Referate, Bachelorarbeiten, Masterarbeiten, Diplomarbeiten, Dissertationen und wissenschaftliche Aufsätze einem breiten Publikum zu präsentieren.
Kostenfreie Veröffentlichung: Hausarbeit, Bachelorarbeit, Diplomarbeit, Dissertation, Masterarbeit, Interpretation oder Referat jetzt veröffentlichen!

