www.wikidata.de-de.nina.az
Dieser Artikel oder nachfolgende Abschnitt ist nicht hinreichend mit Belegen beispielsweise Einzelnachweisen ausgestattet Angaben ohne ausreichenden Beleg konnten demnachst entfernt werden Bitte hilf Wikipedia indem du die Angaben recherchierst und gute Belege einfugst Nicht blockierende Synchronisation englisch non blocking oder auch lock free synchronization ist eine Technik in der Informatik um parallele Prozesse zu synchronisieren ohne dabei bestimmte Programmabschnitte sperren zu mussen Insbesondere dient sie zur Implementierung von nicht blockierenden Datenstrukturen in parallelen Systemen Inhaltsverzeichnis 1 Blockierende Techniken 2 Nicht blockierende Techniken 3 Wait free und Lock free Semantik 4 Siehe auch 5 EinzelnachweiseBlockierende Techniken BearbeitenUm Inkonsistenzen im Ablauf von parallelen Prozessen die auf gemeinsamen Speicher zugreifen zu vermeiden werden traditionell Locking Techniken wie Semaphore und Mutexe eingesetzt die kritische Abschnitte definieren in denen nur ein Prozess exklusiven Zugriff auf bestimmte Betriebsmittel erhalt Wollen andere Prozesse gleichzeitig in einen kritischen Abschnitt eintreten werden sie blockiert Dieser Ansatz hat eine Reihe von Nachteilen Verklemmung Es kann zu Verklemmungen deadlock kommen wenn es gegenseitige Abhangigkeiten zwischen Sperren gibt Effizienzverlust Die Parallelitat des Programms wird verringert siehe Amdahlsches Gesetz In bestimmten Fallen kann dieser Effekt durch eine feinere Granularitat der Sperren reduziert werden z B Sperren des Zugriffs auf einzelne Elemente eines Objektes statt Sperrung des gesamten Objekts Fehleranfalligkeit Die korrekte Identifikation und Sperrung der kritischen Abschnitte ist nicht trivial und dadurch fehleranfallig Auch die Erweiterbarkeit und Wartbarkeit des Programms wird erschwert Prioritatsinversion Betrachtet man das gesamte System kommt das Problem der Prioritatsinversion hinzu wobei Prozesse hoher Prioritat von einfachen Prozessen durch gehaltene Locks aufgehalten werden konnen Locks auf Systemebene beeintrachtigen im Allgemeinen auch das Echtzeit Verhalten des Systems Nicht blockierende Techniken BearbeitenNicht blockierende Synchronisationtechniken umgehen die Definition von kritischen Abschnitten dadurch dass sie zu keinem Zeitpunkt Inkonsistenzen erzeugen Datenstrukturen werden dabei ausschliesslich durch atomare Operationen modifiziert Sind die Anderungen klein wie in der Referenzzahlung oder bei der Manipulation von Zeigern konnen Prozessor Befehle wie Compare and swap oder Load Link Store Conditional verwendet werden Sind die Modifikationen umfangreicher werden sie zunachst auf Kopien der ursprunglichen Objekte durchgefuhrt Wurde das Objekt wahrend der Erstellung der Modifikation von anderen Prozessen verandert schlagt die Operation zunachst fehl und muss wiederholt werden Nachteile dieser Techniken sind Komplexitat Die Notwendigkeit von atomaren Anderungen fuhrt haufig zu komplexen und schwer verstandlichen Algorithmen Die Implementierung effizienter und universeller nicht blockierender Datenstrukturen ist ein aktuelles Forschungsgebiet Verhungern Durch die Moglichkeit des Fehlschlags kann es zu einer Situation kommen in der eine komplexe Anderung immer wieder von kurzeren Anderungen ungultig gemacht wird und dadurch verhungert engl starvation Das Verhungern ist die Kehrseite der Verklemmung in der blockierenden Synchronisation Im Gegenzug ist das Problem der Prioritatsumkehrung aufgelost und die Algorithmen sind oft robuster und effizienter Die komplexen und schwer wartbaren Algorithmen sind zudem besser gekapselt Sie mussen nur einmal fur jeden Datentyp implementiert werden und konnen wiederverwendet werden Wait free und Lock free Semantik BearbeitenIn der Literatur werden zumeist zwei Grade der Garantien uber das Laufzeitverhalten nicht blockierender Algorithmen unterschieden Wait free Alle Operationen aller beteiligten Prozesse werden durchgefuhrt unabhangig von den parallel laufenden Prozessen im System Lock free Keine Operation wird aufgehalten durch mogliche Uberschneidungen mit anderen Prozessen konnen aber Verzogerungen auftreten Der Aufwand fur wait free Implementierungen ist allerdings sehr hoch Zum einen ist die Implementierung hoch komplex zum anderen steigt der Speicher und Zeitbedarf solcher Algorithmen meist mit der Anzahl der beteiligten Prozesse bzw Threads Es existieren Implementierungen fur einfache Warteschlangen 1 und Stacks das Thema ist aber noch ein aktuelles Forschungsgebiet Alle wait free Algorithmen sind auch lock free Die Lock freien Algorithmen haben sich in der Praxis aber schon als Alternative zu Locks etabliert Siehe auch BearbeitenProzesssynchronisation Paralleler Algorithmus Nichtsequentielle Programmierung MultithreadingEinzelnachweise Bearbeiten Alex Kogan and Erez Petrank 2011 Wait free queues with multiple enqueuers and dequeuers In Proceedings of the 16th ACM symposium on Principles and practice of parallel programming PPoPP 11 ACM New York NY USA S 223 234 doi 10 1145 1941553 1941585 Abgerufen von https de wikipedia org w index php title Nicht blockierende Synchronisation amp oldid 217419423