„Benutzer:Grünweber-Druide/ABA-Problem“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
Inhalt gelöscht Inhalt hinzugefügt
+QS
+Belege -Belege BS
Zeile 1: Zeile 1:
{{QS-Antrag|25. Februar 2024|2=Leider wieder einmal nur ein Bruchteil den englischen Artikels [[:en:ABA problem]] übersetzt ohne Nachimport, Quellen etc. ... Es fehlen die Beispiele, Workarounds, Alternativen--[[Benutzer:Blik|Blik]] ([[Benutzer Diskussion:Blik|Diskussion]]) 09:23, 25. Feb. 2024 (CET)}}
{{QS-Antrag|25. Februar 2024|2=Leider wieder einmal nur ein Bruchteil den englischen Artikels [[:en:ABA problem]] übersetzt ohne Nachimport, Quellen etc. ... Es fehlen die Beispiele, Workarounds, Alternativen--[[Benutzer:Blik|Blik]] ([[Benutzer Diskussion:Blik|Diskussion]]) 09:23, 25. Feb. 2024 (CET)}}


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 (Informatik)|Thread]] (oder [[Prozess (Informatik)|Prozess]]) diese Speicherstelle ausliest, den Wert ändert und dann denselben Wert zurückschreibt.<ref>{{Internetquelle |autor=heise online |url=https://www.heise.de/blog/ABA-A-ist-nicht-gleich-A-3740324.html |titel=ABA – A ist nicht gleich A |datum=2017-06-12 |sprache=de |abruf=2024-02-25}}</ref><ref name="Guerraoui 2004 p. 144">{{cite book |last=Guerraoui |first=R. |title=Distributed Computing: 18th International Conference, DISC 2004, Amsterdam, The Netherlands, October 4-8, 2004. Proceedings |series=Lecture Notes in Computer Science |publisher=Springer Berlin Heidelberg |year=2004 |page=144 |isbn=978-3-540-30186-8 |url=https://books.google.de/books?id=DtbzBwAAQBAJ&pg=PA144 |access-date=2024-02-25}}</ref>
{{Quelle}}

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 (Informatik)|Thread]] (oder [[Prozess (Informatik)|Prozess]]) diese Speicherstelle ausliest, den Wert ändert und dann denselben Wert zurückschreibt.


Das folgende Beispiel verdeutlicht das ABA-Problem:
Das folgende Beispiel verdeutlicht das ABA-Problem:
Zeile 18: Zeile 16:
Ein Beispiel des ABA-Problems sind [[Nicht-blockierende Synchronisation|nicht-blockierende]] [[Datenstruktur|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 (Informatik)|Zeiger]] auf das neue Element ist oft gleich wie der Zeiger auf das alte Element, was das ABA-Problem auslösen kann.
Ein Beispiel des ABA-Problems sind [[Nicht-blockierende Synchronisation|nicht-blockierende]] [[Datenstruktur|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 (Informatik)|Zeiger]] auf das neue Element ist oft gleich wie der Zeiger auf das alte Element, was das ABA-Problem auslösen kann.


== Einzelnachweise ==
<references />
{{DEFAULTSORT:Aba Problem}}
{{DEFAULTSORT:Aba Problem}}
[[Kategorie:Parallelverarbeitung]]
[[Kategorie:Parallelverarbeitung]]

Version vom 25. Februar 2024, 12:13 Uhr

Dieser Artikel wurde am 25. Februar 2024 auf den Seiten der Qualitätssicherung eingetragen. Bitte hilf mit, ihn zu verbessern, und beteilige dich bitte an der Diskussion!
Folgendes muss noch verbessert werden: 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)

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 liest den Wert A aus einer Speicherstelle,
  2. wird unterbrochen, sodass weiterarbeiten kann,
  3. schreibt den Wert B in die Speicherstelle,
  4. schreibt den Wert A in die Speicherstelle,
  5. wird unterbrochen, sodass weiterarbeiten kann,
  6. liest den Wert A aus der Speicherstelle,
  7. entscheidet, dass der Wert in der Speicherstelle nicht verändert wurde und arbeitet unter dieser Annahme weiter.

Obwohl 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

  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]).