Índice:
Definição - O que significa o Algoritmo de Dekker?
O algoritmo de Dekker é o primeiro algoritmo conhecido que resolve o problema de exclusão mútua na programação simultânea. É creditado a Th. J. Dekker, um matemático holandês que criou o algoritmo para outro contexto. O algoritmo de Dekker é usado no processo de enfileiramento e permite que dois threads diferentes compartilhem o mesmo recurso de uso único sem conflito usando memória compartilhada para comunicação.
Techopedia explica o algoritmo de Dekker
O algoritmo de Dekker permitirá que apenas um único processo use um recurso se dois processos estiverem tentando usá-lo ao mesmo tempo. O destaque do algoritmo é como ele resolve esse problema. Ele consegue impedir o conflito impondo a exclusão mútua, o que significa que apenas um processo pode usar o recurso por vez e aguardará se outro processo o estiver usando. Isso é conseguido com o uso de dois "sinalizadores" e um "token". Os sinalizadores indicam se um processo deseja entrar na seção crítica (CS) ou não; um valor de 1 significa VERDADEIRO que o processo deseja inserir no CS, enquanto 0, ou FALSO, significa o oposto. O token, que também pode ter um valor de 1 ou 0, indica prioridade quando ambos os processos têm seus sinalizadores definidos como TRUE.
Esse algoritmo pode impor com êxito a exclusão mútua, mas testará constantemente se a seção crítica está disponível e, portanto, perde tempo significativo do processador. Ele cria o problema conhecido como sincronização de passo de bloqueio, no qual cada encadeamento pode ser executado apenas em sincronização estrita. Também não é expansível, pois suporta apenas um máximo de dois processos de exclusão mútua.