1. 1
2
Abstract— This article talks about the ring algorithm, since
many of the distributed algorithms require a process to act as a
coordinator, initiator, sequencer or to play some special role in
some way. In general, it does not matter which of the processes
takes on this special responsibility, but one of them must.
I. INTRODUCCIÓN
n algoritmo distribuido es un algoritmo diseñado para
ejecutarse en hardware de computadora construido a partir
de procesadores interconectados. Los algoritmos distribuidos se
utilizan en diferentes áreas de aplicación de la computación
distribuida, como las telecomunicaciones, la computación
científica, el procesamiento de información distribuida y el
control de procesos en tiempo real. Los problemas estándar
resueltos por algoritmos distribuidos incluyen elección de líder,
consenso, búsqueda distribuida, generación de árbol de
expansión, exclusión mutua y asignación de recursos. [1]
II. ALGORITMO DE ANILLO
El objetivo es elegir un proceso único para que tome un
determinado rol o para decidir una determinada acción.
Este algoritmo se usa cuando los procesos están física o
lógicamente ordenados en anillo, también en el caso de que no
se conozcan el número total de procesos (n), o en el caso de que
cada proceso se comunica con su vecino (izquierda o derecha).
[2]
Fig. 1. Algoritmo de elección que utiliza un anillo
III. APLICACIONES
Elegir un nuevo servidor si se cae el actual.
Elegir un nuevo proceso para entrar en una sección
*
Revista Argentina de Trabajos Estudiantiles. Patrocinada por la IEEE.
crítica.
Elegir el proceso menos activo (balanceo de carga).
Elegir el proceso con la copia más reciente (réplicas).
IV. CONSIDERACIONES
Cuando un proceso convoca elecciones cuando lleva a cabo
una acción que inicia el algoritmo de elección, pero también
puede haber N elecciones concurrentes
Un proceso siempre tiene uno de estos dos roles:
Participante: comprometido en una ejecución del
algoritmo
No participante: no comprometido en ninguna
ejecución
El proceso elegido debe ser único, incluso en elecciones
concurrentes
V. REQUISITOS Y RENDIMIENTO
Seguridad
Un proceso participante pi, donde el proceso elegido P
es aquél con identificador mayor que no se ha caído al
final de la ejecución del algoritmo de elección.
Permanencia
Todos los procesos pi participan
Rendimiento
Ancho de banda: proporcional al número de mensajes
enviados
Tiempo de ronda (tuernaround): tiempo pasado desde
que se convocan elecciones hasta que se elige un
proceso
VI. PROCEDIMIENTO
1. Inicialmente todos los procesos son “no participantes”.
2. Cualquier proceso P decide arrancar una elección en
cualquier momento.
3. Este proceso P se pone en estado “participante” y envía
un mensaje de elección M a su vecino.
4. El mensaje M enviado contiene el ID (identificador)
del proceso que ha iniciado la elección.
5. Cuando el vecino recibe el mensaje de elección M,
establece su estado como participante y comprueba el
ID del mensaje.
6. Si es mayor que su propio ID, entonces se lo envía
directamente a su vecino.
7. Si su ID es mayor al ID recibido, entonces lo coloca en
el mensaje M y lo envía a su vecino.
Algoritmo de anillo (Elección Distribuida)
Corona Carrillo Emmanuel, Sistemas Distribuidos, Grupo 1, Ingeniería en Computación, Facultad de
Ingeniería, UNAM. emmanuelcoronacarrillo@gmail.com
U
2. 2
8. Así se circula el mensaje M sucesivamente hasta que
llega a un proceso Pn que comprueba que el ID recibido
es el propio. Eso indica que solo ha sobrevivido el
mayor ID, que es la del proceso Pn.
9. Entonces, este proceso Pn es el coordinador y lo notifica
a su vecino. Cuando un proceso recibe un mensaje de
coordinador debe de poner su estado como “no
participante” y enviar el mensaje a su vecino.
10. Cuando el mensaje de coordinador retorna al proceso
que lo emitió (el coordinador), entonces todos los
procesos saben quién es el coordinador y todos quedan
en estado “no participantes”.
Fig. 2. Primeros pasos del procedimiento del algoritmo de anillo
En caso de que dos procesos inicien al mismo tiempo una
elección y se envíen mensajes de elección, un proceso en estado
de “participante” debe de verificar el ID del proceso que envía
el mensaje de elección. Si es menor al propio, el mensaje se
descarta. Así, todos los mensajes de elección se extinguirán,
excepto el que lleva el ID más alto.
VII. A TOMAR EN CUENTA
Suponemos que los procesos tienen un orden, físico o
lógico, de modo que cada proceso conoce a su sucesor.
Cuando algún proceso observa que el coordinador no
funciona. Construye un mensaje ELECCIÓN con su
propio número de proceso y envía el mensaje a su
sucesor.
Si éste está inactivo, el emisor pasa sobre el sucesor y va
hacia el siguiente número del anillo o al siguiente de este;
hasta que localiza un proceso de ejecución.
En cada paso, el emisor añade su propio número de
proceso a la lista en el mensaje.
VIII. RELACIÓN CON LOS SISTEMAS DISTRIBUIDOS
En general, los algoritmos distribuidos están diseñados para
resolver problemas estándar como elección de líder, consenso,
distribuido buscar, árbol de expansión generación, exclusión
mutua, y asignación de recursos.
Para el caso del algoritmo de anillo se puede aplicar para
coordinar con éxito la resolución de problemas muy grandes, ya
que se pueden tener muchos ordenadores conectados, dividir el
problema en partes pequeñas y así, en conjunto con el algoritmo
de anillo, se mantiene una comunicación entre procesos y entre
ordenadores para realizar los cálculos necesarios.
Aunque físicamente no se encuentran dispuestos un arreglo
tipo anillo, sí pueden ser relacionados en esa topología.
La elección de un algoritmo distribuido apropiado para
resolver un problema dado depende tanto de las características
del problema como de las características del sistema en el que se
ejecutará el algoritmo, como el tipo y la probabilidad de fallas
del procesador o enlace, el tipo de comunicación entre procesos.
que se puede realizar, y el nivel de sincronización de tiempo
entre procesos separados. [1]
IX. CONCLUSIONES
Este algoritmo basado en anillo posee características muy
atractivas para implementarla en una red servidores o grupo
de ordenadores conectados que realicen una acción conjunta,
lo que permite una comunicación de constante y eficiente.
Además de balancear la carga de trabajo entre los
diferentes elementos del anillo, con lo que se asegura que
todos trabajen casi a la par y que se maximice la eficiencia de
todos las partes del anillo.
Por lo que también se minimizan las condiciones de carrera
al determinar el nuevo proceso que entrará a una sección
crítica.
X. REFENCIAS
[1] N. Lynch, Distribuited Algorithms, San Francisco, CA:
Morgan Kaufmann Publishers, 1996.
[2] F. de Asis López Fuentes, Sistemas Distribuidos, CDMX:
UAM Cuajimalpa, 2015.