Introducción y objetivos La sincronización - GTI
Introducción y objetivos La sincronización - GTI
Introducción y objetivos La sincronización - GTI
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