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 concorrente. É creditado a Th. J. Dekker, um matemático holandês que criou o algoritmo para outro contexto. O algoritmo de Dekker é usado no enfileiramento de processos e permite que dois threads diferentes compartilhem o mesmo recurso de uso único sem conflito, usando memória compartilhada para comunicação.
Definirtec 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 prevenir o conflito ao impor 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 é obtido 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 TRUE que o processo deseja entrar no CS, enquanto 0, ou FALSE, significa o oposto. O token, que também pode ter um valor de 1 ou 0, indica a prioridade quando ambos os processos têm seus sinalizadores definidos como TRUE.
Este algoritmo pode impor com sucesso a exclusão mútua, mas testará constantemente se a seção crítica está disponível e, portanto, desperdiça um tempo significativo do processador. Ele cria o problema conhecido como sincronização lockstep, em que cada thread só pode ser executado em sincronização estrita. Também não é expansível, pois suporta apenas no máximo dois processos de exclusão mútua.