Race-Condition
(Computer) Zustandsbeschreibung in einem Betriebssystem mit Multitasking bzw. Multprogramming?. Zwei nebenläufige Prozesse werden von Betriebssystem gescheduled? und konkurrieren dabei um eine gemeinsam genutzte Ressource, was zu inkorrekten Ergebnissen führt. Der Begriff "Race-Condition" rührt von der Tatsache, dass der erste Prozess "gewinnt" und die Änderungen des zweiten überschreibt.

Beispiel:
Zwei fast identische Prozesse A und B.
Prozess A
  1. lw $a0, 0x00001e3f
  2. addi $a0, $a0, 1
  3. sw $a0, 0x00001e3f
Prozess B
  1. lw $a0, 0x00001e3f
  2. addi $a0, $a0, 2
  3. sw $a0, 0x00001e3f
Wirkung

Datenwort laden
1 bzw. 2 hinzuaddieren
Datenwort speichern

Angenommen der Wert an der Speicheradresse 0x00001e3f sei zu beginn null. Durch das Scheduling des Betriebssystem verläuft die tatsächliche Ausführungsreihenfolge so:
  1. Prozesse A und B gestartet, Ausführung beginng bei A.
  2. (A 1.) 0 aus 0x00001e3f geladen
  3. Unterbrechung durch Betriebsssytem, Wechsel zu Prozess B
  4. (B 1.) 0 aus 0x00001e3f geladen
  5. (B 2.) 2 hinzuaddiert: Wert ist 2
  6. (B 3.) 2 in 0x00001e3f gespeichert
  7. Unterbrechung durch Betriebsssytem, Wechsel zu Prozess A
  8. (A 2.) 1 hinzuaddiert: Wert ist 1
  9. (A 3.) 1 in 0x00001e3f gespeichert, überschreibt vorherigen Wert
Als Endergebnis wird der Wert 1 gespeichert, aber eigentlich sollte 1 und 2 addiert werden, so dass das Endergebnis 3 ergeben müsste. A hat also "das Rennen gewonnen" und konnte seinen Wert speichern.

Referenzen auf Race-Condition:

Zuletzt geändert am 14 März 2005 14:07 Uhr von chrschn