16.01.2014 Aufrufe

6 Race Conditions

6 Race Conditions

6 Race Conditions

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

204<br />

10 <strong>Race</strong> <strong>Conditions</strong><br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Abb. 10–2<br />

Eraser bedient für jede Variable einen hier gezeigten Zustandsautomaten.<br />

Bewertung von Eraser<br />

Was sind nun die Stärken und Schwächen von Eraser? Zunächst muss Eraser die<br />

Software instrumentieren, um jede Variable mit einem Zustandsautomaten assoziieren<br />

zu können, oder das auf Eraser basierende Werkzeug muss Zugang zu<br />

Debug-Information haben. Instrumentieren heißt, dass der Quellcode oder der<br />

Binärcode automatisch verändert werden muss, damit Eraser arbeiten kann. Des<br />

Weiteren muss Eraser das (instrumentierte) Programm ausführen können. Das<br />

könnte nicht immer so leicht sein. Denken wir an Systeme mit knappem Speicher<br />

(die Instrumentierung macht das Programm größer und langsamer) oder nicht<br />

vorhandene Test-Hardware.<br />

Eraser findet nur Fehler in Programmteilen, die auch tatsächlich ausgeführt<br />

wurden. Es obliegt dem Benutzer, sich darum zu kümmern, dass alle Programmteile,<br />

die zu Data <strong>Race</strong>s führen könnten, auch tatsächlich im Testlauf ausgeführt<br />

werden. Eraser kann nicht mit anderen Synchronisationsmechanismen außer<br />

Locks umgehen. Bedient sich die zu prüfende Software aber keiner anderen<br />

Mechanismen außer Locks, so findet Eraser Data <strong>Race</strong>s recht zuverlässig. Auch<br />

dann, wenn die betroffenen Programmteile nach einer Initialisierung nur ein einziges<br />

Mal durchlaufen wurden.<br />

Um seine Stärken ausspielen zu können, fordert Eraser allerdings die Einhaltung<br />

einer Locking-Disziplin: Bei jedem Zugriff auf eine Shared-Variable muss<br />

ein Lock aktiv sein. Auch wenn der Zugriff nur lesend ist.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!