Moderne Computersysteme, die immer intelligentere und komplexere Anwendungen ermöglichen, durchdringen unseren Alltag. Wir streben eine vollständig vernetzte und automatisierte Welt an, um unser Leben zu vereinfachen und unseren Komfort zu erhöhen, indem Aufgaben auf intelligente Geräte und Systeme verlagert werden. Wir sind von dem komplexen und ständig wachsenden Software-Ökosystem abhängig, das die Innovationen unserer intelligenten Technologien vorantreibt. Mit dieser Abhängigkeit von komplexen Softwaresystemen stellt sich die Frage, ob diese Systeme zuverlässig sind, d.h. ob wir tatsächlich darauf vertrauen können, dass sie ihre beabsichtigten Funktionen ausführen. Da Software von Menschen entwickelt wird, muss davon ausgegangen werden, dass sie Fehler enthält, und wir benötigen Strategien und Techniken, um deren Anzahl und Schweregrad zu verringern, die mit der zunehmenden Komplexität skalieren.
Übliche Ansätze, um einen zuverlässigen Betrieb zu erreichen, umfassen Fehlerakzeptanz- und Fehlervermeidungsstrategien. Die Ersteren tolerieren Fehler, wenn sie während des Betriebs auftreten, z.B. durch Isolieren und Neustarten fehlerhafter Komponenten, während die Letzteren versuchen, Fehler vor dem Einsatz des Systems zu entfernen, z.B. durch Anwenden von Korrektheitstest- und Softwarefehlerinjektionstechniken (SFI-Techniken). Vor diesem Hintergrund zielt diese Dissertation darauf ab, die Effizienz der Fehlerisolierung für Betriebssystemkernelkomponenten zu verbessern, die für einen zuverlässigen Betrieb besonders wichtig sind, und die Effizienz dynamischer Testaktivitäten zu verbessern, um der zunehmenden Komplexität von Software Rechnung zu tragen.
Wir zeigen, dass Techniken zur partiellen Fehlerisolierung für Kernelsoftwarekomponenten durch dynamische Laufzeitprofile erweitert werden können, um den erwarteten Overhead durch den Isolationsmechanismus und den erreichten Isolierungsgrad gemäß den Benutzeranforderungen zu balancieren. Mit zunehmender Softwarekomplexität erfordern umfassende Korrektheits- und Robustheitsbewertungen mit Korrektheitstests oder Software-Testverfahren und SFI eine wesentlich höhere Anzahl von Einzeltests, deren Durchführung einen erheblichen Zeitaufwand erfordert. Wir untersuchen unter Berücksichtigung verschiedener Ebenen des Software-Stacks, ob moderne parallele Hardware eingesetzt werden kann, um diesen Anstieg abzumildern. Wir zeigen insbesondere, dass SFI-Tests von einer parallelen Ausführung profitieren können, wenn diese Tests sorgfältig entworfen werden. Wir führen außerdem ein neues SFI-Framework ein, um solche Experimente effizient durchzuführen. Darüber hinaus untersuchen wir, ob vorhandene Testsuites für Korrektheitstests bereits von der parallelen Ausführung profitieren können und bieten einen Ansatz, der einen Migrationspfad für Testsuites bietet, die ursprünglich nicht für die parallele Ausführung konzipiert wurden. | German |