Sommario:
Definizione - Cosa significa l'algoritmo di Dekker?
L'algoritmo di Dekker è il primo algoritmo noto che risolve il problema dell'esclusione reciproca nella programmazione concorrente. È accreditato a Th. J. Dekker, un matematico olandese che ha creato l'algoritmo per un altro contesto. L'algoritmo di Dekker viene utilizzato nell'accodamento dei processi e consente a due thread diversi di condividere la stessa risorsa monouso senza conflitti utilizzando la memoria condivisa per la comunicazione.
Techopedia spiega l'algoritmo di Dekker
L'algoritmo di Dekker consentirà a un solo processo di utilizzare una risorsa se due processi stanno tentando di usarla contemporaneamente. Il punto culminante dell'algoritmo è come risolve questo problema. Riesce a prevenire il conflitto applicando l'esclusione reciproca, il che significa che solo un processo può utilizzare la risorsa alla volta e attenderà se un altro processo lo sta utilizzando. Ciò si ottiene con l'uso di due "flag" e un "token". I flag indicano se un processo vuole entrare o meno nella sezione critica (CS); un valore di 1 significa VERO che il processo vuole entrare nel CS, mentre 0, o FALSO, significa il contrario. Il token, che può anche avere un valore di 1 o 0, indica la priorità quando entrambi i processi hanno i loro flag impostati su TRUE.
Questo algoritmo può applicare con successo l'esclusione reciproca, ma verificherà costantemente se la sezione critica è disponibile e quindi fa perdere tempo significativo al processore. Crea il problema noto come sincronizzazione lockstep, in cui ogni thread può essere eseguito solo in stretta sincronizzazione. Inoltre, non è espandibile in quanto supporta solo un massimo di due processi per l'esclusione reciproca.