30.04.2013 Views

Introducción y objetivos La sincronización - GTI

Introducción y objetivos La sincronización - GTI

Introducción y objetivos La sincronización - GTI

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

E.E. Telecomunicación Curso 12/13<br />

Tema 6. El Tiempo. <strong>La</strong> Coordinación Distribuida.<br />

<strong>La</strong> Comunicación de Grupo<br />

1. <strong>Introducción</strong> y <strong>objetivos</strong><br />

2. Sincronización<br />

3. Algoritmos de <strong>sincronización</strong><br />

4. Tiempo lógico<br />

5. Coordinación distribuida<br />

6. Comunicación de grupo<br />

Tema 6 El tiempo y la coordinación distribuida 1<br />

<strong>Introducción</strong> y <strong>objetivos</strong><br />

• Tiempo: herramienta para ordenar<br />

acontecimientos<br />

• Evento: acontecimiento que aparenta ocurrir<br />

indivisiblemente<br />

– ejemplo: recibir un mensaje de red<br />

– evento mínimo: ejecución instrucción de ensamblador<br />

• Resolución temporal: período entre dos<br />

actualizaciones consecutivas del reloj<br />

• Aplicación del tiempo en Sistemas Distribuidos:<br />

– mantenimiento consistencia de objetos replicados<br />

– autenticación, etc.<br />

• Necesidad de un tiempo único ⇒ <strong>sincronización</strong> de<br />

relojes<br />

Tema 6 El tiempo y la coordinación distribuida 3<br />

<strong>Introducción</strong> y <strong>objetivos</strong><br />

Tema 6 El tiempo y la coordinación distribuida 2<br />

<strong>La</strong> <strong>sincronización</strong><br />

Tema 6 El tiempo y la coordinación distribuida 4<br />

Sistemas Operativos Distribuidos y de Tiempo Real 1


E.E. Telecomunicación Curso 12/13<br />

<strong>La</strong> <strong>sincronización</strong><br />

• Sincronización en un paso ⇒ deriva de los relojes<br />

– necesidad de <strong>sincronización</strong> periódica ⇒ necesidad de<br />

referencia temporal<br />

• <strong>sincronización</strong> interna ⇒ precisión limitada por paso de<br />

mensajes<br />

• <strong>sincronización</strong> externa ⇒ fuente externa fiable (UTC)<br />

• UTC (tiempo universal coordinado):<br />

– tiempo atómico internacional ⇒ segundo normalizado<br />

(9.192.631.770 Cs 133 )<br />

– emisión de señales desde estaciones terrenas y satélite<br />

– problemas:<br />

• precisión de las señales recibidas<br />

• mala o nula recepción en interiores<br />

⇒ necesidad de conjugar las dos técnicas (interna y<br />

externa)<br />

Tema 6 El tiempo y la coordinación distribuida 5<br />

Compensación de la deriva del reloj. 2<br />

• Si S tiene que dar el tiempo real después<br />

de N períodos:<br />

T SKEW = (1 + a) * h + b<br />

T REAL + N = (1 + a) * (h + N) + b<br />

• Resolviendo las ecuaciones, obtenemos:<br />

a = (T REAL - T SKEW) / N<br />

b = T SKEW - (1 + a) * h<br />

Tema 6 El tiempo y la coordinación distribuida 7<br />

Compensación de la deriva del reloj. 1<br />

• Definiciones:<br />

– S : tiempo dado a las aplicaciones (reloj sw)<br />

– H : tiempo del reloj hw<br />

– d : factor compensador<br />

– S(t) = H(t) + d(t), donde:<br />

• d(t) = a * H(t) + b<br />

– T SKEW : valor reloj sw cuando H == h<br />

– T REAL : tiempo real cuando H == h<br />

– Pueden darse las 2 circunstancias:<br />

• (T SKEW > T REAL) ó (T SKEW < T REAL)<br />

Tema 6 El tiempo y la coordinación distribuida 6<br />

Compensación de la deriva del reloj. 3<br />

Compensación por atraso Compensación por adelanto<br />

Tema 6 El tiempo y la coordinación distribuida 8<br />

Sistemas Operativos Distribuidos y de Tiempo Real 2


E.E. Telecomunicación Curso 12/13<br />

Algoritmos de <strong>sincronización</strong><br />

Tema 6 El tiempo y la coordinación distribuida 9<br />

Método de Cristian. 2<br />

• Servidor único de tiempo: puede conectarse a<br />

UTC<br />

– el proceso P envía mensaje m s solicitando el tiempo<br />

al servidor S<br />

– S envía el tiempo en m r<br />

– P ajusta su reloj utilizando el tiempo recibido en m r<br />

• Problemas:<br />

– <strong>sincronización</strong> del servidor con el receptor UTC<br />

• si lo hay<br />

– duración variable del tiempo de transmisión de los<br />

mensajes en la red, y del tiempo de respuesta del<br />

servidor<br />

Tema 6 El tiempo y la coordinación distribuida 11<br />

Tema 6 El tiempo y la coordinación distribuida 10<br />

Sistemas Operativos Distribuidos y de Tiempo Real 3<br />

Cliente<br />

P<br />

m s<br />

m r<br />

Método de Cristian.1<br />

Servidor de tiempo<br />

S<br />

Descripción del algoritmo de Cristian. 1<br />

• T ciclo = T tx (m s ) + T proc (S) + T tx (m r )<br />

• P guarda el T ciclo<br />

– se necesita suficiente estabilidad reloj de P<br />

• Sea t el tiempo devuelto por S en m r .<br />

• P ajustará su reloj según:<br />

t final = t + T ciclo /2<br />

• Los tiempos de transmisión de los mensajes<br />

son:<br />

T tx (m s ) = t min + x<br />

T tx(m r ) = t min + y<br />

– donde t min es el tiempo mínimo de transmisión en la<br />

red<br />

Tema 6 El tiempo y la coordinación distribuida 12


E.E. Telecomunicación Curso 12/13<br />

Descripción del algoritmo de Cristian. 2<br />

• El verdadero valor del reloj de S cuando P recibe<br />

m r estará en el rango:<br />

reloj ∈ [t + t min , t + T ciclo - t min ]<br />

• Precisión de la aproximación:<br />

± (T ciclo /2 - t min )<br />

• Puntos débiles:<br />

– problemas del servidor único: sobrecarga y caída<br />

⇒ solución: grupo de servidores sincronizado<br />

– problema del servidor impostor<br />

⇒ solución: autenticación del servidor<br />

– problema del servidor con reloj que falla<br />

⇒ solución: algoritmo de Berkeley<br />

Tema 6 El tiempo y la coordinación distribuida 13<br />

Algoritmo de Berkeley. 2<br />

• Desarrollado para el UNIX BSD<br />

• Orientado a la <strong>sincronización</strong> interna<br />

• Se elige a un ordenador coordinador para<br />

que actúe como maestro<br />

• El maestro interroga a los esclavos que se<br />

quiere que estén sincronizados<br />

• El maestro estima el valor de los relojes de<br />

los esclavos (como en el de Cristian)<br />

Tema 6 El tiempo y la coordinación distribuida 15<br />

inicio sondeo<br />

respuesta<br />

envío desfase<br />

Algoritmo de Berkeley. 1<br />

Esclavo Maestro<br />

Tema 6 El tiempo y la coordinación distribuida 14<br />

Algoritmo de Berkeley. 3<br />

• Con los valores estimados y el suyo propio, el<br />

maestro realiza un promediado de los tiempos<br />

⇒ se cancelan en media los efectos de la deriva<br />

• Este promediado es tolerante a fallos: elimina<br />

lecturas de relojes que han derivado mucho<br />

• El maestro envía a los esclavos la cantidad<br />

(positiva ó negativa) con que debe ajustar su<br />

reloj:<br />

⇒ se elimina la influencia del tiempo de transmisión<br />

• Si el maestro falla:<br />

⇒ un esclavo debe ser elegido como maestro<br />

Tema 6 El tiempo y la coordinación distribuida 16<br />

Sistemas Operativos Distribuidos y de Tiempo Real 4


E.E. Telecomunicación Curso 12/13<br />

Protocolo de Tiempo de Red: NTP<br />

• Diseñado para distribuir el tiempo sobre un conjunto de<br />

redes interconectadas (Mills, 1991)<br />

• Adoptado como estándar para <strong>sincronización</strong> de relojes<br />

a través de Internet<br />

• Propiedades del NTP:<br />

– proveer un servicio que permita a clientes a lo largo de<br />

Internet estar sincronizados con precisión con el UTC<br />

– proveer un servicio fiable que pueda sobrevivir a pérdidas<br />

largas de conectividad<br />

– permitir que los clientes puedan resincronizarse con la<br />

suficiente frecuencia<br />

– uso de técnicas de autenticación para verificar el origen<br />

de los datos<br />

Tema 6 El tiempo y la coordinación distribuida 17<br />

NTP : estructura de la sub-red de <strong>sincronización</strong>. 2<br />

• Servidores primarios (estrato 1) conectados a UTC<br />

• Servidores secundarios (estratos superiores)<br />

sincronizados en último lugar con los primarios<br />

• El nivel más bajo (nº de estrato más alto ⇒ hojas)<br />

de la sub-red lo constituyen los servidores de<br />

tiempo de las máquinas de los usuarios<br />

• Los relojes son menos precisos cuanto mayor es el<br />

número de estrato ⇒ NTP tiene en cuenta el T ciclo<br />

total del mensaje hasta la raíz (estrato 1)<br />

• En caso de fallo ⇒ reorganización de la sub-red<br />

– implica re<strong>sincronización</strong><br />

Tema 6 El tiempo y la coordinación distribuida 19<br />

NTP : estructura de la sub-red de <strong>sincronización</strong>. 1<br />

Tema 6 El tiempo y la coordinación distribuida 18<br />

Sistemas Operativos Distribuidos y de Tiempo Real 5<br />

1<br />

2 2<br />

3 3 3<br />

NTP<br />

• Modos de <strong>sincronización</strong> entre servidores:<br />

– Modo multicast: diseñado para redes locales<br />

⇒ precisión baja, pero generalmente suficiente<br />

– Llamada a procedimiento: similar al de<br />

Cristian<br />

⇒ mayor precisión (usado si el hw no soporta<br />

multicast)<br />

– Modo simétrico: diseñado para servidores<br />

maestros (estratos más bajos, y los que dan<br />

servicio a LAN)<br />

⇒ precisión máxima<br />

• Transmisión de mensajes no fiable<br />

mediante UDP en todos los modos<br />

Tema 6 El tiempo y la coordinación distribuida 20


E.E. Telecomunicación Curso 12/13<br />

Servidor B<br />

Servidor A<br />

Algoritmo de <strong>sincronización</strong>. 1<br />

• B, al enviar m’, le pone 3 sellos temporales: T i-1 , T i-2 y<br />

T i-3 :<br />

– T i-3 : hora en que A transmitió el último mensaje que B<br />

recibió<br />

– T i-2 : hora en que B recibe el último mensaje de A<br />

– T i-1 : hora en que B transmite este mensaje m'<br />

• Además A tiene T i : hora en que A recibe el mensaje m'<br />

– suponiendo que no se pierde<br />

Tema 6 El tiempo y la coordinación distribuida 21<br />

• Obtenemos:<br />

m<br />

T i-3<br />

T i-2<br />

T i-1<br />

m’<br />

T i<br />

Algoritmo de <strong>sincronización</strong>. 3<br />

T i-2 = T i-3 + t Tx + o ⇒ T i-2 - T i-3 = t Tx + o = a<br />

T i = T i-1 + t' Tx - o ⇒ T i - T i-1 = t' Tx - o = b<br />

d i = t Tx + t' Tx = a + b<br />

• por tanto, la mejor aproximación que se<br />

puede conseguir es:<br />

o i = (a - b) / 2 = (o + t Tx + o - t’ Tx) / 2 =<br />

o + (t Tx - t’ Tx) / 2<br />

• y el error de la estimación vale:<br />

error = | o - o i | = | t Tx - t’ Tx | / 2<br />

Tema 6 El tiempo y la coordinación distribuida 23<br />

Algoritmo de <strong>sincronización</strong>. 2<br />

• Aunque se pierda un mensaje, los 3 sellos<br />

que lleva m' son válidos<br />

• Definiciones:<br />

– T B y T A : horas de los servidores<br />

– o : offset real de B respecto de A (T B - T A )<br />

– o i : estimación del offset real entre los dos<br />

relojes<br />

– d i : tiempo total de transmisión para los 2<br />

mensajes<br />

– t Tx : tiempo real de transmisión para m<br />

– t' Tx : tiempo real de transmisión para m'<br />

Tema 6 El tiempo y la coordinación distribuida 22<br />

Algoritmo de <strong>sincronización</strong>. 4<br />

• Este error sería 0 si ambos tiempos de<br />

transmisión fuesen idénticos.<br />

• Su valor máximo vendrá dado por:<br />

max (error) = max (| t Tx - t' Tx | / 2) ≤ d i / 2<br />

• y como:<br />

o = o i - (t Tx - t’ Tx ) / 2<br />

• entonces:<br />

o i - d i / 2 ≤ o ≤ o i + d i / 2<br />

Tema 6 El tiempo y la coordinación distribuida 24<br />

Sistemas Operativos Distribuidos y de Tiempo Real 6


E.E. Telecomunicación Curso 12/13<br />

NTP. Filtrado de datos. 1<br />

• Los servidores NTP almacenan los pares {o i , d i}<br />

que estiman o<br />

• A d i se le llama dispersión de filtro, y es la calidad<br />

de la estimación:<br />

– a mayor d i ⇒ menor precisión<br />

• Se almacenan los 8 pares {o i , d i } más recientes,<br />

se elige el par con menor d j , y se usa o j como<br />

estimación de o<br />

• El servidor NTP se sincroniza utilizando varios<br />

servidores. A cada uno de ellos le aplica el filtrado<br />

de datos<br />

Tema 6 El tiempo y la coordinación distribuida 25<br />

NTP. Estado<br />

• En Noviembre de 2009:<br />

– 192 servidores primarios públicos sincronizados<br />

con UTC, y<br />

– 338 servidores secundarios públicos (estrato 2)<br />

sincronizados con los primarios<br />

– dando <strong>sincronización</strong> a entre 10 y 20 millones<br />

de clientes y servidores a lo largo de Internet<br />

• Precisión de la estimación (típica) respecto<br />

a UTC:<br />

– menos de 1 ms. en LANs y<br />

– algunas decenas de ms. en WANs<br />

Tema 6 El tiempo y la coordinación distribuida 27<br />

NTP. Filtrado de datos. 2<br />

• Al resultado anterior se le aplica un algoritmo de<br />

selección de compañero:<br />

– este algoritmo favorece a los servidores con un número<br />

de estrato inferior<br />

– dispersión de <strong>sincronización</strong>: suma de las sucesivas<br />

dispersiones de filtro entre este servidor y la raíz<br />

(estrato 1)<br />

– los servidores intercambian las dispersiones de<br />

<strong>sincronización</strong> en los mensajes ⇒ puede calcularse la<br />

dispersión de <strong>sincronización</strong> total con el UTC<br />

• Los servidores secundarios se conectan con 1<br />

compañero del mismo estrato y 2 del<br />

inmediatamente inferior<br />

Tema 6 El tiempo y la coordinación distribuida 26<br />

El tiempo lógico<br />

Tema 6 El tiempo y la coordinación distribuida 28<br />

Sistemas Operativos Distribuidos y de Tiempo Real 7


E.E. Telecomunicación Curso 12/13<br />

<strong>La</strong> relación sucedió-antes. 1<br />

• Relojes no perfectamente sincronizados ⇒ no se<br />

puede garantizar el orden de un par de eventos<br />

arbitrarios utilizando el tiempo físico<br />

– <strong>La</strong>mport (1978)<br />

• El orden de los eventos es crítico en ciertas<br />

aplicaciones<br />

– sucesivas actualizaciones de objetos replicados<br />

• <strong>La</strong>mport introduce el principio de causalidad física<br />

para definir la relación sucedió-antes (happenedbefore).<br />

Se basa en:<br />

– si dos eventos ocurren en el mismo ordenador, entonces<br />

ocurrieron en el orden en el cual han sido observados<br />

– cuando un mensaje se envía entre ordenadores, el evento<br />

de enviar el mensaje ocurre antes del evento de recibir el<br />

mensaje<br />

Tema 6 El tiempo y la coordinación distribuida 29<br />

<strong>La</strong> relación sucedió-antes. 3<br />

• Si a → b ⇒ ∃ un conjunto de eventos {e 1 ..., e n} tal<br />

que:<br />

– a = e 1 , b = e n.<br />

– donde, para todo par (e i , e i+1):<br />

• o bien e i y e i+1 se observan en ese orden en un<br />

mismo ordenador p,<br />

• o ∃ m tal que: e i = send(m), e i+1 = rcv(m).<br />

– <strong>La</strong> secuencia {e i} no tiene por qué ser única<br />

• Limitación: no se pueden ordenar todos los eventos<br />

– usuario de R llama por teléfono en e a usuario de P<br />

solicitándole un envío (suceso b).<br />

• Entonces e causa b, pero no (e → b)<br />

Tema 6 El tiempo y la coordinación distribuida 31<br />

<strong>La</strong> relación sucedió-antes. 2<br />

• Se denota como a → p b si dos eventos a y b<br />

ocurren en un mismo ordenador p, y a se<br />

observa antes que b<br />

• Se expresa la relación sucedió-antes con “→“<br />

a → b ⇔ a sucedió antes que b<br />

• Definición formal de la relación sucedió-antes:<br />

HB1: si existe un ordenador p tal que a → p b,<br />

entonces a → b<br />

HB2: para cualquier mensaje m: send(m) → rcv(m), donde<br />

send(m) es el evento de enviar el mensaje, y rcv(m)<br />

es el evento de recibir el mensaje<br />

HB3: si a, b y c son eventos tales que a → b y b → c,<br />

entonces a → c<br />

Tema 6 El tiempo y la coordinación distribuida 30<br />

Tema 6 El tiempo y la coordinación distribuida 32<br />

Sistemas Operativos Distribuidos y de Tiempo Real 8<br />

P<br />

Q<br />

R<br />

a<br />

e<br />

b<br />

c<br />

Relación sucedió-antes. Ejemplo<br />

• a → b, pues ocurren en este orden en P<br />

• b → c, pues son envío y recepción de un mensaje<br />

• aplicando HB3 llegamos a: a → f<br />

• no (a → e) y no (e → a) ⇒ a || e<br />

(a y e son concurrentes)<br />

d<br />

f


E.E. Telecomunicación Curso 12/13<br />

El reloj lógico<br />

• Concepto desarrollado por <strong>La</strong>mport<br />

• Permite capturar numéricamente la relación<br />

sucedió-antes<br />

• Es un contador software que se incrementa<br />

monótonamente y no tiene ninguna relación<br />

con el reloj físico<br />

• Notación:<br />

– C p : reloj lógico del ordenador p<br />

– C(a) : sello temporal del evento a<br />

Tema 6 El tiempo y la coordinación distribuida 33<br />

P<br />

Q<br />

R<br />

a<br />

1<br />

e<br />

1<br />

b<br />

2<br />

c<br />

3<br />

Relojes lógicos. Ejemplo<br />

• En general:<br />

– a → b ⇒ C(a) < C(b)<br />

– C(a) < C(b) NO ⇒ a → b<br />

• En el ejemplo: C(e) < C(b), pero: e || b<br />

Tema 6 El tiempo y la coordinación distribuida 35<br />

d<br />

4<br />

f<br />

5<br />

Reglas de funcionamiento de los relojes lógicos<br />

LC1: C p se incrementa antes de sellar cada<br />

evento que suceda en el ordenador p<br />

⇒ C p = C p + 1<br />

Tema 6 El tiempo y la coordinación distribuida 34<br />

Sistemas Operativos Distribuidos y de Tiempo Real 9<br />

LC2:<br />

a) Cuando un ordenador p envía un mensaje<br />

m, envía el valor t = C p<br />

b) Al recibir {m, t}, un ordenador q calcula C q<br />

= max(C q ,t) y entonces aplica LC1 antes de<br />

poner el sello temporal al evento rcv(m)<br />

Ordenación total<br />

• Los relojes lógicos imponen solamente un orden<br />

parcial: eventos distintos generados por<br />

ordenadores diferentes pueden tener sellos<br />

temporales idénticos<br />

– En el ejemplo: C(a) = C(e)<br />

• Puede conseguirse una ordenación total teniendo en<br />

cuenta los identificadores de los ordenadores en los<br />

que sucedieron los eventos<br />

• Se define un nuevo sello temporal global: {C i , p i }<br />

• {C i , p i } < {C j , p j } ⇔<br />

a) C i < C j , ó bien<br />

b) C i = C j y p i < p j<br />

Tema 6 El tiempo y la coordinación distribuida 36


E.E. Telecomunicación Curso 12/13<br />

<strong>La</strong> coordinación distribuida<br />

Tema 6 El tiempo y la coordinación distribuida 37<br />

<strong>La</strong> coordinación distribuida. 2<br />

• Pero otros servidores no incluyen <strong>sincronización</strong>:<br />

– Ejemplo: Sun NFS<br />

⇒ necesitan servicio de exclusión mutua (p.ej. daemon<br />

lockd)<br />

– Para este caso se requiere un mecanismo de exclusión<br />

mutua distribuida: dar a un único proceso el derecho de<br />

acceder temporalmente a los recursos compartidos<br />

• En otros casos se necesita elegir a un único<br />

proceso de un conjunto para que desarrolle un<br />

papel privilegiado durante un largo tiempo<br />

⇒ algoritmo de elección<br />

– Ejemplo: el maestro del método de Berkeley<br />

Tema 6 El tiempo y la coordinación distribuida 39<br />

<strong>La</strong> coordinación distribuida. 1<br />

• Los procesos distribuidos necesitan a menudo<br />

coordinar sus actividades<br />

⇒ exclusión mutua de los procesos distribuidos<br />

– Ejemplo: reservas de billetes de avión<br />

• En los SD para solucionar el problema de la<br />

exclusión mutua no se pueden utilizar:<br />

– ni variables compartidas<br />

– ni facilidades dadas por un único núcleo central<br />

• Algunos servidores implementan sus propios<br />

cerrojos para sincronizar los accesos a los recursos<br />

que gestionan<br />

Tema 6 El tiempo y la coordinación distribuida 38<br />

<strong>La</strong> exclusión mutua distribuida<br />

• Exigencias:<br />

ME1: seguridad ⇒ en todo momento, como<br />

máximo hay un solo proceso ejecutando la<br />

región crítica<br />

ME2: vitalidad ⇒ a todo proceso que lo solicita se<br />

le concede la entrada en la región crítica en<br />

algún momento:<br />

• evita el abrazo mortal (deadlock) y<br />

• la inanición (starvation)<br />

ME3: ordenación ⇒ la entrada en la región crítica<br />

debe concederse según la relación sucedióantes<br />

Tema 6 El tiempo y la coordinación distribuida 40<br />

Sistemas Operativos Distribuidos y de Tiempo Real 10


E.E. Telecomunicación Curso 12/13<br />

Algoritmo del servidor central<br />

• Servidor central ⇒ concede permisos<br />

– Respuesta: en forma de testigo que concede acceso a la RC<br />

– Al salir de la RC, el proceso devuelve el testigo al servidor<br />

• Suponiendo que no hay caídas y no se pierden<br />

mensajes:<br />

⇒ se cumplen ME1 y ME2<br />

⇒ ME3 está asegurada en el orden de llegada de los<br />

mensajes al servidor<br />

• Problemas:<br />

– todas las solicitudes se envían al servidor ⇒ cuello de<br />

botella<br />

– caída o fallo del servidor ⇒ elección de nuevo servidor<br />

⇒ ME3 no asegurada<br />

– caída o fallo del proceso en la RC<br />

Tema 6 El tiempo y la coordinación distribuida 41<br />

Algoritmos basados en relojes lógicos<br />

• Dos suposiciones:<br />

– cada proceso conoce la dirección de los<br />

demás<br />

– cada proceso posee un reloj lógico<br />

• Tres algoritmos:<br />

– <strong>La</strong>mport<br />

– Ricart y Agrawala<br />

– basado en anillo<br />

Tema 6 El tiempo y la coordinación distribuida 43<br />

Tema 6 El tiempo y la coordinación distribuida 42<br />

Sistemas Operativos Distribuidos y de Tiempo Real 11<br />

P 1<br />

1. Solicitud<br />

de testigo<br />

SERVIDOR<br />

P 2<br />

2 4<br />

2<br />

Servidor central. Ejemplo<br />

2. Liberación<br />

de testigo<br />

P 3<br />

Cola de solicitudes<br />

3. Concesión<br />

de testigo.<br />

P 4<br />

P3 está P usando el recurso<br />

4 usa el recurso<br />

El algoritmo de <strong>La</strong>mport. 1<br />

• Cada proceso mantiene una cola de<br />

solicitudes independiente.<br />

– está ordenada según la relación sucedió-antes<br />

• Para que un proceso obtenga el recurso<br />

son necesarios 3(n-1) mensajes<br />

– siendo n el número de procesos<br />

Tema 6 El tiempo y la coordinación distribuida 44


E.E. Telecomunicación Curso 12/13<br />

Cuando el proceso P i quiere solicitar el recurso:<br />

envía el sello temporal {C i , P i} a los demás procesos y<br />

pone el mensaje en su cola de solicitudes<br />

Cuando P j recibe {C i , P i}:<br />

lo coloca en su cola y<br />

envía asentimiento sellado a P i<br />

El algoritmo de <strong>La</strong>mport. 2<br />

A P i se le concede recurso cuando:<br />

su sello temporal {C i , P i} es el primero de su cola, y<br />

P i ha recibido asentimientos sellados después de C i de los demás procesos<br />

Cuando P i quiere liberar el recurso:<br />

envía un mensaje de liberación sellado a los demás procesos, y<br />

elimina el sello {C i , P i} de su cola<br />

Cuando P j recibe el mensaje de liberación de P i:<br />

borra el sello {C i , P i} de su cola<br />

Tema 6 El tiempo y la coordinación distribuida 45<br />

Algoritmo de Ricart y Agrawala. 1<br />

• Idea básica: cuando un proceso quiere<br />

entrar en la Región Crítica<br />

– les pregunta a los demás si puede entrar<br />

• Cuando todos los demás le contesten:<br />

entra<br />

• Como en <strong>La</strong>mport, el acceso se obtiene a<br />

través de un testigo.<br />

• Cada proceso guarda el estado del testigo:<br />

liberado, solicitado, retenido<br />

Tema 6 El tiempo y la coordinación distribuida 47<br />

P Ack 13,Q Acc 14,Q Q<br />

Tema 6 El tiempo y la coordinación distribuida 46<br />

Sistemas Operativos Distribuidos y de Tiempo Real 12<br />

14 10 Q P<br />

14 Q<br />

Acc 10,P<br />

Lib 20,P<br />

Acc 10,P<br />

Algoritmo de <strong>La</strong>mport. Ejemplo<br />

Lib 20,P<br />

Ack 17, R<br />

Ack 21, Q<br />

R<br />

14 10 Q P<br />

Acc 14,Q<br />

14 10 Q P<br />

14 Q<br />

Ack 16, R<br />

14 Q<br />

P usa el recurso Q usa el recurso<br />

En la inicialización:<br />

estado = liberado;<br />

Para obtener el testigo:<br />

estado = solicitado;<br />

envía la solicitud a los demás procesos mediante multicast;<br />

C i = sello temporal de la solicitud;<br />

Espera hasta que se reciban n-1 respuestas;<br />

estado = retenido;<br />

Al recibir una solicitud {C i ,p i } en p j (i ≠ j)<br />

if ((estado == retenido) || ((estado == solicitado) && ({C j , p j } < {C i , p i })))<br />

mete la solicitud de p i en la cola y no contesta;<br />

else<br />

contesta inmediatamente a p i ;<br />

Para liberar el testigo:<br />

estado = liberado;<br />

Contestación a todas las solicitudes de la cola;<br />

Algoritmo de Ricart y Agrawala. 2<br />

Tema 6 El tiempo y la coordinación distribuida 48


E.E. Telecomunicación Curso 12/13<br />

41<br />

P 1<br />

Respuesta<br />

P 2 tiene el testigo<br />

41<br />

34<br />

Respuesta<br />

Ricart y Agrawala. Ejemplo<br />

Tema 6 El tiempo y la coordinación distribuida 49<br />

41<br />

P 2<br />

Respuesta<br />

34<br />

34<br />

P 3<br />

Algoritmo basado en anillo. 1<br />

• <strong>La</strong> exclusión se logra por la obtención de un<br />

testigo<br />

• Anillo lógico ⇒ se crea dando a cada proceso la<br />

dirección de su vecino<br />

El testigo está siempre circulando por el anillo.<br />

Cuando un proceso recibe el testigo:<br />

si no quiere entrar en la RC ⇒ lo envía a su vecino<br />

si quiere entrar en la RC ⇒ lo retiene<br />

Al salir de la RC:<br />

lo envía a su vecino<br />

• Se verifican ME1 y ME2, pero no se asegura ME3<br />

• Obtención del recurso ⇒ de 1 a (n-1) mensajes<br />

Tema 6 El tiempo y la coordinación distribuida 51<br />

Algoritmo de Ricart y Agrawala. 3<br />

• Número de mensajes necesarios para obtener el<br />

recurso:<br />

– sin soporte multicast: 2(n-1)<br />

– con soporte multicast: n<br />

– el algoritmo fue refinado hasta n mensajes sin soporte<br />

multicast (Raynal, 1988)<br />

• Problemas (tanto <strong>La</strong>mport como Ricart y Agrawala):<br />

– Algoritmos más costosos que el del servidor central<br />

– Pese a ser algoritmos distribuidos, el fallo de cualquier<br />

proceso bloquea el sistema<br />

– Los procesos implicados reciben y procesan cada solicitud:<br />

igual o peor congestión que el servidor central<br />

Tema 6 El tiempo y la coordinación distribuida 50<br />

Algoritmo basado en anillo. 2<br />

Tema 6 El tiempo y la coordinación distribuida 52<br />

Sistemas Operativos Distribuidos y de Tiempo Real 13<br />

P1<br />

TESTIGO<br />

P2<br />

TESTIGO<br />

P3<br />

P4<br />

TESTIGO<br />

TESTIGO<br />

TESTIGO


E.E. Telecomunicación Curso 12/13<br />

Algoritmo basado en anillo. Problemas<br />

• Se carga la red aun cuando ningún<br />

proceso quiera entrar en la RC<br />

• Si un proceso cae ⇒ reconfiguración<br />

– si además tenía el testigo:<br />

• elección para regenerar el testigo<br />

• asegurarse de que el proceso ha caído ⇒ varios<br />

testigos<br />

• Problema desconexión o rotura de la red<br />

Tema 6 El tiempo y la coordinación distribuida 53<br />

Algoritmos de elección<br />

Tema 6 El tiempo y la coordinación distribuida 55<br />

Discusión de los algoritmos descritos<br />

• Ninguno puede tratar el problema de la<br />

caída de un ordenador o proceso<br />

• El del servidor central es el que tiene<br />

menor número de mensajes, pero supone<br />

un cuello de botella<br />

• Conclusión: es preferible que el servidor<br />

que gestiona el recurso implemente<br />

también la exclusión mutua<br />

Tema 6 El tiempo y la coordinación distribuida 54<br />

Algoritmos de elección<br />

• Una elección es un procedimiento para elegir<br />

a un proceso dentro de un grupo<br />

– ejemplo: elegir a un proceso que sustituya a<br />

uno especial (coordinador, maestro, ...)<br />

cuando éste cae<br />

• Principal exigencia ⇒ elección única incluso si<br />

varios procesos lanzan el algoritmo de<br />

elección de manera concurrente<br />

• Dos algoritmos:<br />

– Algoritmo del matón (bully): Silberschatz<br />

– Algoritmo basado en anillo: Chang y Roberts<br />

Tema 6 El tiempo y la coordinación distribuida 56<br />

Sistemas Operativos Distribuidos y de Tiempo Real 14


E.E. Telecomunicación Curso 12/13<br />

Algoritmo del matón. 1<br />

• Requisito: todos los miembros del grupo deben<br />

conocer las identidades y direcciones de los demás<br />

miembros<br />

• El algoritmo selecciona al miembro superviviente<br />

con mayor identificador<br />

• Los procesos pueden caer durante la elección<br />

• Se supone comunicación fiable<br />

• Hay 3 tipos de mensajes:<br />

– mensaje de elección (election): para anunciar una<br />

elección<br />

– mensaje de respuesta (answer) a un mensaje de elección<br />

– mensaje de coordinador (coordinator): anuncia identidad<br />

de nuevo coordinador<br />

Tema 6 El tiempo y la coordinación distribuida 57<br />

elección<br />

elección<br />

P1<br />

elección<br />

respuesta<br />

P2<br />

respuesta<br />

P3<br />

elección<br />

P4<br />

P1<br />

Temporización...<br />

elección<br />

elección<br />

P2 P3 P4<br />

respuesta<br />

elección<br />

elección<br />

elección<br />

P1 P2 P3<br />

respuesta<br />

Finalmente...<br />

Algoritmo del matón. Ejemplo<br />

P1 P2 P3 P4<br />

coordinador<br />

Tema 6 El tiempo y la coordinación distribuida 59<br />

P4<br />

Un proceso inicia una elección al darse cuenta de que el coordinador ha caído:<br />

envía mensaje de elección a los procesos con identificador mayor que el suyo<br />

espera algún mensaje de respuesta:<br />

si vence temporizador ⇒ el proceso se erige como coordinador y envía mensaje de<br />

coordinador a todos los procesos con identificadores más bajos<br />

si recibe alguna respuesta ⇒ espera mensaje de coordinador.<br />

si vence temporizador, lanza una nueva elección<br />

Si un proceso recibe un mensaje de coordinador:<br />

guarda el identificador y trata a ese proceso como nuevo coordinador<br />

Si un proceso recibe un mensaje de elección:<br />

contesta con un mensaje de respuesta y lanza una elección,<br />

(si no ha lanzado ya antes una)<br />

Cuando un proceso se reinicia:<br />

lanza una elección a menos que sea el de identificador más alto<br />

(en cuyo caso se erigiría como nuevo coordinador)<br />

Algoritmo del matón. 2<br />

• Número de mensajes para elegir coordinador:<br />

– caso mejor: se da cuenta el segundo más alto ⇒ (n-2) mensajes<br />

– caso peor: se da cuenta el más bajo ⇒ O(n 2 ) mensajes<br />

Tema 6 El tiempo y la coordinación distribuida 58<br />

Elección basada en anillo. 1<br />

• Anillo lógico:<br />

– cada proceso sólo sabe comunicarse con su vecino<br />

• Se elige al proceso con identificador más alto<br />

• Se supone procesos estables durante la elección<br />

• Tanenbaum (1992):<br />

– variante donde los procesos pueden caer<br />

• Número de mensajes para elegir coordinador:<br />

– peor caso: lanza elección sólo el siguiente al futuro<br />

coordinador ⇒ (3n-1) mensajes<br />

– mejor caso: lanza elección el futuro coordinador ⇒ 2n<br />

mensajes<br />

Tema 6 El tiempo y la coordinación distribuida 60<br />

Sistemas Operativos Distribuidos y de Tiempo Real 15


E.E. Telecomunicación Curso 12/13<br />

Inicialmente todos los procesos son no-candidatos:<br />

Cualquiera puede empezar una elección:<br />

se marca como candidato<br />

envía mensaje de elección con su identificador<br />

Cuando un proceso recibe un mensaje de elección:<br />

si identificador del mensaje es mayor que el suyo ⇒ envía mensaje a sus vecinos<br />

si es menor:<br />

si es no-candidato ⇒ sustituye el identificador y envía mensaje al vecino<br />

y se marca como candidato<br />

si es candidato ⇒ no envía nada<br />

si es el suyo<br />

se marca como no-candidato<br />

envía mensaje de elegido a su vecino añadiendo su identidad<br />

Cuando un proceso recibe un mensaje de elegido:<br />

si el identificador del mensaje no es el suyo<br />

se marca como no-candidato<br />

lo envía a su vecino<br />

si es el suyo<br />

lo extrae del anillo<br />

Elección basada en anillo. 2<br />

Tema 6 El tiempo y la coordinación distribuida 61<br />

Comunicación de grupo<br />

Tema 6 El tiempo y la coordinación distribuida 63<br />

Tema 6 El tiempo y la coordinación distribuida 62<br />

Sistemas Operativos Distribuidos y de Tiempo Real 16<br />

28<br />

elección elegido<br />

28<br />

4<br />

9<br />

28<br />

15<br />

3<br />

C<br />

28<br />

3<br />

28<br />

Elección en anillo. Ejemplo<br />

17<br />

C<br />

C<br />

28<br />

C<br />

28 17 28<br />

24<br />

1<br />

28<br />

24<br />

• Envío simple (unicast):<br />

– 1 emisor, 1 receptor<br />

• Envío múltiple (multicast):<br />

– 1 emisor, múltiples receptores<br />

– Grupo de envío múltiple:<br />

• conjunto de procesos que<br />

– pueden enviar mensajes<br />

– recibirán los mensajes enviados<br />

– Habitualmente, sin conexión<br />

• Modelo de API:<br />

– Se necesitan operaciones para:<br />

• Incorporarse y darse de baja del grupo<br />

• Enviar y recibir mensajes<br />

28<br />

24<br />

Comunicación de grupo<br />

Tema 6 El tiempo y la coordinación distribuida 64


E.E. Telecomunicación Curso 12/13<br />

Comunicación de grupo y fiabilidad<br />

• Los mensajes se pueden retardar, perder, ...<br />

• Diferentes aplicaciones, diferentes necesidades<br />

respecto a la fiabilidad<br />

• Comunicación de grupo No Fiable:<br />

– Puede que algún proceso no reciba algún mensaje, o lo<br />

reciba más de una vez, ...<br />

• Comunicación de grupo Fiable:<br />

– Garantiza la entrega segura: todo proceso recibe una y<br />

sólo una copia de todo mensaje, y esa copia es correcta<br />

– Son posibles varias ordenaciones:<br />

• Sin orden<br />

• En orden de envío, o FIFO<br />

• En orden causal<br />

• En orden atómico<br />

Tema 6 El tiempo y la coordinación distribuida 65<br />

Comunicación de grupo fiable en orden de envío (FIFO)<br />

• Se garantiza que:<br />

– Si el proceso A envía los mensajes m a1 y m a2, en ese orden,<br />

entonces a cada proceso del grupo de envío múltiple se le<br />

entregarán los mensajes en ese orden.<br />

• Ejemplo 1:<br />

– Si A envía m 1-m 2-m 3 ⇒ A, B y C recibirán: m 1-m 2-m 3<br />

• No hay garantías respecto al orden de mensajes<br />

enviados por procesos diferentes:<br />

• Ejemplo 2:<br />

m a2<br />

m a1<br />

A<br />

C<br />

B<br />

m b1<br />

m b2<br />

• Es posible que:<br />

– A reciba<br />

• m a1-m a2-m b1 -m b2<br />

– B reciba<br />

• m a1 -m b1 -m a2 -m b2<br />

– C reciba<br />

• m b1- m a1-m a2-m b2<br />

Tema 6 El tiempo y la coordinación distribuida 67<br />

Comunicación de grupo fiable sin orden<br />

• No hay ninguna garantía sobre el orden de<br />

entrega<br />

– Dados n mensajes, cada proceso puede recibirlos en<br />

cualquiera de las n! posibles permutaciones<br />

• Ejemplo:<br />

• Es posible que:<br />

– A, B y C reciban lo<br />

mismo: m 1-m 2-m 3<br />

• Pero también que:<br />

– A reciba m 1-m 3-m 2<br />

– B reciba m 3-m 2-m 1<br />

– C reciba m 2-m 1-m 3<br />

Tema 6 El tiempo y la coordinación distribuida 66<br />

Sistemas Operativos Distribuidos y de Tiempo Real 17<br />

m 1<br />

m 2<br />

m 3<br />

A B<br />

• Ejemplo 2:<br />

– Si A envía m a<br />

– B responde a m a con m b<br />

– y C responde a m a con m c<br />

C<br />

Comunicación de grupo fiable en orden causal<br />

• Se garantiza que:<br />

– Si el mensaje m 1 sucedió-antes que el mensaje m 2 (m 1 → m 2),<br />

entonces a cada proceso del grupo de envío múltiple se le<br />

entregará m 1 antes que m 2<br />

• Ejemplo 1:<br />

– Si A envía ma – B responde a ma con m<br />

ma → mb → mc b<br />

– y C responde a mb con mc ⇒ todos los procesos del grupo recibirán: ma-mb-mc m a → m b y m a → m c<br />

pero: m b || m c<br />

⇒ algunos procesos del grupo pueden recibir: m a-m b-m c<br />

⇒ pero otros pueden recibir: m a-m c-m b<br />

Tema 6 El tiempo y la coordinación distribuida 68


E.E. Telecomunicación Curso 12/13<br />

• Ejemplo 1:<br />

– Si A envía m a<br />

– B envía m b<br />

– y C envía m c<br />

Comunicación de grupo fiable en orden atómico<br />

• Se garantiza que:<br />

– Todos los procesos reciben todos los mensajes en<br />

exactamente el mismo orden<br />

– que no tiene por qué ser FIFO ni causal<br />

• Ejemplo 2:<br />

– Si A envía m a1 y después m a2<br />

– B responde a m a1 con m b<br />

– y C responde a m b con m c<br />

6 posibles permutaciones<br />

m a -m b -m c o m a -m c -m b o m b -m a -m c o<br />

m a -m c -m a o m c -m a -m b o m c -m b -m a<br />

⇒ todos los procesos del grupo recibirán la misma<br />

en A: m a1 –m a2<br />

en B: m a1 –m b<br />

en C: m b –m c<br />

⇒ opciones: m a1 -m a2 -m b -m c o m a1 -m b -m a2 -m c o m a1 -m b -m c -m a2<br />

⇒ todos los procesos del grupo recibirán la misma<br />

Tema 6 El tiempo y la coordinación distribuida 69<br />

<strong>La</strong> API Java para comunicación de grupo<br />

• Extensión de UDP<br />

• Independiente del sistema subyacente<br />

– mrouters de Internet, difusión de Ethernet, ...<br />

• Una clase adicional a las conocidas:<br />

– MulticastSocket:<br />

• Deriva de DatagramSocket, a la que añade:<br />

– joinGroup: método para unirse a un grupo<br />

– leaveGroup: método para abandonar un grupo<br />

– setTimeToLive: método para ajustar el tiempo-de-vida<br />

• Se envía mediante send:<br />

– no es necesario haberse unido al grupo<br />

• Se recibe mediante receive:<br />

– sólo los miembros del grupo<br />

Tema 6 El tiempo y la coordinación distribuida 71<br />

Direcciones IP de envío múltiple<br />

• En IPv4, un grupo de envío múltiple se especifica por:<br />

– un número de puerto normal de UDP y<br />

– una dirección IP de clase D<br />

• las 2 28 direcciones que empiezan por 1110<br />

• autoridad que asigna y gestiona: IANA<br />

• se puede usar de la 224.0.0.1 a la 239.255.255.255<br />

• ejemplos:<br />

– 224.0.0.1: todas las máquinas de esta subred<br />

– 224.0.1.84: jini-announcement<br />

• se puede obtener una dirección transitoria en tiempo de ejecución<br />

mediante SAP (protocolo de anuncio de sesión)<br />

• Los paquetes de propagan por “saltos”<br />

– peligro: paquetes circulando indefinidamente<br />

– solución: asignar un tiempo-de-vida (ttl) a los mensajes<br />

• valor en [0,255]<br />

• 0: misma máquina, 1: misma subred, ...<br />

• 255: envío múltiple no restringido<br />

Tema 6 El tiempo y la coordinación distribuida 70<br />

import java.net.*;<br />

import java.io.*;<br />

Emisor de comunicación en grupo en Java<br />

public class EmisorGrupo {<br />

public static void main(String args []) {<br />

// Los argumentos dan el mensaje y la dirección IP de envío múltiple<br />

try{<br />

InetAddress grupo = InetAddress.getByName(args[0]);<br />

int puerto = 6789;<br />

int miPuerto = 9876;<br />

MulticastSocket elSocket = new MulticastSocket(miPuerto);<br />

elSocket.setTimeToLive(32); //restringida a máquinas de la misma zona<br />

byte [] msjEnv= args[1].getBytes();<br />

DatagramPacket paqEnv =<br />

new DatagramPacket(msjEnv, args[1].length(), grupo, puerto);<br />

elSocket.send(paqEnv);<br />

elSocket.close();<br />

} catch(UnknownHostException e) {<br />

System.out.println(″Desconocido: ″ + e.getMessage());<br />

} catch(SocketException e) {<br />

System.out.println(″Socket: ″ + e.getMessage());<br />

} catch(IOException e) {<br />

System.out.println(″E/S: ″ + e.getMessage());<br />

}<br />

}<br />

}<br />

Tema 6 El tiempo y la coordinación distribuida 72<br />

Sistemas Operativos Distribuidos y de Tiempo Real 18


E.E. Telecomunicación Curso 12/13<br />

import java.net.*;<br />

import java.io.*;<br />

Receptor de comunicación en grupo en Java<br />

public class ReceptorGrupo {<br />

public static void main(String args []) {<br />

// El argumento da la dirección IP de envío múltiple<br />

try{<br />

InetAddress grupo = InetAddress.getByName(args[0] );<br />

int puerto = 6789;<br />

MulticastSocket elSocket = new MulticastSocket(puerto);<br />

elSocket.joinGroup(grupo);<br />

byte [] msjRec = new byte[1000] ;<br />

DatagramPacket paqRec= new DatagramPacket(msjRec, msjRec.length);<br />

elSocket.receive(paqRec);<br />

System.out.println(new String(msjRec));<br />

elSocket.close( );<br />

} catch(SocketException e) {<br />

System.out.println(″Socket: ″ + e.getMessage());<br />

} catch(IOException e) {<br />

System.out.println(″E/S: ″ + e.getMessage());<br />

}<br />

}<br />

}<br />

Tema 6 El tiempo y la coordinación distribuida 73<br />

<strong>La</strong> API Java y la fiabilidad<br />

• <strong>La</strong> API de Java se basa en Datagramas<br />

UDP:<br />

– proporciona una comunicación de grupo No<br />

Fiable<br />

– En procesos que no estén en la misma LAN,<br />

• Puede haber mensajes perdidos, duplicados,<br />

desordenados, ...<br />

– Para aplicaciones que exijan fiabilidad:<br />

• Una capa por encima<br />

• Existen paquetes que aumentan la fiabilidad<br />

– JRM, Totem, RMF, ...<br />

Tema 6 El tiempo y la coordinación distribuida 74<br />

Sistemas Operativos Distribuidos y de Tiempo Real 19

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!