Está en la página 1de 1

Algoritmos de elección

Muchas aplicaciones y servicios distribuidos se basan en la existencia de un proceso diferenciado que


coordina el trabajo de un conjunto de procesos. Por ejemplo, acabamos de ver que el algoritmo
centralizado para exclusión mutua distribuida requiere un proceso coordinador.

En todas estas situaciones se requiere detectar que el proceso coordinador falla y elegir un nuevo
proceso que asuma el papel de coordinador. La elección requiere el acuerdo sobre quién va a ser el
nuevo y único coordinador. De nuevo, las decisiones se basan en la existencia de plazos para la
recepción de los mensajes de respuesta.

Por otra parte, para determinar el criterio de elección de un proceso como coordinador se requiere
definir un orden total entre el conjunto de procesos. Supondremos que los procesos tienen asociados
identificadores únicos según los cuales pueden ordenarse.

Algoritmo del anillo

• Sistema síncrono [Chang & Roberts79]. Cada proceso tiene un canal con el siguiente proceso en el
anillo. Los mensajes circulan en sentido de las agujas del reloj.

• El proceso que inicia el algoritmo se marca como participante y envía su identificador en un


mensaje de elección a su vecino.

• Cuando un proceso recibe un mensaje de elección compara el identificador recibido con el suyo.
– Si es menor el recibido y el proceso no es un participante, sustituye el identificador en el
mensaje por el suyo y lo reenvía al vecino y se marca como participante.
– Si es mayor el recibido, reenvía el mensaje y se marca como participante.
– Si es menor el recibido y el proceso es un participante, no hace nada (no envía ningún mensaje).
– Si el identificador coincide con el del proceso, ese proceso es el líder.

• El líder se marca como no participante y envía un mensaje elegido al siguiente proceso.

• Cuando un proceso distinto al líder recibe este mensaje, anota qué proceso es el líder y reenvía el
mensaje.

A tomar muy encuenta en la implementación:


Cuando un proceso P i sospecha que el coordinador falla, envía a su sucesor P (i+1) mod N un mensaje de
elección que contiene el identificador de Pi. Si Pi+1 no responde (ACK), P i repite el envío a Pi+2 y así
hasta que encuentra un proceso que confirma la recepción.

También podría gustarte