Algoritmo de dekker

Definición: ¿Qué significa el algoritmo de Dekker?

El algoritmo de Dekker es el primer algoritmo conocido que resuelve el problema de exclusión mutua en la programación concurrente. Se le atribuye a Th. J. Dekker, un matemático holandés que creó el algoritmo para otro contexto. El algoritmo de Dekker se utiliza en la cola de procesos y permite que dos subprocesos diferentes compartan el mismo recurso de un solo uso sin conflictos mediante el uso de memoria compartida para la comunicación.

Techinfo explica el algoritmo de Dekker

El algoritmo de Dekker permitirá que solo un proceso use un recurso si dos procesos intentan usarlo al mismo tiempo. Lo más destacado del algoritmo es cómo resuelve este problema. Logra prevenir el conflicto mediante la aplicación de la exclusión mutua, lo que significa que solo un proceso puede usar el recurso a la vez y esperará si otro proceso lo está usando. Esto se logra con el uso de dos "banderas" y un "token". Las banderas indican si un proceso quiere ingresar a la sección crítica (CS) o no; un valor de 1 significa VERDADERO que el proceso quiere ingresar al CS, mientras que 0, o FALSO, significa lo contrario. El token, que también puede tener un valor de 1 o 0, indica la prioridad cuando ambos procesos tienen sus banderas configuradas en TRUE.

Este algoritmo puede hacer cumplir con éxito la exclusión mutua, pero probará constantemente si la sección crítica está disponible y, por lo tanto, desperdicia una cantidad significativa de tiempo de procesador. Crea el problema conocido como sincronización lockstep, en el que cada hilo solo se puede ejecutar en sincronización estricta. Tampoco es expandible, ya que solo admite un máximo de dos procesos de exclusión mutua.