Operational Profiling of OS Drivers
Total Page:16
File Type:pdf, Size:1020Kb
Operational Profiling of OS Drivers Vom Fachbereich Informatik der Technischen Universit¨atDarmstadt genehmigte Dissertation zur Erlangung des akademischen Grades eines Doktor-Ingenieur (Dr.-Ing.) vorgelegt von Constantin S^arbu aus Bukarest, Rum¨anien Referenten: Prof. Neeraj Suri, Ph.D. Prof. Christof Fetzer, Ph.D. Datum der Einreichung: 06. M¨arz2009 Datum der m¨undlichen Pr¨ufung:25. Mai 2009 Darmstadt 2009 D17 ii Summary Operating Systems (OS's) constitute the operational core for computing de- vices. In order to facilitate their applicability to a variety of hardware platforms, OS's have evolved into complex componentized software entities whose key func- tion is to provide applications access to the system resources. Fundamentally, the provided system services inherently depend on the stability of the underlying OS. Within the OS, the key components that dominate the cause of OS failures are the device drivers (DDs), precisely the OS parts designed to enhance the OS's sup- port for hardware. Despite intensive efforts to elevate the DDs' robustness level by employing varied test paradigms, the existing testing approaches still exhibit very high failure rates. Hence, the central premise behind this thesis involves the char- acterization of the DD's operational profile, and using it for focusing subsequent testing to the functionality areas likely to be exercised over the DD deployment. This thesis develops two novel and distinct methodologies to capture and an- alyze the operational profile of DDs. The first { termed as the operational profile (OP) { is based on the characterization of the I/O traffic between a selected DD and the rest of the OS kernel. The second { termed execution path profile (EPP) { observes the functional calls made by the respective DD in the operational phase, thus revealing the code paths followed at runtime. Both presented approaches are directly applicable to DD binaries as they do not require source-code level access to any of the involved OS components. This thesis develops the concepts and methodology for effectively profiling the operational behavior of DDs. First, a state model is introduced for describing a DD and its complete state space. Experimentally, we show that the DD's oper- ational state space (OSS) { the subset of states visited at runtime { represents a only small fraction of the total state space, thus highlighting the areas to be tested. Subsequently, occurrence- and duration-based quantifiers are defined for each of the DD states belonging to the OSS. This enables test prioritization and workload comparisons which are the key factors for testing. This conceptual process's ef- fectiveness is tested using extensive case studies including over fifty Windows XP and Vista DDs. The developed EPP is complementary to the OP as it discovers execution hotspots as frequently traversed DD code paths. To highlight the execution hotspots, a DD monitoring and code path analysis methodology is presented and tested using actual Windows DD's. Code paths are identified as call sequences to kernel functions implemented externally to the selected DD. String similarity metrics are used to compute the relative similarity among the inferred code paths. Based on likeness, the code paths are grouped into equivalence classes helping identify execution hotspots. These hotspots constitute primary targets for testing. Overall the thesis develops novel profiling approaches for testing generalized OS's. The research is also validated on actual Windows XP and Vista OSs. iii iv Kurzfassung Betriebssysteme (BS) bilden den operativen Kern eines jeden Computers. F¨ur eine einfache Anwendbarkeit auf verschiedenen Hardware-Plattformen haben sich BS zu komplexen, aus Komponenten bestehenden Software-Einheiten entwickelt, deren Hauptaufgabe darin besteht Anwendungen Zugriff auf Systemressourcen zu erm¨oglichen. Grunds¨atzlich h¨angendie bereitgestellten Systemdienste inh¨arent von der Stabilit¨atdes unterliegenden BSs ab. Die Komponenten, die innerhalb eines BSs die dominierenden Verursacher von Ausf¨allendes BSs sind, sind die Ger¨atetreiber, genauer gesagt die Teile des BSs, die entwickelt wurden um die Hardware-Unterst¨utzungdes BSs zu verbessern. Trotz intensiver Anstrengun- gen das Robustheitsniveau von Ger¨atetreibern durch Anwendung verschiedener Testparadigmen zu heben, zeigen existierende Testmethoden nach wie vor ¨außerst hohe Fehlerraten. Die Charakterisierung des operativen Profils von Ger¨atetreibern und dessen Anwendung w¨ahrend der Entwicklung von Ger¨atetreibern zum ziel- gerichteten Testen von mit hoher Wahrscheinlichkeit aufgerufenen Funktionen bildet den Kernbeitrag der vorliegenden Arbeit. Die vorliegende Arbeit beschreibt zwei neue Methoden um ein operatives Profil von Ger¨atetreibern zu erstellen und zu analysieren. Die erste Methode | opera- tional profile (OP) genannt | basiert auf der Charakterisierung der Ein-/Ausgabe- Kommunikation zwischen einem ausgew¨ahltenGer¨atetreiber und dem Rest des BS- Kerns. Die zweite Methode | execution path profile (EPP) genannt | verfolgt die vom entsprechenden Ger¨atetreiber w¨ahrendder Betriebsphase gemachten Funk- tionsaufrufe, wobei die zur Laufzeit durchschrittenen Pfade im Code aufgezeigt werden. Beide vorgestellten Ans¨atzek¨onnendirekt auf die ausf¨uhrbarenDateien von Ger¨atetreibern angewendet werden, weil kein Zugriff auf den Quellcode einer beteiligten BS-Komponente ben¨otigtwird. Die vorliegende Arbeit pr¨asentiert Konzepte und Methoden zur effektiven Pro- filierung des operativen Verhaltens von Ger¨atetreibern. Zun¨achst wird ein Zu- standsmodell eingef¨uhrt um einen Ger¨atetreiber und den kompletten Zustand- sraum zu beschreiben. Wir zeigen mit Hilfe von Experimenten, dass der opera- tive Zustandsraum (die Teilmenge von Zust¨anden,die zur Laufzeit besucht wer- den) eines Ger¨atetreibers nur einen kleinen Anteil des gesamten Zustandsraums ausmacht und somit die Gebiete im Zustandsraum hervorhebt, die vornehmlich durch Tests abgedeckt werden m¨ussen. Anschließend werden f¨urjeden Zustand des Ger¨atetreibers Quantifizierer, basierend auf dem (zeitlichen) Auftreten des Zustandes, definiert. Dies erm¨oglicht Priorisierung von Tests und den Vergle- ich von Arbeitslasten, welche die Schl¨usselfaktorenf¨urgenaues und angemessenes Testen sind. Die generelle Effektivit¨at des gesamten Prozesses wird anhand von ausf¨uhrlichen Fallstudien, die mehr als f¨unfzig Windows XP und Vista Ger¨atetreiber umfassen, erprobt. Das EPP, welches ebenso in dieser Arbeit vorgestellt wird, ist komplement¨ar zum OP weil es Ausf¨uhrungs-Hotspots in Form von h¨aufig durchschrittenen Pfaden im Code auffindet. Um solche Ausf¨uhrungs-Hotspots hervorzuheben wird v eine Methode zum Monitoring von Ger¨atetreibern und zur Code-Pfad-Analyse pr¨asentiert und an echten Windows-Ger¨atetreibern getestet. Code-Pfade werden als Sequenzen von BS-Kern-Funktionsaufrufen charakterisiert, die außerhalb des gew¨ahltenGer¨atetreibers implementiert sind. String-Ahnlichkeitsmetriken¨ werden herangezogen um die relative Ahnlichkeit¨ zwischen den abgeleiteten Code-Pfaden zu bestimmen. Die Code-Pfade werden, basierend auf Wahrscheinlichkeiten, in Aquivalenzklassen¨ unterteilt um das Identifizieren von Ausf¨uhrungs-Hotspots zu erleichtern. Solche Hotspots bilden prim¨areZiele f¨urdas Testen. Zusammenfassend entwickelt die vorliegende Arbeit neue Profilierungsans¨atze zum Testen allgemeiner BS. Die Forschungsarbeit wird an den realen Betriebssys- temen Windows XP und Windows Vista validiert. vi Acknowledgements Almost six years have passed since I started the work that eventually crystallized into this PhD thesis. Looking back from today's perspective, I must admit that there was a lot of hard work but fun was always present. It was hard as I had to learn how to do research, how to present my work and how to be critical with other people's work when it came to writing conference reviews. It has been fun when socializing with the members of our group or celebrating birthdays over home-made, international-flavor dishes or cakes. There are many people that helped me to whom I am very thankful. First I'd like to thank my advisor for teaching me everything I know about doing research. From him I learned that there is always a higher gear, but also that research can be (sometimes) fun. Thanks, Neeraj ! Then, I am very thankful to all past and present DEEDS group's members for helping me, listening to my boring presentations and giving me feedback on early drafts of my papers. Hoping not to forget anyone of the past and present guys, many thanks to Andr´eas,Adina, Robert, Ripon, Brahim, Peter, Dan, Marco, Faisal, Matthias, Majid, Azad, Piotr and Vinay. Also, special thanks go to Birgit, Sabine and Ute for helping me with various paperwork, for correcting and improving my German and all other circumstances related to living in Germany. A great many thanks also to Prof. Christof Fetzer for accepting to be my co-advisor. I'd also like to thank my parents and brother for their continual support and love which spanned the geographical distance separating us in all these years. Thank you, Mama, Tata and Mai! I saved the best for the last: Thank you Adina for all the understanding, love and support that you always found for me all these years! Thank you Daniel for making everything so easy for me! vii viii Contents List of Figures xiii List of Tables xv 1 Introduction and Problem Context1 1.1 Operational Profiling: A Testing Prerequisite..........3 1.1.1 OS Complexity { Between Necessity and Burden....3 1.1.2 Faulty Drivers Despite Testing?.............6