ALGORITMO DISTRIBUIDO



Este algoritmo requiere la existencia de un orden total de todos los mensajes en el sistema, es decir, para cualquier pareja de mensajes debe conocerse cuál de ellos se generó primero.

En este algoritmo, cuando un proceso desea entrar en una sección crítica, construye un mensaje con su número de proceso y su márca de tiempo y sé lo envía á todos los procesos incluidos él mismo. Cuando un proceso recibe un mensaje de otro proceso que desea entrar en la sección crítica se analizan los tres siguientes casos:
1. Si el recéptor del mensaje no se encuentra ejecutando dentro de la sección crítica ni desea entrar en ella, envía un mensaje de respuesta, indicando al proceso que puede entrar en la sección crítica.
2. Si el receptor del mensaje ya está en la sección crítica, no responde al proceso impidiéndole de esta forma la entrada en la sección crítica.
3. Si el receptor desea, entrar, compara la marca de tiempo del mensaje con la marca de tiempo incluida en el mensaje que él envió al resto de procesos. Si el mensaje recibido tiene una marca menor, responde al proceso emisor permitiéndole la entrada en la sección crítica. En caso contrarió entra y no envía ninguna respuesta, impidiéndole la entrada.

Una vez que el proceso que desea entrar en la sección crítica ha enviado el mensaje al resto de procesos, espera la recepción de todos ellos confirmándole la entrada. Cuando recibe los mensajes de confirmación de todos los procesos entra en la sección crítica. En caso de que algún proceso estuviera en la sección crítica, no recibirá el mensaje de éste y por tanto el proceso se bloqueará hasta que salga. Cuando el proceso sale envía el mensaje que le falta al proceso para poder entrar. Este algoritmo distribuido tiene problemas, puesto que si uno de los procesos del sistema falla, el algoritmo deja de funcionar.