• No se han encontrado resultados

Unidad Iztapalapa Ciencias Básicas e Ingeniería

N/A
N/A
Protected

Academic year: 2018

Share "Unidad Iztapalapa Ciencias Básicas e Ingeniería"

Copied!
77
0
0

Texto completo

(1)

Unidad Iztapalapa

Ciencias Básicas e Ingeniería

Ingeniería Electrónica Computación

P R O Y E C T O

T E R M I N A L

=ELECCIóN DE LíDER EN

RED

DE

ANILLO=

=ASíNCRONO

=

Mora León Jesús Antonio. 92219786

(2)

Proyecto: Elección de Líder en una Red de Anillo

C a s a Abierla al Tiempo

CONTENIDO

(Proyecto Elección de líder en Anillo)

1 Manual Teórico

l . 1 Algoritmo para la elección de líder dentro de una red de anillo l . l . 1 Elección de líder en anillo síncrono

l . l . l . 1 Algoritmo LCR (Lee Chang Robert)

l . l . 1.2 Algoritmo HS (Hirschberg & Smclair) l . l . 1.3 Algoritmo Time Slice

l . l . 1.4 Algoritmo de Rapidez Variable

l . 1.2 Elección de líder en anillo asíncrono

l . 1.2.1 Algoritmo LCR (Lee Chang Robert)

l . 1.2.2 Algoritmo de Peterson

1.2 Análisis de un algoritmo determinísta

1.2.1 Algoritmo de Elección de Hirschberg & Sinclair

1.3 Análisis de un algoritmo probabilista

1.3.1 Algoritmo de las Vegas

I .4 Tabla comparativa para algoritmos deterministas y probabilistas

2 Manual Técnico

2.1 Comunicación Cliente-Servidor

2.2 Estrategias Cliente-Servidor

2.3 Sockets

2.3.1 Socket (TCP / UDP)

1 1 4 5 6 7 8 9 10 12 12 17 17 19 20 22 26 29

(3)

C a s a Abierla al Tiempo

Provecto: Elección de Líder en una Red de Anillo

3

4

5

Algoritmo de las Vegas

3.1 Manual de Usuario

3.2 Manual Técnico

3.3 Código Fuente

Algoritmo Hirschberg & Sinclair

4.1 Manual de Usuario

4.2 Manual Técnico 4.3 Código Fuente

Bibliografía

30

35

42

50

56

64

74

(4)

Provecto: Eleccihlz de Líder en una Red de Anillo

Casa Abierta 11 Tiempo

1.1 ALGORITMOS PARA LA ELECCIóN DE UN LÍDER

DENTRO DE UNA RED DE ANILLO.

¿Que es la elección de líder?

L a elección de líder es el proceso mediante el cual se determina a un proceso u objeto en especifico

que tendrá determinadas tareas especiales y distintas al resto de los procesos que forman el conjunto.

¿Dónde se usa?

L a elección de líder es utilizada dentro de aplicaciones donde convive un conjunto de entidades con

las mismas condiciones y es necesario escoger a una de ellas para que realice una determinada tarea o proceso en especifico (Simmetry Brealung Problem). Esta elección de líder se da dentro de

procesos distribuidos y redes que necesitan que en un determinado momento sea una de estas

entidades la que se dedique a una tarea concreta.

Para comenzar nuestra discusión respecto a los algoritmos que resuelven el problema de la elección

de un líder dentro de una red de anillo hablaremos de los algoritmos síncronos y una pequeña

descripción de algunos de ellos.

1.1.1 Elección de un líder en un anillo síncrono.

i Q u e significa síncrono? (Al mlsmo tiempo, 6 dentm de ciertas cotas de tiempo)

Es la capacidad ó propiedad de que determinados procesos se realicen al mismo tiempo. Es decir, dentro del funcionamiento de un proceso distribuido es necesario que ciertos cálculos ó tareas se realicen ó liberen al mismo tiempo, para que el resultado final sea correcto.

(5)

Provecto: Elección de Lider en una Red de Anillo

Casa Abierla al Tiempo

Para describir el problema proponemos un diagrama como el de la figura siguiente que consiste en un anillo de n nodos.

n

n - I 2

Los procesos asociados con los nodos del anillo no conocen sus identificadores, y ninguno de los dc

sus vecinos; nosotros asumimos que la generación de mensajes y las funciones de transición son

definidas en términos locales y nombres relativos para sus vecinos. El requerimiento para este problema es que, eventualmente, uno de los procesos obtenga como salida la decision de que es líder,

cambiando el valor de una componente para identificar un estado de líder. Hay varias versiones del

problema.

l . Se requiere que todos los procesos sepan quien es el líder

2. El anillo puede ser unidireccional ó bidireccional. Si es unidireccional, entonces los mensajes

pueden ser mandados en la dirección de las manecillas del relo-i.

(6)

C a s a Abierla a1 Tiempo

Proyecto: Elecciónz de Líder en una Red de Anillo

3 . El número de n nodos en el anillo puede ser conocido 6 desconocido por los procesos. Si es conocido, significa que el proceso solo necesita trabajar correctamente en el anillo de tamaño n,

y así puede usar el valor n en sus programas. Si es desconocido, significa que los procesos

pueden trabajar en anillos de tamaño arbitrario. Por lo tanto no utilizan esa información acerca

del anillo.

4. Los procesos pueden ser idénticos 6 distintos, al iniciarlos con un zinico identzficador (UID)

seleccionado de algún conjunto ordenado de identificadores como los enteros positivos, asumimos

que cada UID de proceso es diferente en el anillo. Estos identificadores pueden ser restringidos a ser manipulados solo por ciertas operaciones, así como comparaciones, 6 pueden ser admitidas

operaciones sin restricción.

(7)

Provecto: Elección de Líder en una Red de Anillo

~

Casa Abierla al Tiempo

1.1.1.1 Algoritmo LCR (Lee Chang Robert).

Este algoritmo utiliza solo comunicación unidireccional y no conoce el tamaño del anillo. Solo el

líder da una salida. El algoritmo utiliza operaciones de comparacicln sobre los UID.

En este algoritmo cada proceso manda su identificador alrededor del anillo. Cuando un proceso recibe un identificador lo compara con el suyo. Si el identificador entrante es mayor que el propio,

continua pasando el identificador entrante; si es menor que el propio, descarta el identificador que

llegó y reexpide el propio, y si es igual al propio, el proceso se declara así mismo como líder.

En este algoritmo, el proceso que tiene el mayor UID resulta líder

L a complejidad en tiempo del algoritmo básico LCR es de 2n vueltas hasta que el líder es anunciado

y la complejidad de comunicación es O(n2), es decir, de n al cuadrado mensajes en el peor dc los

casos. En la versión del algoritmo de paro, la complejidad de tiempo es de n y la complejidad de

comunicación sigue siendo de O(n2). El tiempo extra necesario para detener el algoritmo y para el aviso de no-líder es de n vueltas, y la comunicación extra es de n mensajes.

(8)

Provecto: Elección de Líder en una Red de Anillo

Casa Abierla al Tiempo

1.1.1.2 Algoritmo HS (Hirschberg & Sinclair).

Cada proceso i opera en fases O, 1,2, .... En cada fase 1 , el proceso i manda “lokens ” conteniendo su UID u, en las dos direcciones. El “token” intenta viajar una distancia de 2’, luego

regresa a su origen i . Si ambos tokens regresan seguros, el proceso i continua con la siguiente fase.

Como sea, los tokens puede que no regresen. Mientras un token uI va en la dirección de sus

fronteras, cada uno de los procesosj en la ruta de u, compara a u, con su propio UID. Si

u,

u], entoncesj simplemente descarta el token, mientras que si u, ’ui , entonces j reexpide a u i . Si entonces significa que el proceso j ha recibido su propio UID antes que el token haya dado vuelta, asi el procesoj se elige así mismo como el líder.

Si el token a viajado 2’ procesos y el ultimo proceso que lo recibe tiene un UID menor que el

repartido por el token , entonces devuelve al token por donde vino , este remonta al anillo hasta su fuente.

Para este algoritmo podemos decir que el número total de fases que son ejecutadas antes de que se

elija un líder y de que toda la comunicación se detenga es de al menos de 1

+

[logn] (incluyendo fase

O) así el total de mensajes es de al menos 8n(l + [log n]), lo cual es una complejidad de comunicación de O(n log n),

La complejidad en tiempo para este algoritmo es O(n)

A continuación mostraremos algoritmos donde los UID son enteros positivos y permiten ser manipulados por operaciones aritméticas generales. Para este caso presentamos dos algoritmos, el de

TimeSlice y el de Rapidez Variable (Variablespeeds) cada uno de O(n) mensajes.

(9)

Proyecto: Elección de Líder en una Red de Anillo

Casa Abikrla al Tiempo

1.1.1.3 Algoritmo TimeSlice.

Para este algoritmo es necesario saber el tamaño del anillo que diremos es de tamaño yz y es

conocido por todos los procesos, además de utilizar comunicación unidireccional.

El cómputo procede en fases 1,2,..", donde cada fase consiste de n vueltas consecutivas al anillo. Cada fase es asignada a la posible circulación, alrededor de todo el anillo, de un token cargando un UID particular. Más específicamente, en la fase v, que consliste en las vueltas (v -1)n-t 1 ,. , .,vn,

solo a un token cargando un UID v le es permitido circular.

Si un proceso i con UID v existe, y la vuelta (v-l)n+l es alcanzada sin que i previamente haya recibido ningún mensaje no nulo, entonces el proceso i se elige así mismo líder y manda un token

cargando su UID alrededor del anillo. Conforme este token viaja, todos los otros procesos que lo han recibido, se previenen de elegirse a ellos mismos como líder y mandar un token en cualquier otra

fase.

Con este algoritmo, el mínimo UID u,,* eventualmente da toda la vuelta, lo que causa que su proceso origen sea electo. Ningún mensaje es enviado antes de la vuelta (urnm -l)n+l, y ninguno es enviado después de la vuelta umln

*

n. Entonces el total de mensajes mandados es n.

Una buena propiedad de estos algoritmos es que el total de mensajes es de n. Desgraciadamente. la

complejidad en tiempo es de n

*

umm, lo cual es un número sin limites aun en un anillo definido. Esta

complejidad en tiempo limita el algoritmo; en la práctica se utiliza para pequeños anillos en donde

sus UID's pertenecen a un pequeño rango de enteros positivos.

(10)

Proyecto: Elección de Líder en una Red de Anillo

Casa Abierla a1 Tiempo

1.1.1.4 Algoritmo de Rapidez Variable(Variab1eSpeeds).

Este algoritmo muestra que es suficiente O(n) mensajes en el caso de anillos donde sus proccsos

conocen que n es el tamaño del anillo. Este algoritmo tambien utiliza comunicación unidireccional.

Desgraciadamente, la complejidad en tiempo de este algoritmo es peor que el algoritmo anterior:

O(n.2 Este algoritmo es como sigue:

Cada proceso i inicia un token, que viaja alrededor del anillo, cargando el UID u, de el proceso i

original. Diferentes tokens viajan a diferentes tasas. En particular, un token cargando un UID v viaja con una tasa de 1 mensaje transmitido cada 2" vueltas, esto es, cada proceso a lo largo de su ruta

espera 2" vueltas después de recibir el token antes de mandar el suyo.

Mientras tanto, cada proceso guarda pista de é1 UID más pequeño que ha visto y simplemente

descarta cualquier token cargando un identificador mayor.

Si el token regresa a quien lo originó, este es elegido. Como el algoritmo TimeSlice, este algoritmo garantiza que el proceso con el UID mas pequeño es elegido.

Este algoritmo garantiza que al tiempo que va viajando el token alrededor del anillo con el

identificador mas pequeño umln ~ el segundo identificador mas pequeño puede solo llegar a la mitad

del recorrido, el tercero mas pequeño puede solo llegar aun cuarto del recorrido y as1

consecutivamente. Por consiguiente, para el tiempo de la elección, el token con u,,,, usa exactamcnte n mensajes, por lo que el total de mensajes mandados. es de al menos 2n.

Pero tamblén, para el tiempo que umln da la vuelta al anillo todos los nodos saben acerca de su valor, y asi rechazan mandar algún otro token. Se sigue entonces que 2n 12s un limite superior en el total dc

números de mensajes que se pueden mandar por el algoritmo.

L a complejidad en tiempo, como ya se menciono, es de n

'

2 Umln, desde que cada nodo retarda el

token que carga a UID umln sólo 2 Um,nunldades de tiempo.

(11)

Provecto: Elecciójr de Líder en una Red de Anillo

Casa Abierla al Tiempo

1.1.2 Elección de un líder en un anillo asíncrono.

¿Qué significa asíncrono?

Como su nombre lo indica es lo contrario de síncrono, aquí los procesos realizan cálculos y operaciones y no es necesario que estos se realicen al mismo tiempo ó con una cota de tiempo.

Para la versión asíncrona, tenemos de nuevo un anillo de n procesos, numerados del 1 a n en

dirección de las manecillas del reloj. El anillo puede ser unidireccional ó bidireccional.

La siguiente figura muestra la arquitectura para un anillo asíncrono, incluyendo a procesos y

canales.

(12)

Proyecto: Elección de Líder en una Red de Anillo

C a s a Abierla al Tiempo

1.1.2.1 Algoritmo LCR (Lee Chang Robert).

Recordemos que en el algoritmo LCR, cada proceso manda su identificador alrededor del anillo, cuando un proceso recibe un identificador, lo compara con el propio. Si el identificador que llega es

mayor que el propio, continua pasándolo; si es menor que el propio, descarta el identificador que

llego; si es igual al suyo, el proceso se declara líder.

La misma idea continua funcionando en las redes asíncronas; la principal diferencia es que ahora

cada proceso mantiene un buffer que debe ser capaz de guardar cualquier número (no más de n) de

mensajes en lugar de sólo uno. La razón de la diferencia es que la asincronía puede causar apilamientos de UIDs en los nodos.

Para este caso tenemos un número de mensajes O(n2) igual que para el algoritmo síncrono, en el

análisis de tiempo del algoritmo asíncrono, asumimos que el tiempo de procesamiento es

despreciable y que el tiempo de comparación es a lo más l .

Un análisis nos da un límite de tiempo de O(n2(1+d)).

El largo máximo de cualquier buffer ó cola por proceso es n. Así, toma un tiempo de nl para un UlD en un buffer llegar a un canal adyacente, y un tiempo nd para un UID en cola de canal ser recibido por el próximo proceso. Por lo que la complejidad en tiempo es así de O(n’(l+d)).

Es posible obtener un análisis más refinado, consiguiendo un límite de O(n(l+d)).

El punto es que por medio de algunos buffers y colas a mandar, se puede alcanzar un largo de n.

(13)

Proyecto: Elección de Líder en una Red de Anillo

Casa Abierla al Tiempo

1.1.2.2 Algoritmo Peterson.

El algoritmo Peterson nos da una complejidad de comunicación de O(n1ogn) usando comunicación

unidireccional. Este algoritmo no necesita conocer el tamaño n del anillo. Utiliza comparaciones

entre los UIDs. Elige un proceso arbitrario como líder, no necesariamente el proceso con el máximo

ó mínimo UID. La complejidad de comunicación de O(n log n) tiene una pequeña constante como

factor (aproximadamente 2).

Para explicar de manera informal como funciona este algoritmo diremos que mientras se ejecuta,

cada proceso se designa para estar, ya sea en modo activo ó rtltransmisión; Todos los procesos

están inicialmente activos. Los procesos activos cargan con todo el “trabajo real” del algoritmo. Los

procesos en modo de retransmisión dejan pasar los mensajes por el anillo. Una ejecución del algoritmo es dividida en fases, en cada una el número de procesos activos es reducido en un factor de al menos 2, por lo que hay a lo más (log n ) fases. En la primera fase del algoritmo, cada proceso i

manda su UID dos pasos en el sentido del reloj, Luego el proceso i compara su propio UID con

aquellos de sus dos predecesores ui-1 y ui-2 en sentido contrarial a las manecillas del reloJ. Si su vecino en la dirección contraria tiene el UID mayor de los tres, esto es, si ui-l>ui-2 y ul-l>ut,

entonces el proceso i se mantiene activo, adoptando el UID de uli-1 de su vecino como un nuevo

“UID temporal”. Por otra parte si uno de los otros UIDs es el mayor de los tres, entonces el proceso

i simplemente se convierte en un transmisor para el resto de la ejecución.

Sentido de Fase

.,.’

Proyecto de Ingeniería Electrónica

M%

1

(14)

Proyecto: Elección de Líder en una Red de Anillo

Casa Abierla 11 Tiempo

~~

Cada fase subsecuente procede de la misma forma. Cada proceso activo i ahora manda su UID

temporal a los siguientes dos procesos activos en la dirección del reloj, y espera obtener los UlDs

temporales de los procesos activos predecesores. Ahora, si el primer UID predecesor activo es el más grande de los tres, el proceso i se mantiene activo, adoptando el UID de su predecesor, en el caso contrario, el proceso i se convierte en un proceso que sólo pasa mensajes.

Si en alguna fase, un proceso i ve que el UID temporal que recibe de su inmediato predecesor activo

es igual al que tiene, entonces i sabe que es el Único proceso activo que queda. En este caso, el

proceso i se elige así mismo como líder.

Debe quedar claro que en cualquier fase en la cual halla más de un proceso activo, al menos un

proceso descubrirá una combinación de UIDs que le permita permanecer activo en la siguiente fase.

Además, al menos la mitad de los procesos activos pueden sobrevivir una fase dada, todos los procesos que permanecen activos deben tener un predecesor inmediato activo que pasa a modo de

paso.

Ahora analizaremos su complejidad. Como establecimos antes, el número de procesos activos es la

mitad en cada fase, hasta que un proceso activo permanece. Esto significa que el total de nilmeros de

fases hasta que un líder es elegido es [log n]

+

1 .Durante cada fase, el proceso (ya sea activo 6 dc

transmisión) manda como máximo dos mensajes, Así; 2n([log n] +1) mensajes son enviados en

cualquier ejecución del algoritmo. Esto es O(n log n) con una mejor constante que para el algoritmo

HS

Esto es por que hay O(log n) fases, y podemos mostrar, de que para cualquier p, las primeras p fases

son completadas con un tiempo de O(pn(l+d)) (En cada fase? cada UID viaja una distancia O(n> alrededor del anillo. Toma un tiempo de a lo mas I+d para un mensaje viajar de un nodo al siguiente,

suponiendo que no esta bloqueado por un apilamiento.

Un análisis más refinado nos da un limite superior de O(n(l+d)). Para dar una idea podemos dcclr que ignoramos los apilamientos ya que estos no dan un significativo retraso en el cálculo de é1 peor

caso.

(15)

Casa Abierla al Tiempo

Proyecto: Elección de Líder en una Red de Anillo

1.2

ANALISIS

DE

UN ALGORITMO

DETERMINISTA.

1.2.1 UN ALGORITMO COMPLEJIDAD DE COMUNICACI~~N DE O(N LOG N). (ALGORITMO DE E L E C C I ~ N DE HIRSCHBERG & SIIVCLAIR)

El primer algoritmo publicado que reduce la complejidad del peor caso a O(n log n) es el

Hirschberg

&

Sinclair

(HAY).

Para iniciar su análisis suponemos que el líder necesita tener una

salida, también asumimos que el tamaño del anillo es desconocido, pero aquí tenemos una

comunicación bidireccional.

Al igual que otros algoritmos de elección el algoritmo

HS elige el proceso con el máximo

UID. Aquí todo proceso, en lugar de mandar su UID a lo largo del anillo, lo manda viajar

una distancia para después regresar al proceso de partida. Se hace esto repetidamente para

distancias más grandes cada vez. El algoritmo

HS

se describe como sigue.

Algoritmo

HS

(informal):

Cada proceso

1

opera en fases

O,

1,2

....

En cada fase

I,

el proceso

i

manda

su “ficha” que

contiene

su

ID

uI

en ambas direcciones. Esta ficha intenta viajar

2’,

y

después regresar a

su

origen (ver figura).

(16)

Proyecto: Elección de Líder en una Red de Anillo

C a s a Abierla al Tiempo

Si las dos “fichas” regresan sin ningún problema, el proceso

1’

continua la siguiente fase.

Sin embargo las fichas pueden no regresar al punto de partida. Mientras la ficha del proceso

u,

esta viajando en la dirección de ida, cada proceso j en la ruta de

u,

compara a la ficha con

su correspondiente UID

u/.

Si u,<u,, entonces

j simplemente descarta la ficha, mientras si

u,

>

uj,

entonces transmite

u,. Si u;= uj,

entonces significa que el procesoj ha recibido su propio

UID antes que la ficha diera la vuelta completa, entonces el proceso

j

se elige así mismo

como el líder, en el trayecto de regreso todo proceso transmite la ficha.

Ahora describiremos el algoritmo más formalmente. Esta vez, la formalización requiere de

registro para asegurar que las fichas sigan la trayectoria correlcta.

Primeramente, banderas son cargadas por las

fichas indicando el sentido en que van

viajando, de ida

ó

de regreso. Además, cada salto entre proceso va siendo contado para que

la ficha guarde registro de la distancia que debe recorrer; esto permite que el proceso se dé

cuenta de cuando la dirección de la ficha debe ser invertida. Podemos presentar el algoritmo

de una manera formal

Algoritmo HS formal):

El mensaje que definiremos consta de 3 campos, el UID, una bandera con valor (out, in}, y un

entero positivo que son los saltos a recorrer.

Para un proceso

i,

las variables que describen su estado son:

send+. contiene elementos de Z o null, send., contiene elementos de Z 6 null,

inicialmente send+ y senti - se compone de la tripleta IJID, out, y 1

status. toma valores {unknown, leader), inicialmente unknown

phase, un entero no negativo, inicialmente = 8

e Z conjunto de enteros positivos

send+: envía en sentido de las manecillas del reloj

send -: envía en sentido contrario de alsmanecillas del reloj

(17)

Casa Abierla al Tiempo

Proyecto: Eleccidn de Líder en una Red de Anillo

La condición del estado de inicio

start,

consiste de un estado definido para las

inicializaciones dadas.

Para cada

i,

la

función que genera el mensaje

msgs

se define como sigue:

Envía el valor que tiene send+ al proceso 1+1 Envia el valor que tiene send- al proceso i - 1

Para cada

i,

la función de transición

trans,

esta definida por ell siguiente pseudocódigo:

send+ := null

send - := null

si el mensaje de i - l(vecino izquierdo) es (v. out,hj entonces

caso

v " u y h ' 1 :

send+ := (v,out,h - 1 j /*reexpide hacía la derecha

v " u y h = 1:

send - := (v, in ,1) ,*devuelve por la izquierda v = u :

stutus := leader I* se elige fin caso

si el mensaje de i+ I(vecino derecho) es (v, ouf,h) entonces

caso

v - ' u y h ' 1 :

send-:= (v,out,h - 1) /*reexpide hacía la izquierda v ' u y h = l .

send+:= (v, In ,1) !*devuelve por la derecha v = u :

status := leader /*se elige

fin caso

si el mensaje de r - 1 es (v, rn. 1) entonces (venno rzqulerdo)

send+ := (v, In, 1) /*devuelve por la derecha

si el mensaje de 1 + 1 es (v. rn. 1) entonces (vecino derecho) send - := (v. m , 1 j /*devuelve por la izquierda si los mensaje de I - 1 y I A 1 son ( u , In, 1) entonces

phase- := 2*phase send+-:= (u,out,2 a la phase)

send-:= (u,out,2 a laphase)

Al igual que antes, las primeras dos líneas son para limpiar el estado

(18)

Proyecto: Elecciótl de Líder en una Red de Anillo

Casa Abierla al Tiempo

Análisis de Complejidad

Primeramente analizamos la complejidad de comunicación.

Cada proceso manda una ficha en la fase

O;

esto es un total de 4n mensajes para la ficha que

va de ida y vuelta en ambas direcciones. Para

I

>

O,

un proceso manda una ficha en la fase

I

si recibió sus dos fichas de regreso en la fase 1-1.

Esto es exacto sino h e vencido por otro proceso dentro de la distancia

2'"

en cualquiera de

las direcciones a lo largo del anillo.

Esto implica que dentro de cualquier grupo de procesos consecutivos de

2""'+1,

al menos

uno va a iniciar sus fichas en la fase

1.

Esto puede ser usado para mostrar que al menos

procesos, todos juntos inician sus fichas en la fase

1.

Entonces el total de

números de

mensajes enviados en la fase

I

esta delimitado por

Esto es debido a que las fichas en la fase k

viajan a través de una distancia 2'.

De nuevo, el factor de

4

es derivado de que Ia ficha es enviada en ambas direcciones

(A

favor y en contra de las manecillas del reloj)

y

de que cada ficha en la dirección de ida tiene

que dar la vuelta y regresar.

El

número total de fases que son ejecutadas antes de que el líder sea elegido

y de

que toda

comunicación se detenga es de al menos

1

+

(log

n>

incluyendo a la fase

O,

así el total de

mensajes es de al menos

8rz(l+

(log n)),

que O(n log n), con

u n

factor constante de

8.

(19)

Proyecto: Elección de Líder en unu Red de Anillo

Casa Abierla al Tiempo

La complejidad en tiempo para este algoritmo es justamente O(n). Esto se puede ver

notando que el tiempo para cada fase 1 es

2

*

2' = 2'"'' para las fichas que van hacia h e r a

y

de regreso.

La fase final toma un tiempo de

n,

esta es una fase incomlpleta, con fichas viajando en la

dirección de ida. La penúltima fase

es

la fase 1 = (log

n )

-1,

y

su

complejidad en tiempo es de

al menos tan grande como el total de la complejidad en tiempo de todas las fases anteriores.

Así, el

total de complejidad en tiempo de todo menos de la fase final es de al menos

2

*

2'og *

Se sigue que el total en complejidad en tiempo

es

d e al menos 3n si

n es

potencia de 2.

(20)

Proyecto: Eleccidn de Líder en una Red de Anillo

C a s a Abierla 11 Tiempo

1.3

ANALISIS

DE UN ALGORITMO PROBABILISTA.

El problema de la elección de líder puede verse como un cambio en la configuración del sistema.

En una configuración inicial del sistema, todos los procesos activos están en el mismo estado

(candidato), en una configuración final, un solo proceso está en un estado predeterminado (elegido) y

todos los demás en un estado predeterminado diferente al anterior (vencido). En la variante del

problema donde los procesos tienen “identidades”, suponemos que todos los procesos tienen manera

de diferenciarse, por el contrario, en una variante “anónima”, el problema de la elección del líder se

resuelve con procesos totalmente idénticos. Los algoritmos distribuidos de elección hechos para redes con identidades operan haciendo una comparación con las identidades de los procesos, son generalmente algoritmos de cálculo de extremos (máximos ó mínimos). En las redes anónimas es evidente que no se efectúa un cálculo de extremo sobre las identidades, la elección anónima rompe

la simetría entre procesos comparando los números producidos aleatoriamente por dichos procesos.

En estas dos variantes, el problema de la elección de líder sobre anillos simples hace aparecer

claramente casi todos los problemas fundamentales de los algoritmos distribuidos y particularmente.

el desempeño ó funcionamiento de los algoritmos.

Podemos decir que es posible construir un esquema general de los algoritmos de elección dentro de

los algoritmos probabilistas ya que 10s anillos unidireccionales tienen varias propiedades

particulares.

1.3.1 Algoritmo de Las Vegas

Ahora dentro de la elección de un líder en un anillo anónimo síncrono tenemos el algoritmo distribuido de Las Vegas A l

Para el algoritmo decimos que su complejidad en tiempo dentro de un “anillo sincrom

unidirecciond’ de orden n es O(n). De manera semejante podemos decir que tiene una complejidad

en bits de la misma forma, es decir, O(n). Así decimos también que su complejidad en memoria es de

log n bits. Finalmente tenemos que la complejidad en comunicación es de n bits.

(21)

Proyecto: Elección de Líder en una Red de Anillo

C a s a Abierla al Tiempo

Ahora, dentro de los algoritmos para la elección de líder sobre un anillo anónimo asíncrono

tenemos el caso de un algoritmo que finciona para el caso del anillo unidireccional. Este algoritmo

es el algoritmo distribuido de Las Vegas A2 este algoritmo podemos decir que consta de dos etapas la primera llena de creación de candidatos, consiste en seleccionar los candidatos dentro del anillo que pueden llegar a ser líderes. Esta primera etapa resulta con una complejidad de mensajes

enviados de O(qn

+

cn). La segunda etapa de este algoritmo es la llamada de Elección, que es la quc determina quien será el líder dentro del anillo. En esta segunda parte decimos que la correspondiente

complejidad en mensajes en cierta etapa es lineal y es de la forma O(cn).

El algoritmo en código es el siguiente :

Algoritmo A 7 (Pi);

const n;

var a,c,fase: entero;

estado : {activo, candidato; vencido)

inicio

a: = n;

C.' = o;

estado: =activo; /*inicializacion */

repite

fase : = origen

si estado : = activo entonces

x: = uniforme(0,l I

si x < = l/a entonces

otro

estado : = candidato; c: = 7;

un mensaje

fin-si

fin-si

mientras origen - datephase <n haz

finmientras /+origen - datephase = n */

si c: = 1 entonces /*un unico lider */

c.. = c + I;

fin.

si estado =candidato y c > 1 entonces otro

r i n i otro

estado: =activo

estado: = vencido

c.. = o;

fin-si

hasta que c = 1; /+candidato elegido +/

fin

(22)

Provecto: EleccióAt de Líder en una Red de Anillo

Casa Abierla al Tiempo

1.4 Tabla Comparativa Para Algoritmos Deterministas y Probabilistas

Algoritmo LCR O(n

*

)

1

2n Y O(n)

7

Algoritmo TimeSlice O@>

T

O(n)

'1

Algoritmo 2n Y O(n)

Variablespeeds

Algoritmo AsynlLCR

Algoritmo 2n([log n] +1>

=

O(n log Petersodeader

lgoritmo Distribuido n

de Las Vegas A l

'Algoritmo Distribuido" ElecciÓn(H)

I

1

Elección(l2)

I

Candt(n,q)

1

(23)

Proyecto: Elección de Lider en una Red de Anillo

C a s a Abierla al Tiempo

2.1 C O M U N I C A C I ~ N CLIENTE-SERVIDOR.

En el modelo cliente-servidor, los procesos llamados servidores 1le:van a cabo tareas, en beneficio dc

otros procesos denominados clientes. La mayor parte de las redes de área local cuenta con servidores

de archivos que gestionan el espacio en disco común, facilitando le1 uso compartido de archivos y la preparación de copias de respaldo.

Muchas aplicaciones y servicios de red como el correo, la transferencia de archivos (ftp). la

verificación de autenticidad (Kerberos), el ingreso remoto (telnet) y el acceso a sistemas de archivos

remotos (NFS), se basan en el modelo cliente servidor.

El servidor puede estar en la misma máquina que el cliente ó en una distinta, en cuyo caso la comunicación se realizará a través de una red. Dos clases de proltocolos de comunicación de bajo

nivel que manejan el modelo cliente-servidor son los protocolos (orientados a las conexiones y los

protocolos sin conexiones. En el primer caso, un servidor espera que un cliente solicite una conexión,

una vez que se establece se utiliza un descriptor de esta conexión para invocar los servicios que se

requieran.

Una estrategia alternativa es utilizar un protocolo sin conexiones. El cliente envía un mensaje ai

servidor; este a su vez presta el servicio y devuelve una respuesta.

Los protocolos, tanto aquellos sin conexiones como los orientados a las conexiones, se consideran dc

bajo nivel en cuanto a que la solicitud de servicio impllca una comunicación visible. El programador tiene presente la existencia y la ubicación del servidor. y debe nombrar explícitamente el servidor

especifico con el que desea comunicarse.

(24)

Provecto: Elección de Líder en una Red de Anillo

C a s a Abierla al Tiempo

La asignación de nombres a los servidores en un entorno de red es un problema difícil. El método

obvio consiste en designar un servidor por su ID de proceso y su ID de nodo. Sin embargo, como el

ID de proceso se asigna cronológicamente en el momento en el que el proceso inicia su ejecución, cs

difícil saber con antelación el ID de un proceso específico en un nodo.

Un servidor “escucha” en un puerto bien conocido que se ha designado previamente para un servicio

en particular. Al establecer la conexión, el cliente especifica claramente una dirección de nodo y un

número de puerto en ese nodo.

La comunicación cliente-servidor más sencilla se efectúa através de un solo puerto de comunicación

como el que se muestra en la siguiente figura.

(25)

Proyecto: Elección de Líder en una Red de Anillo

Casa Abierla al Tiempo

2.2 ESTRATEGIAS CLIENTE-SERVIDOR.

Si el cliente y el servidor comparten un sistema de archivos y se ejecutan en la misma máquina, el

mecanismo de comunicación puede ser una tubería(pipe) tipo FIFO. Mientras que si se encuentran

repartidos sobre una red puede usarse un socket 6 una conexión TLL

Cuando el servidor se inicia, abre su conexión de socket con un puerto bien conocido y espera

solicitudes de los clientes. Cuando un cliente necesita un servicio, abre una conexión de socket con el puerto bien conocido del servidor y escribe su solicitud. A continuación, el servidor da el servicio. Este enfoque funciona muy bien si sólo hay un cliente. Si hay más de un cliente, es necesario establecer una convención para enviar el ID de proceso del cliente a fin de poder distinguir las

solicitudes de cada uno de los clientes.

Un solo puerto no es suficiente en el caso de que el cliente necesita recibir una respuesta del servidor. pues no se cuenta con un mecanismo para que el cliente obtenga la respuesta correcta.

La implementación con sockets cuenta con una llamada recvfrom que permite al servidor escuchar

en un puerto de socket bien conocido y detectar solicitudes. Cada solicitud incluye la identidad de

quien la envió. El servidor simplemente utiliza esta identificación en una respuesta sendto al cliente.

Las llamadas recvfiom (recibir de) y sendto (enviar a) constituyen la base del protocolo de sockcz,s sin conexiones.

Si el cliente y el servidor necesitan seguir interactuando durante el procesamiento de la solicitud, resulta útil contar con un canal de comunicación bidirecclonal que sea privado y que no requicra un

intercambio de información de ID de proceso en cada mensaje.

(26)

Proyecto: Elección de Líder en una Red de Anillo

Casa Abierta al Tiempo

La siguiente figura ilustra un mecanismo de transferencia en el que la solicitud inicial del cliente sólo

sirve para establecer el canal de comunicación bidireccional que es privado pero no es específico

para un cliente.

)solicitud del cliente

I

Los protocolos orientados a conexiones utilizan el mecanismo de transferencia para establecer un

canal de comunicación entre el cliente y el servidor.

Una vez que un servidor recibe una solicitud y establece un canal de comunicación, puede adoptar

varios canales distintos para atender las solicitudes.

Una posibilidad es cuando un servidor que recibe una solicitud, s’e dedique integramente a atender

esa solicitud antes de aceptar solicitudes adicionales. La figura anterior ilustra la estrategia de

servidor en serie 6 iterativo.

(27)

Casa Abierla al Tiempo

Proyecto: Elección de Líder en una Red de Anillo

Un servidor ocupado que atiende solicitudes de larga duración. colmo transferencias de archivos, no

puede utilizar la estrategia de servidor en serie porque sólo permite atender una solicitud a la vez. En la estrategia de servidor concurrente, el servidor construye (bihrca) un hijo que preste el servicio

real al cliente mientras el servidor vuelve a escuchar para detectar solicitudes adicionales. La

siguiente figura es una representación de la estrategia servidor concurrente, y es ideal para servicios

como la transferencia de archivos que tardan un tiempo relativamente largo e implican gran cantidad de bloqueos.

[

comunicación

(28)

Casa Rbierla al Tiempo

Proyecto: Elecciótt de Líder en una Red de Anillo

Puesto que el servidor hijo se encarga de prestar el servicio real en la estrategia de servidor padre, el servidor puede aceptar múltiples solicitudes de clientes en rápida sucesión.

La estrategia de sewidor con hilos representada en la siguiente figura es una alternativa con bajo costo extra que puede utilizarse en lugar de la estrategia servidor padre. En lugar de bifurcar un hijo

para que atienda la solicitud, el servidor crea un hijo en su propio espacio de proceso. Los hilos tienen un gasto mucho menor y el enfoque puede ser muy eficiente, sobre todo si la solicitud es

pequeña 6 en ella predomina la E/S.

t

comunicación

I

Una desventaja de la estrategia de servidor con hilos es la posible interferencia entre varias

solicitudes en virtud del espacio de direcciones compartido. En el caso de servicios en los que

predominan los cálculos, los hilos adicionales pueden reducir la eficiencia del hilo principal del

servidor 6 incluso bloquearlo.

(29)

Provecto: Elección, de Líder en una Red de Anillo

Casa Abierla al Tiempo

2.3 SOCKETS.

La interface de sockets f i e primeramente implementada con el sistema 4. lcBSD para VAX En

1982. A continuación mostramos una tabla donde especificamos las fimciones que los sockets deben implementar para una acción determinada.

SOCKETS

Espacio Asignado

Crea punto de encuentro

Dirección de lazo

Especifica cola listen Espera por conexión

Obtener nuevos fd

Espacio Asignado

Crea punto de encuentro

Dirección de lazo

Conexión a servidor

Transferencia de Datos read

(1

)

write ( ) recv ( )

Datagramas

sendto( ) Terminaciones

shutdown ( )

Proyecto de Ingeniería Electrhica

[zmq

(30)

Provecto: Elección de Líder en una Red de Anillo

Casa Abierla al Tiempo

A continuación mostramos el diagrama de un escenario típico que toma lugar para una transferencia orientada a conexión y aquí el servido es iniciado primero y un tiempo después algún cliente cs iniciado y conectado al servidor.

Servidor

(conecction-oriented protocol)

r

1

socket ( )

I

+

bind ( )

Se bloquea hasta Cliente

conectarse con el cliente

l+

-

-

datos(request.1

proceso de solicitud

datodreplay)

LZ-7

~~ ~~ ~

(31)

Provecto: Elecciónl de Líder en una Red de Anillo

C a s a Abierla al Tiempo

Para un cliente-servidor usando un protocolo sin conexión, tenemos que las llamadas a sistema son

diferentes. El siguiente diagrama muestra estas llamadas. El cliente no establece una conexión con

el servidor. En lugar de establecer una conexión, el cliente manda un datagrama al servidor usando

la llamada a sistema sendto , la cual requiere la dirección destino (servidor) como parámetro. De manera similar el servidor no tiene que aceptar una conexión por parte del cliente. En lugar de eso, el

servidor sólo utiliza la llamada a sistema recvfrom que espera hasta que los datos llegan de algún

cliente. El recvfrom regresa la dirección de red de un proceso cliente. asi el servidor puede mandar

su respuesta al proceso correcto.

Servidor

(protocolo sin conexi6n)

7

socket ( )

bloques hasta recibir

7

socket ( )

bind ( )

datos de un cliente

I

datos (request) solicitud-de proceso

I

datos(repiy1

(32)

Proyecto: Elección de Líder en una Red de Anillo

Casa Abierla al Tiempo

2.3.1 Sockets (TCP/UDP)

Podemos decir que un socket es la combinación de una dirección IF’ y un número de puerto.

Este término aparece en las especificaciones originales de TCP y más tarde también se tomo este nombre para la interface programable derivada de Berkeley.

Se dice que socket pair es el que especifica los dos puntos finales que de forma única determinan

cada conexión TCP en internet.

A continuación hablaremos de los protocolos TCPIUDP como un s;umario para que el lector conozca sus principales características.

Primeramente es bueno decir que aunque TCP (Transmisión Control Protocolo) y UDP (User Datagram Protocol) utilizan la misma capa de red (IP), TCP nos brinda un servicio totalmente

diferente a la capa de aplicación que nos da UDP.

TCP soporta servicios orientados a conexión (byte stream).

El termino orientado a conexibn significa que dos aplicaciones que usan TCP (normalmcnte consideradas cliente - servidor) debe establecer una conexión TCF’ entre cada una de ellas antes de que puedan intercambiar datos. Por lo que podemos decir que hay dos terminales comunicándose

entre ellas con una conexión TCP.

TCP es un servicio confiable de transporte entre puntos extremos

UDP es simplemente un protocolo de transporte no confiabl’e y sin conexión (orientado a datagramas), cada operación de salida dada por un proceso produce exactamente un datagrama

UDP, que viaja encapsulado en un datagrama IP.

Se envían los datagramas que la misma aplicación escribe dentro de la capa IP, pero no hay garantía

de que se haga la comunicación.

(33)

Provecto: Elección de Líder en una Red de Anillo

Casa Abierla al Tiempo

3.1 MANUAL DE USUARIO (Algoritmo <<Las Vegas>>))

Este programa funciona mediante un algoritmo que determina quien es el líder de acuerdo a la probabilidad de cada computadora dentro de n máquinas, es decir, que utiliza una función que nos regresa un valor real entre (0,l) y el valor aleatorio que esta función nos da resulta ser menor ó igual

que la probabilidad l/n que tiene cada maquina de ser líder, este proceso puede seguir compitiendo,

de lo contrario eventualmente este proceso quedará vencido y no podrá seguir compitiendo para ser líder, por otro lado quienes si cumplieron la condición tienen primero que conocer cuantos siguen

compitiendo para ser líder y así pasar a la siguiente ejecución del algoritmo y que se repitan las

operaciones hasta que exista solamente un candidato a ser líder dentro del anillo y por lo tanto el

algoritmo termine nombrándolo como el Único líder del anillo.

Para mostrar de una manera más practica como fimciona el algoritmo y que es necesario para echarlo

a trabajar, a continuación daremos una explicación paso a paso de lo que se tiene que hacer para

poder ejecutarlo.

Primeramente es necesario aclarar que el algoritmo en su totalidad esta dividido en cuatro módulos

El primero de estos módulos se llama ‘‘pr0to.h’ y contiene las variables globales y las llamadas a las librerías que contiene las fbnciones que nuestro programa utiliza.

El segundo modulo es el “anillo.h”, este módulo contiene todas las funciones estructurales necesarias

para formar el anillo, es decir, las fimciones necesarias para hacer las conexiones entre cliente-

servidor que nos sirven para formar el anillo lógico entre n computadoras.

(34)

Proyecto: Elección’ de Líder en una Red de Anillo

Casa Abierla al Tiempo

El siguiente modulo es “AlgorVeg.h’, contiene el cuerpo principal del algoritmo <<Las Vegas>> . Es

decir, la codificación del algoritmo junto con una función capaz de saber el número de máquinas que

después de una vuelta siguen siendo activas.

El último módulo “LasVegas.c” contiene las solicitudes de los valores para las variables globales, además de la llamada a la función ‘Zonagrincipal’ que inicializa el anillo y realiza la llamada

correspondiente a éI algoritmo <<Las Vegas>>.

Estos cuatro módulos anteriores serán explicados con más detalle dentro de la parte del manual

técnico correspondiente a este algoritmo.

Es importante mencionar que estos cuatro módulos deben estar en todas y cada una de las máquinas que participen en el anillo y vayan a ejecutar el algoritmo.

Una vez que los cuatro módulos estén en un mismo directorio es; necesario compilar el programa

“LasVegas.c” ya sea con CtrbF9 dentro de la utileria XWPE o WPE de linux con este programa cargado o bien desde el directorio que contenga los módulos mediante la instrucción

gcc EasVegasx -o LasVegasx

Donde el último parámetro puede cambiar segun se elija sabiendo que este último será el nombre del

programa ejecutable.

(35)

Proyecto: Elección1 de Líder en una Red de Anillo

C a s a Abierla al Tiempo

Después de haber compilado, el programa se ejecuta de la siguiente manera:

./LasVegas.e

Antes de la ejecución del algoritmo es necesario conocer la dirección de quienes participarán en el

anillo, pues este es uno de los parámetros necesarios para formar el anillo. El anillo debc ir formándose armando primero todos los procesos como “servidores” y el último proceso deberá ser marcado como “cliente”, es decir, que para que el algoritmo funcione debe haber uno y solo un

“cliente” a la hora de echar andar el algoritmo, además de que al momento de armar el anillo se debc

llevar un orden en las direcciones que se colocan para formar el anillo, de otra forma el anillo no quedará bien formado y el algoritmo marcará un error.

AI momento de ejecutar el algoritmo aparecerá la siguiente pantalla.

(36)

C a s a Abierla a1 Tiempo

Proyecto: Eleccidn de Líder en unu Red de Anillo

EL primer parámetro que nos pide el programa es la dirección de red de quien estará conectado a la máquina que esta pidiendo el dato. la dirección en este parámetro debe tener el siguiente formato

entero.entero. entero.entero por ejemplo:

148.206.32.10

Así, codifica la dirección IP de la siguiente máquina con la que se conecta la estación que sc esta

configurando. Es importante que este parámetro se introduzca de manera correcta y quc exista de manera real pues de lo contrario el algoritmo no se ejecutará.

El segundo parámetro especifica si el proceso actual debe actuar como “servidor” o “cliente”. Este

parámetro es importante para el fimcionamiento del anillo sabiendo que este trabaja bajo la técnica dc

cliente

-

servidor. Es necesario saber que solamente un proceso dlebe funcionar como clicnte y que

también debe ser el último en comenzar, es decir, que primero tenemos que terminar de darle los

parámetros a todos los procesos servidores y hasta el final llenar los parámetros del cliente para que

el algoritmo empiece a funcionar.

El siguiente parámetro a teclear es el que se refiere al número de puerto de comunicación que

utilizara la computadora para realizar las recepción y envío de información. Es importante que este

número sea mayor a 5500 pues números menores están ya siendo ocupados por la computadora para otras tareas y al estar ocupados no permitirían que el algoritmcl se comunique como es debido. También debemos mencionar que este número de puerto debe ser el mismo en todas las máquinas en

las que se desee ejecutar el programa y en las que se quiera formar el anillo.

(37)

Proyecto: Elección de Líder en una Red de Anillo

Casa Abisrla al Tiempo

Después de que se eligió un número de puerto y este funcionó de manera satisfactoria, este puerto

queda inhabilitado para ejecuciones posteriores del algoritmo. Por lo que siempre que se ejecute el

programa hay que elegir un número de puerto distinto.

El cuarto parámetro pide un número entero cualquiera, a diferencia del número que se pide en el puerto. debe ser distinto en cada uno de los procesos que participan en la elección del líder. Esto,

debido a que este numero sirve como “semilla” ala función que nos dará los números aleatorios entre

(0,l). Esta semilla nos servirá para que cada proceso genere un grupo de números distintos entre

cada proceso. Si de alguna forma esta semilla fuera la misma entre dos o más procesos la generación de números sería la misma entre los procesos que tienen la misma semilla y de esta manera el algoritmo nunca terminará, puesto que siempre estará cumpliendo las mismas comparaciones entre

todos los que estuvieran generando los mismos números y nunca tendríamos un líder en concreto.

También es bueno mencionar que aunque no debe de repetirse el ]mismo número entre procesos, se

puede repetir en una ejecución distinta del algoritmo a diferencia de lo que pasa con el número del

puerto donde ya que se utilizó un número no se puede utilizar posteriormente.

Por último, el parámetro que se refiere al tamaño del anillo debe ser llenado con 11 numero predeterminado del tamaño “n” del anillo, un dato necesario que el algoritmo utiliza para la ejecución correcta del mismo.

Un proceso marcado como “servidor” después de que recibió este parámetro entrará en estado de

espera hasta que el algoritmo se ejecute.

Un proceso marcado como “cliente”, iniciará la ejecución del algoritmo al recibir el parámetro, por lo cual debe ser el idtimo en configurar.

(38)

Casa Abierla al Tiempo

Proyecto: Elección de Líder en una Red de Anillo

3.2 MANUAL TECNICO (Algoritmo <<Las Vegas>>).

Para entender como se resuelve la elección de líder en un anillo con técnicas probabilistas. mostramos un diagrama de la comunicación entre las funciones y la comunicación entre los procesos hijos que se

crean, en cada máquina que participa.

-cliente Tuberia-para-el- -sewidc

La función “Zonaqrincipal” es quien inicia las llamadas a las funciones “Tuberiagara-el-servidor”

y “Tuberiaqara-el-cliente”, estas a su vez crean un “pipe” para comunicarse con los procesos hijos que manejarán la comunicación por ‘sockets tcp’ para la parte del cliente y para la parte del servidor de cada una de las máquinas que estén participando en el anillo.

(39)

Proyecto: Eleccidn de Líder en una Red de Anillo

Casa Abierla al Tiempo

Después de que se han credo los sockets y los procesos hijos correspondientes para manejarlos,

dentro de la función “Zonagrincipal” se hace la llamada a “Algoritmo~LasVegas” que contienc la estructura del algoritmo <<Las Vegas>> y por lo tanto será esta función quien determine al final quien será el líder dentro del anillo.

L a función “Algoritmo-Lasvegas” utiliza otra función para la comunicación con las máquinas quc

participan en el anillo y así poder determinar que computadoras participantes en el algoritmo siguen

siendo candidatos a ser líder cada vez que se ejecuta el algoritmo, la función utilizada para este fin es la función “Mensajes-enel-anillo”. Más adelante se explicarán en detalle los módulos del programa.

y cada una de las funciones que utilizan.

También en el diagrama anterior observamos que la técnica que utiliza el anillo para poder comunicarse es la creación procesos hijos, que se encargarán de la comunicación permitiendo así al

programa principal dedicarse a otras operaciones mientras los procesos hijos reciben y envían los

datos que necesita el algoritmo para funcionar.

En este programa se le llama servidor al proceso que se dedica a recibir los datos, y cliente es aquel que se va encargar de enviar los datos, tomando en cuenta que es8te es un anillo de comunicación

unidireccional, es decir, que solamente transmitirá datos en un sentido, ya sea en el sentido de las

manecillas del reloj ó al contrario según se diseñe el anillo al momerto de ejecutar el programa.

Para que el programa hncione adecuadamente se tiene que armar el anillo primero con n-1 servidores

y un cliente para un anillo de tamaño n, después de una primera ,vuelta todos los participantes dcl anillo ya tienen sus respectivos proceso cliente y proceso servidor.

A continuación presentamos una gráfica que muestra el flujo de información y el orden de las

llamadas a las funciones hasta llegar al final del programa.

(40)

Proyecto: Elección de Líder en una Red de Anillo

C a s a Abierla al Tiempo

1

(41)

Provecto: Elección de Lider en una Red de Anillo

Casa Abietla al Tiempo

Ahora veremos con más detalle los cuatro módulos que forman al programa de elección de líder.

PROT0.H

Contiene las llamadas a las librerías que manejan las funciones que se utilizan en este programa

además de la definición de algunas etiquetas que ayudan a que el programa sea comprendido más

fácilmente, se encuentran las variables globales que utilizan los módulos y que son necesarias para

que el algoritmo pueda determinar un líder dentro del anillo.

ANILL0.H

Contiene cuatro funciones encargadas de la arquitectura del millo y de los procesos mediante los

cuales se podrán comunicar los miembros del anillo.

En este módulo se encuentran las rutinas para crear los sockets tcp y crear procesos hi-jos para manejar las rutinas de los sockets ya sea por parte del servidor ó del cliente.

También encontramos las funciones necesarias para crear un anillo unidireccional y manejar la

recepción y el envío de datos de manera eficiente. Es decir, que en este módulo se encuentran las herramientas para construir una red de anillo y sólo restarán los procesos que hacen hncionar a la

red, es decir, fimciones que utilicen estas herramientas para hacer las conexiones adecuadas para

tener una red de anillo funcionando.

Presentamos a continuación las cuatro funciones que están en este módulo y mencionaremos su tarea dentro del programa.

Haz-socket-servidor Tiene la tarea de crear un socket tcp para recibir los datos por parte de un cliente. Por lo que se dice que crea un socket para fbncionar como servidor, después se dedica a esperar datos provenientes de la red y una vez recibidos los coloca en una tubería para ser

utilizados por el resto del algoritmo. Esta hnción trabaja dentro de un proceso hijo que es el

encargado de llamar a esta función .

(42)

Proyecto: Elección de Líder en una Red de Anillo

Casa Abierla (11 Tiempo

Haz-socket-cliente Es la parte complementaria de la función anterior, su tarea es crear

un socket tcp para enviar datos a la red y comunicarse directamente con un proceso servidor que lo esté esperando en la computadora vecina y se cumpla la pareja cliente-servidor.

Después de crear el socket, tiene la tarea de leer los datos que el algoritmo genera por medio de una tubería de conexión, que comunica al resto del algoritmo con el proceso hijo, es decir administra el

socket de cliente.

De la misma manera que el socket del servidor fue creado y manejado por un proceso hijo, de igual

forma, aquí un proceso hijo se encarga de todos datos que se tienen que mandar al resto dc la red, por

lo que esta función en su totalidad es llamada dentro de un proceso hijo.

Tuberiaqara_el_sewidor Crea la tubería que comunica al proceso hijo que maneja al

socket servidor, también aquí se hace un fork para crear a ese proceso hijo que tiene la función de

llamar a Haz ~ socketsewidor y permitir que se realice la comunicación con el anillo.

Tuberiagara-el_cliente Crea la tubería para comunicar al algoritmo con el proceso hijo

que tiene l a tarea de crear y manejar la parte del cliente que tendrá que comunicarse y mandar datos

con el vecino próximo en la red. Después de que se crea la tubería se construye al proceso hijo que manejara al socket cliente y será quien mandará llamar a Haz-socketcliente.

ALG0RVEG.H

Este modulo incluye las funciones que representan al algoritmo <<Las Vegas>>:

‘Mensajes-en-el-anillo’ y ‘Algoritmo-Lasvegas’. Esta última es quien contiene integralmente al

algoritmo probabilista que elegirá un líder en la red de anillo. La primera es un complemento de la

segunda que tiene la tarea de intercambiar los mensajes de cada uno de los participantes en la red ademas de contar el número de integrantes que sobreviven a cada llamada del algoritmo de elección.

Mensajes-en-el-anillo(char tam-ani[TAMMAX],int num,char mensaje[TAMMAXfl

Esta fknción esta construida para mandar y recibir los mensajes que las máquinas de la red genercn durante la ejecución del ‘Algoritmo-Lasvegas’ y utiliza estos mensajes para contabilizar quiencs son

los que dentro de la red continuarán en la siguiente vuelta, es decir, regresa el número al que se

reduce el anillo después de cada ejecucion del algoritmo de elección.

(43)

Proyecto: Elección de Líder en una Red de Anillo

Casa Abierla al Tiempo

Esta función requiere de tres parámetros para poder funcionar de manera correcta.

tam-ani Contiene el tamaño del anillo que esta guardado en la variable global del programa

del mismo nombre.

num Contiene é1 numero de sobrevivientes que ‘Algoritmo-Lasvegas’ tiene registrado. Este número que se registra y sale de ‘Algoritmo-Lasvegas’, indica si el proceso que

manda llamar a ‘Mensajes-en-elanillo’ se encuentra (num = 1) ó no (num = O) como sobreviviente en la red.

mensaje Define el mensaje que el proceso que esta ejecutando manda hacia su vecino para ser

interpretado y sirva así para que los demás sepan :si sobrevive ó permanecerá vencido en la siguiente vuelta. Este último parámetrlo tiene dos tipos de mensajes:

“PERMANEZCO” ó “ME-SALGO”.

Algoritmo-lasvegas Decide quien será el líder dentro de la red y funciona mediante el

principio del algoritmo probabilista <<Las Vegas>>. Este algoritmo utiliza la probabilidad que tiene

una y solo una computadora para ser líder dentro de una red de tamaño n. Esta probabilidad es l/n y

utiliza este número para compararlo con un número aleatorio generado por una función que toma un

numero real aleatorio dentro del intervalo (0,l) y después de realizar esta comparación decide si el

proceso debe continuar a la siguiente ronda y ser el posible líd.er ó simplemente pasar a ser un

proceso que se declara vencido y solamente se dedicará a pasar los mensajes que le lleguen y permanecerá pasivo dentro de las llamadas posteriores del algoritmo. Este criterio de comparación se

puede explicar como sigue: Si número-aleatorio<=l/n el proceso se convierte candidato a ser el posible líder del anillo. De otra forma mediante comparaciones posteriores pasará a declararse como

“vencido” y no tomará parte significativa en el algoritmo.

LASVEGAS.C

oltimo modulo del programa y es el que se compila para obtener el ejecutable. Esta parte dcl

programa contiene a la función principal además de tener a la hnc.ión que será la encargada de hacer

las llamadas a las funciones que construyen el anillo y hacer una primera vuelta para darles a todos los miembros del anillo el mensaje de inicio, para que todos comiencen el algoritmo de elección de líder.

(44)

Casa Abierla al Tiempo

Pro-yecto: Elección de Líder en una Red de Anillo

Zonagrincipal Se encarga de llamar a las funciones que tienen la tarea de crear los

procesos hijos que manejarán la parte del servidor y la parte del cliente, además de armar las

tuberías que comunican a estos procesos con el resto del algoritmo. Dentro de esta función tambikn

se hace una primera comunicación para indicarle a todas las computadoras del anillo que el algoritmo

esta por iniciar, cada máquina recibe este mensaje y hace la llamada correspondiente a la función

‘Algoritmo-Lasvegas’ para así tener un líder dentro del anillo.

Main

0

Esta es la función principal en donde se obtienen todas las variables

globales que el algoritmo necesita para ejecutarse sin problemas como son: la dirección, el modo de inicio, el tamaiío del anillo, el puerto de comunicación y el número que recibirá como semilla para la

generación de números aleatorios. Además aquí es donde se realiza la llamada a ‘Zonagrincipal’ que

dará inicio al algoritmo las vegas y que nos dará un líder.

Figure

Fig.  l .   Red conformada  por cinco maquinas Einulx  ó  procesos,  indicando  direcciones  IP  de rled
Fig. 2. Una  vez  formado el anillo
Fig. 3.  Diagrama  de  Recorrido

Referencias

Documento similar

El concepto “objeto arquitectónico” puede representar dos ideas abstractas diferentes según el contexto científico en el que se encuentre: el objeto aplicado (creado por las

Pero cuando vio a Mar sacar el fuego de bajo su ala, voló de vuelta a su tribu a contarles lo que había visto.... Justo antes de que el sol saliera, Tatkanna se despertó y comenzó

o esperar la resolución expresa&#34; (artículo 94 de la Ley de procedimiento administrativo). Luego si opta por esperar la resolución expresa, todo queda supeditado a que se

1. LAS GARANTÍAS CONSTITUCIONALES.—2. C) La reforma constitucional de 1994. D) Las tres etapas del amparo argentino. F) Las vías previas al amparo. H) La acción es judicial en

Cuando finaliza la exposición, en cinco minutos, cada grupo y cada familia debe cumplimentar una rúbrica de evaluación para ver si el desarrollo de la tarea ha sido el adecuado

En el capítulo de desventajas o posibles inconvenientes que ofrece la forma del Organismo autónomo figura la rigidez de su régimen jurídico, absorbentemente de Derecho público por

¿Cómo se traduce la incorporación de ésta en la idea de museo?; ¿Es útil un museo si no puede concebirse como un proyecto cultural colectivo?; ¿Cómo puede ayudar el procomún

Volviendo a la jurisprudencia del Tribunal de Justicia, conviene recor- dar que, con el tiempo, este órgano se vio en la necesidad de determinar si los actos de los Estados