Benutzer:Grünweber-Druide/ABA-Problem

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
Dieser Artikel ist im Entstehen und noch nicht Bestandteil der freien Enzyklopädie Wikipedia.

Solltest du über eine Suchmaschine darauf gestoßen sein, bedenke, dass der Text noch unvollständig sein und Fehler oder ungeprüfte Aussagen enthalten kann. Wenn du Fragen zum Thema hast, nimm Kontakt mit dem Autor Grünweber-Druide auf.

Diese Benutzerseite bedarf einer grundsätzlichen Überarbeitung:
Leider wieder einmal nur ein Bruchteil den englischen Artikels en:ABA problem übersetzt ohne Nachimport, Quellen etc. ... Es fehlen die Beispiele, Workarounds, Alternativen--Blik (Diskussion) 09:23, 25. Feb. 2024 (CET)
Bitte beteilige dich an der Verbesserung und entferne anschließend diese Markierung.

In der Informatik werden Probleme als ABA-Problem bezeichnet, bei denen während der Synchronisierung Fehler auftraten, wenn an einer Speicherstelle zweimal derselbe Wert gelesen wird und fälschlicherweise daraus geschlossen wird, dass in der Zwischenzeit dieser Wert nicht verändert wurde. Es ist möglich, dass ein anderer Thread (oder Prozess) diese Speicherstelle ausliest, den Wert ändert und dann denselben Wert zurückschreibt.[1] [2]

Das folgende Beispiel verdeutlicht das ABA-Problem:

  1. Prozess P 1 {\displaystyle P_{1}} {\displaystyle P_{1}} liest den Wert A aus einer Speicherstelle,
  2. P 1 {\displaystyle P_{1}} {\displaystyle P_{1}} wird unterbrochen, sodass P 2 {\displaystyle P_{2}} {\displaystyle P_{2}} weiterarbeiten kann,
  3. P 2 {\displaystyle P_{2}} {\displaystyle P_{2}} schreibt den Wert B in die Speicherstelle,
  4. P 2 {\displaystyle P_{2}} {\displaystyle P_{2}} schreibt den Wert A in die Speicherstelle,
  5. P 2 {\displaystyle P_{2}} {\displaystyle P_{2}} wird unterbrochen, sodass P 1 {\displaystyle P_{1}} {\displaystyle P_{1}} weiterarbeiten kann,
  6. P 1 {\displaystyle P_{1}} {\displaystyle P_{1}} liest den Wert A aus der Speicherstelle,
  7. P 1 {\displaystyle P_{1}} {\displaystyle P_{1}} entscheidet, dass der Wert in der Speicherstelle nicht verändert wurde und arbeitet unter dieser Annahme weiter.

Obwohl P 1 {\displaystyle P_{1}} {\displaystyle P_{1}} weiterarbeiten kann, ist es möglich, dass das Verhalten aufgrund der „versteckten" Veränderung falsch ist.

Ein Beispiel des ABA-Problems sind nicht-blockierende Datenstrukturen. Wenn ein Element aus einer Liste entfernt wird und dann ein neues Element hinzugefügt wird, kann es vorkommen, dass das neue Element an derselben Speicherstelle (siehe Cache-Algorithmus) abgelegt wird, da das zuvor entfernte Element nicht mehr benötigt wird. Ein Zeiger auf das neue Element ist oft gleich wie der Zeiger auf das alte Element, was das ABA-Problem auslösen kann.

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten ]
  1. heise online: ABA – A ist nicht gleich A. 12. Juni 2017, abgerufen am 25. Februar 2024. 
  2. R. Guerraoui: Distributed Computing: 18th International Conference, DISC 2004, Amsterdam, The Netherlands, October 4-8, 2004. Proceedings (= Lecture Notes in Computer Science). Springer Berlin Heidelberg, 2004, ISBN 978-3-540-30186-8, S. 144 (google.de [abgerufen am 25. Februar 2024]). 

{{DEFAULTSORT:Aba Problem}} [[Kategorie:Parallelverarbeitung]]

Abgerufen von „https://de.wikipedia.org/w/index.php?title=Benutzer:Grünweber-Druide/ABA-Problem&oldid=242603839"