Steiner, D. (2016). Error detection based on execution-time monitoring [Diploma Thesis, Technische Universität Wien]. reposiTUm. https://doi.org/10.34726/hss.2016.30109
Echtzeitsysteme finden heutzutage Anwendungen in allen erdenklichen Lebensbereichen - von der Steuerung einer Waschmaschine, bis hin zur autonomen Navigation von Marsrobotern. Bei diesen Systemen ist die Korrektheit des Systemverhaltens nicht nur von den logischen Ergebnissen der durchgeführten Berechnungen, sondern auch von dem physikalischem Moment, zu dem die errechneten Resultate vorliegen, abhängig. Die Bestimmung der maximalen Ausführungszeit einer Berechnung ist daher unerlässlich um zu bestimmen, ob diese Systeme die an sie gestellten zeitlichen Vorgaben einhalten können. Doch enthält die Ausführungszeit einer Berechnung noch weitere verwertbare Informationen? Im Rahmen dieser Diplomarbeit wird untersucht ob - und falls ja, wie - sich das Zeitverhalten eines Programms durch Hardwarefehler verändert, und ob es möglich ist die Beobachtung der Laufzeit eines Programms zur Erkennung von Fehlern in der Abarbeitung zu verwenden um frühzeitig ungewolltes Systemverhalten zu erkennen und zu verhindern. Zu diesem Zweck werden repräsentative Microbenchmarks identifiziert und implementiert, ein Fault-Injection-Modell erstellt, und darauf aufbauend bewusst Fehler in den Programmcode eingeschleust. Die so modifizierten Benchmarks werden anschließend vermessen und die Ergebnisse dieser Messungen mittels geeigneter Verfahren ausgewertet. Die daraus gewonnenen Resultate und Schlussfolgerungen werden aufbereitet und sowohl graphisch als auch textuell präsentiert und interpretiert. Im Zuge dieser Arbeit wird die Robustheit der vorgeschlagenen Methode gezeigt, es werden - algorithmenabhängig - bis zu 70% vorher undetektierter Fehler erkannt. Die Methode kann mit vertretbarem Aufwand in vorhandene Systeme integriert werden und bietet eine weitere Absicherung gegen mögliche Fehler.
de
Nowadays real-time systems can be found in every aspect of modern life - from controlling a washing machine to the autonomous navigation of Mars rovers. In this systems, the correctness of a systems behavior does not only depend on the actual computation results, but also on the physical instant at which these results are produced. Determining the maximal execution time of a calculation is, therefore, essential to ascertain if the system can meet its temporal requirements. But is there more usable information within an algorithms execution time? This thesis investigates if respectively how the temporal behavior of an algorithm changes in the presence of errors that are caused by hardware faults. It examines if the observation of task run times can be used to detect these errors, so that undesired system behavior and failures can be averted early. To reach this goal, a number of microbenchmarks will be identified and implemented; a fault injection model will be defined, and - building onto it - errors will be injected into the benchmarks- program code. Those modified benchmarks will then be measured and the results evaluated with suitable methods. The gathered evaluations and insights will be presented in graphical and textual ways. This work will show a robust method, detecting - depending on the algorithm - up to 70% of previously undetected errors. The method can be implemented into existing systems with reasonable effort and overhead, and provides an additional layer of protection against errors.