Dekkers-algoritme

Schrijver: Robert Simon
Datum Van Creatie: 17 Juni- 2021
Updatedatum: 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

Inhoud

Definitie - Wat betekent Dekkers Algorithm?

Het algoritme van Dekker is het eerste bekende algoritme dat het probleem van wederzijdse uitsluiting bij gelijktijdig programmeren oplost. Het wordt bijgeschreven op Th. J. Dekker, een Nederlandse wiskundige die het algoritme voor een andere con creëerde. Het Dekkers-algoritme wordt gebruikt bij het in de wachtrij plaatsen van een proces en maakt het mogelijk dat twee verschillende threads dezelfde resource voor eenmalig gebruik delen zonder conflicten door gedeeld geheugen te gebruiken voor communicatie.


Een inleiding tot Microsoft Azure en de Microsoft Cloud | In deze handleiding leert u wat cloud computing inhoudt en hoe Microsoft Azure u kan helpen bij het migreren en runnen van uw bedrijf vanuit de cloud.

Techopedia legt Dekkers Algorithm uit

Met het algoritme van Dekker kan slechts één proces een resource gebruiken als twee processen deze tegelijkertijd proberen te gebruiken. Het hoogtepunt van het algoritme is hoe het dit probleem oplost. Het slaagt erin het conflict te voorkomen door wederzijdse uitsluiting af te dwingen, wat betekent dat slechts één proces de bron tegelijk kan gebruiken en zal wachten als een ander proces het gebruikt. Dit wordt bereikt met het gebruik van twee "vlaggen" en een "token". De vlaggen geven aan of een proces de kritieke sectie (CS) wil betreden of niet; een waarde van 1 betekent WAAR dat het proces de CS wil invoeren, terwijl 0 of ONWAAR het tegenovergestelde betekent. Het token, dat ook een waarde van 1 of 0 kan hebben, geeft prioriteit aan wanneer beide processen hun vlaggen hebben ingesteld op WAAR.

Dit algoritme kan met succes wederzijdse uitsluiting afdwingen, maar zal voortdurend testen of de kritieke sectie beschikbaar is en dus veel processortijd verspilt. Het creëert het probleem dat bekend staat als lockstep-synchronisatie, waarbij elke thread mogelijk alleen in strikte synchronisatie wordt uitgevoerd. Het is ook niet-uitbreidbaar omdat het maximaal twee processen voor wederzijdse uitsluiting ondersteunt.