Dekkers-Algorithmus

Autor: Robert Simon
Erstelldatum: 17 Juni 2021
Aktualisierungsdatum: 24 Juni 2024
Anonim
Race Conditions and How to Prevent Them - A Look at Dekker’s Algorithm
Video: Race Conditions and How to Prevent Them - A Look at Dekker’s Algorithm

Inhalt

Definition - Was bedeutet Dekkers Algorithmus?

Der Dekker-Algorithmus ist der erste bekannte Algorithmus, der das Problem des gegenseitigen Ausschlusses bei der gleichzeitigen Programmierung löst. Es wird Th gutgeschrieben. J. Dekker, ein niederländischer Mathematiker, der den Algorithmus für einen anderen Betrüger entwickelt hat. Der Dekkers-Algorithmus wird in der Prozesswarteschlange verwendet und ermöglicht es zwei verschiedenen Threads, dieselbe Ressource für den einmaligen Gebrauch ohne Konflikte gemeinsam zu nutzen, indem der gemeinsame Speicher für die Kommunikation verwendet wird.


Eine Einführung in Microsoft Azure und die Microsoft Cloud | In diesem Handbuch erfahren Sie, worum es beim Cloud-Computing geht und wie Microsoft Azure Sie bei der Migration und Ausführung Ihres Unternehmens aus der Cloud unterstützen kann.

Techopedia erklärt den Dekkers-Algorithmus

Mit dem Dekker-Algorithmus kann nur ein einzelner Prozess eine Ressource verwenden, wenn zwei Prozesse gleichzeitig versuchen, sie zu verwenden. Das Highlight des Algorithmus ist, wie er dieses Problem löst. Es ist erfolgreich, den Konflikt zu verhindern, indem der gegenseitige Ausschluss erzwungen wird. Dies bedeutet, dass jeweils nur ein Prozess die Ressource verwenden kann und wartet, ob ein anderer Prozess sie verwendet. Dies wird durch die Verwendung von zwei "Flags" und einem "Token" erreicht. Die Flags geben an, ob ein Prozess in den kritischen Bereich (CS) eintreten möchte oder nicht. Ein Wert von 1 bedeutet WAHR, dass der Prozess die CS eingeben möchte, während 0 oder FALSCH das Gegenteil bedeuten. Das Token, das auch den Wert 1 oder 0 haben kann, gibt die Priorität an, wenn für beide Prozesse die Flags auf TRUE gesetzt sind.

Dieser Algorithmus kann den gegenseitigen Ausschluss erfolgreich erzwingen, prüft jedoch ständig, ob der kritische Abschnitt verfügbar ist, und verschwendet daher erhebliche Prozessorzeit. Es entsteht das als Lockstep-Synchronisation bekannte Problem, bei dem jeder Thread möglicherweise nur in strikter Synchronisation ausgeführt wird. Es ist auch nicht erweiterbar, da es nur maximal zwei Prozesse zum gegenseitigen Ausschluss unterstützt.