Dynamische Wettlauferkennung für korrelierte Variable in parallelen Programmen
- Type:Diplomarbeit
- Supervisor:
Dr. ing. Ali Jannesari
- Person in Charge:Markus Westphal
-
Programme mit nebenläufigen Berechnungen zu entwickeln, stellt hohe Anforderungen an Software-Entwickler: Denn die Vorteile der Parallelberechnung, etwa kürzere Reaktionszeiten oder bessere Skalierbarkeit, werden mit höherer Komplexität im Vergleich zu funktionsäquivalenten, sequentiellen Programmen erkauft. Dazu tragen auch neue Fehlerklassen bei, die sich aus der Nebenläufigkeit einzelner Programmteile ergeben: Deadlocks (gegenseitige Blockierung), Umordnungsfehler und Atomizitätsverletzungen; die beiden letztgenannten Fehlerklassen werden symptomatisch von data-races begleitet, Wettlaufsituationen, bei denen das Ergebnis von der Reihenfolge der Ausführung abhängt. Es ist au erst schwierig, solche Fehler aufzudecken, treten sie doch meist nur sporadisch und schwer reproduzierbar auf. Umso wichtiger ist die Unterstützung durch geeignete Werkzeuge, die dem Entwickler helfen, solche Nebenläufigkeitsfehler aufzuspüren und schließlich zu beseitigen. Eine Klasse solcher Werkzeuge bilden die datarace-Detektoren, die es vermögen, automatisch data-races oder Wettläufe, also unsynchronisierte Zugriffe auf gemeinsam genutzte Speicherbereiche, zu erkennen und zu analysieren. Helgrind+ ist ein solcher data-race-Detektor, der an der Universitat Karlsruhe entwickelt wurde und kontinuierlich verbessert wird. Dazu möchte nun auch diese Diplomarbeit beitragen: Ziel ist es, Helgrind+ zu befähigen, auch data-races zu erkennen, an denen mehrere, korrelierte Speicherbereiche beteiligt sind. Dies ist eine Aufgabe, die zum Zeitpunkt der Entstehung dieser Arbeit auch von anderen data-race-Detektoren nur unzureichend gelöst wird.