Sincronización en Sistemas Distribuidos

Anuncio
Sistemas de Operación II
Sincronización en Sistemas Distribuidos
Prof. Carlos Figueira
Basado en material de
Yudith Cardinale (USB)
Andrew Tanembaum y Marteen van Steen
Contenido
●
Introducción
●
Relojes (temporizadores o timers)
●
Sincronización de relojes lógicos
●
Sincronización de relojes físicos
●
Exclusión mutua distribuida
●
Algoritmos de elección de coordinador
Carlos Figueira/USB
2
Algoritmos distribuidos:Propiedades
●
●
●
●
La información relevante se distribuye entre
varias máquinas.
Los procesos toman las decisiones sólo en
base a la información disponible en forma local.
Debe evitarse un punto de fallo único en el
sistema.
No existe un reloj común o alguna otra fuente
precisa del tiempo global.
Carlos Figueira/USB
3
Aspectos a considerar
●
Tiempos y estados globales.
●
Exclusión mutua.
●
●
Algoritmos de elección. Problemas de
consenso
Operaciones atómicas distribuidas:
Transacciones
Carlos Figueira/USB
4
Relojes y Sincronización
●
●
Reloj: circuito con contador (C),
registro de valor inicial (HR) y
cristal cuarzo que cuenta
oscilaciones
C
HR
Cuando C llega a 0, genera una
interrupción (tick), manejada por
software y escalada a unidad de
tiempo conveniente
Carlos Figueira/USB
5
Relojes
●
●
●
¿Pueden dos eventos tener el mismo registro
de reloj? Depende de resolución del reloj y la
frecuencia de ocurrencia de eventos
La frecuencia de un cristal de cuarzo es muy
estable, pero puede variar por: temperatura,
tamaño, forma de corte. ¡Puede desfasarse!
Desfase: diferencia entre reloj y una referencia
(reloj ideal) por unidad de tiempo medida
Carlos Figueira/USB
6
Sincronización de relojes físicos
●
●
●
Los relojes (hardware) de cada máquina de un
sistema distribuido no están sincronizados
(frecuencia, fase)
Sincronización es importante para:
●
Aplicaciones en tiempo real
●
Ordenación de eventos distribuidos
Concepto de sincronización:
●
Mantener relojes sincronizados entre sí
●
Mantenerlos sincronizados con la realidad
Carlos Figueira/USB
7
Relojes lógicos
●
●
●
En los sistemas/aplicaciones distribuidos
importa generalmente la secuencia de
ocurrencia de los eventos, no el tiempo exacto
Reloj Lógico: contador de software que se
incrementa de manera monotónica, cuyo valor
no necesita estar relacionado con ningún reloj
físico.
El reloj lógico nos permite ordenar eventos.
Generalmente se asocia a cada proceso un
reloj lógico
Carlos Figueira/USB
8
Sincronización de relojes lógicos:
Algoritmo de Lamport
●
Principios:
●
●
Si dos eventos ocurrieron en el mismo proceso,
entonces ocurrieron en el orden en que fueron
observados. Notación: x p y, donde x e y son
eventos que ocurren en el proceso P y “x ocurrió
antes que y”
Siempre que un mensaje es enviado entre
procesos, el evento de enviar el mensaje ocurre
antes de recibirlo
Carlos Figueira/USB
9
Algoritmo de Lamport (cont.)
●
Se generalizan estos ordenamientos con la
relación “pasó antes” (happened before), se
denota con → y se define como:
●
PA1: si existe un proceso P, tal que x
P
y
entonces x → y
●
PA2: para cualquier mensaje m, send(m) →recv(m)
●
PA3: (transitividad) si x,y,z son eventos tales que
x →y , y →z, entonces x →z
Carlos Figueira/USB
10
Algoritmo de Lamport (cont.)
P0
a
b
c
P1
P2
●
●
e
d
a
b
b
c
c
d
d
f
a
f
e
Si cada proceso tiene un reloj lógico Cp se puede asignar
un valor de tiempo a cada evento : Cp(a)
Propiedades:
●
Si a → b, entonces Cp(a) < Cp(b)
●
El valor de Cp siempre incrementa, nunca decrementa
Carlos Figueira/USB
11
Algoritmo de Lamport (cont.)
●
Ordenamiento Causal
●
●
●
●
LC1: Cp es incrementado antes que cada evento
sea ejecutado (Cp=Cp+1)
LC2: cuando un proceso P envía un mensaje m,
coloca en el mensaje el valor t=Cp
LC3: cuando un proceso Q recibe mensaje (m,t), Q
calcula Cq=max(Cq, t) y aplica LC1
¿Cp(a) < Cq(b) implica a →b ?
Carlos Figueira/USB
12
Algoritmo de Lamport: Ejemplo
P1
P2
P3
0
0
0
aA
6
10
b 8
12
16
20
c B
18
24
30
d
24
32
40
30
40
50
C e 60
36
48
f
42
56
70
g
48 h D
64
80
54
72
90
60
80
100
P1
P2
P3
0
0
0
a A
6
10
b 8
12
16
20
c B
18
24
30
d
24
32
40
30
40
50
C e 60
36
48
f
42
61
70
g
48 h D
69
80
70
77
90
76
85
100
Tres relojes no sincronizados
Sincronización de relojes
Carlos Figueira/USB
13
Sincronización de Relojes Físicos
●
●
●
Sincronizar los relojes físicos con la hora real
(referencia única)
Sincronizar los relojes físicos entre sí
Se toma en cuenta el Tiempo Universal
Coordinado (UTC)
Carlos Figueira/USB
14
Sincronización de Relojes Físicos
●
●
●
Tiempo Atómico Internacional (TAI) mantenido
por el BIH (Bureau International de l'Heure),
París
Laboratorios mantienen tiempo contando
transiciones del átomo de cesio-133. Un
segundo atómico es 9.192.631.770
transiciones del cesio-133
Cada lab. envía al BIH el número de ticks de su
reloj (se empezó en 1958). El BIH calcula el TAI
promediando las lecturas de los lab.
Carlos Figueira/USB
15
Sincronización de Relojes Físicos
●
●
●
●
Segundo solar: 1/86.400 veces el día solar
UTC es un estándar basado en TAI, usa unos
“segundos de salto” para sincronizar TAI con
segundos solares
En EEUU, el Instituto Nacional de Estándares y
Tecnología (NIST) difunde señal por onda corta
Otras posibilidades: NTP (Internet), Satélite
(GEPS. GPS)
Carlos Figueira/USB
16
TAI vs segundos solares
Carlos Figueira/USB
17
Sincronización relojes físicos: Alg.
de Cristian
●
Servidor de reloj en red
●
El tiempo nunca retrocede: ajustar gradualmente
●
¿Tiempo de tránsito? Estimarlo Tprop=((T2-T1)+(T4-T3))/2 =>
TA'=TB + Tprop, Θ = TA-TA'
Carlos Figueira/USB
18
Sincronización de Relojes Físicos
●
¿Cada cuánto se debe sincronizar?
●
●
●
Cada máquina tiene reloj que causa H
interrupciones por segundo. En la práctica, se
obtiene un error e
En cada interrupción se suma 1 al reloj del sistema
(C) que mantiene número de ticks desde una fecha
de referencia pasada
IDEAL: Si UTC=t, en máquina M se debe cumplir
que CM(t)=t para todo M,t. Así, se cumple dC/dt=1
Carlos Figueira/USB
19
Relación entre tiempo local y UTC
Carlos Figueira/USB
20
Sincronización de relojes físicos
●
Se cumple que: 1-e <= dC/dt <= 1+e
●
e es provisto por el fabricante
●
●
●
La idea es sincronizar el reloj con UTC y que entre
ellos no haya una diferencia mayor de δ.
En el peor caso, en un tiempo T un reloj se atrasa
eT y el otro se adelanta eT, siendo la diferencia en
tiempo entre ambos de 2eT.
Para que esta diferencia sea menor que δ (i.e.
2eT<δ), los relojes deben ser re-sincronizados
cada δ/2e segundos
Carlos Figueira/USB
21
Sincronización relojes físicos:
Algoritmo de Berkeley
●
●
Se basa en servidor de
tiempo activo (demonio
del tiempo), que
consulta el tiempo
periódicamente a cada
máquina (en Intranets)
Tiempo colocado
manualmente por
operador
Carlos Figueira/USB
22
Algoritmo de Berkeley
Carlos Figueira/USB
23
Sincronización relojes físicos:
Algoritmo de Berkeley
●
●
●
¿Qué ventaja tiene transmitir el ajuste y no la
hora?
¿Qué pasa si hay relojes con desfases muy
grandes?
El demonio toma promedio tolerante a fallas:
subconjunto de relojes seleccionados para
promediar son aquellos que no difieran entre sí
más allá de una cantidad especificada.
Carlos Figueira/USB
24
Exclusión Mutua Distribuida
¿Ideas?
Carlos Figueira/USB
25
Requerimientos
1. EM1 (seguridad). A lo sumo un proceso a la
vez puede ejecutar su sección crítica (SC)
2. EM2 (vitalidad).
1. (Sin bloqueo) Un proceso que requiere entrada a
su SC, en algún momento se le concederá
2. (Sin inanición) Cualquier proceso que ejecute su
SC, en algún momento saldrá de ella
3. EM3 (ordenamiento). La entrada a la SC debe
ser otorgada en el orden “pasó antes”
Carlos Figueira/USB
26
Algoritmo Centralizado
●
●
●
Si un proceso quiere entrar en su SC, envía un
mensaje de solicitud al coordinador, indicando
cuál SC requiere
Si ningún proceso está en esa SC, coordinador
envía mensaje de otorgamiento
Si hay otro proceso en la SC, encola su petición
●
●
Envía mensaje de negación, y solicitante intentará
de nuevo más tarde (espera activa) o
No envía nada, el solicitante se bloquea
Carlos Figueira/USB
27
Algoritmo Centralizado (cont.)
●
●
Si un proceso sale de la SC, envía un mensaje
notificando al coordinador
Coordinador busca siguiente petición encolada
y envía mensaje de otorgamiento
Coordinador
P4
P1
1. solicita
3. otorga
P1
P2
P2
sc1
2. libera
P3
Carlos Figueira/USB
sc2
P4
28
Algoritmo Centralizado (cont.)
●
●
Ventajas
●
Se puede generalizar para asignación de recursos
●
Es justo: peticiones atendidas en orden de solicitud
●
Requiere sólo 3 tipos de mensaje
Desventajas
●
●
●
Centralizado (punto único de falla, cuello de botella)
Si coordinador no envía respuesta ante negación, el
solicitante no sabe si respuesta no llega por negación
o por falla
¿Qué pasa si cliente falla dentro de una SC?
Carlos Figueira/USB
29
Algoritmo Distribuido: Ricart y
Agrawala
●
●
●
Cada proceso que requiere entrar a SC envía
mensaje a todos los procesos; entra sólo
cuando recibe confirmación de todos
Construye mensaje con id de SC, id. de
proceso y hora actual
Envía mensaje a todos, incluyendo a sí mismo
Carlos Figueira/USB
30
Algoritmo Ricart y Agrawala (cont.)
●
Cuando un proceso recibe mensaje de solicitud
de otro proceso:
1. Si receptor no está en esa SC y no desea entrar,
envía OK
2. Si receptor está en SC, no responde sino que
incluye solicitud en una lista
3. Si el receptor desea entrar en SC pero no lo ha
logrado, compara fecha del mensaje recibido con la
fecha del que él envió: si la suya es menor, encola
la petición; sino, envía OK
Carlos Figueira/USB
31
Algoritmo Ricart y Agrawala (cont.)
●
●
●
●
Dos procesos (0 y 2)
quieren acceder a un
recurso compartido al
mismo tiempo
El mensaje de 0 tiene
fecha 8, mientras que el
de 2 tiene fecha 12.
1 y 2 envían OK a 0, 1
envía OK a 2 también
0 entra en SC
Carlos Figueira/USB
32
Algoritmo Ricart y Agrawala (cont.)
●
●
Cuando el proceso 0
termina, envía mensaje
de OK
2 ya tenía OK de 1,
puede entrar a SC
Carlos Figueira/USB
33
Algoritmo Ricart y Agrawala:
Problemas
●
Un proceso que falla y no está en SC puede
impedir que otros entren (EM2).
●
●
●
●
No responderá a las peticiones, nadie podrá entrar
en SC => bloqueo
Pero cumple con EM1 (y EM3?)
Probabilidad de falla respecto a proceso
coordinador es n veces mayor!!
Requiere establecer el grupo (p.e., primitivas
de comunicación en grupo)
Carlos Figueira/USB
34
Algoritmo anillo de ficha (token-ring)
●
●
●
●
Los procesos se ordenan en un anillo lógico; se
usa una ficha, que se circula en el sentido de las
agujas del reloj
Si un proceso quiere entrar en SC, espera la
ficha y la retiene. Al salir de la SC, la pasa al
vecino
Si un proceso no desea entrar en SC, lo pasa al
vecino inmediatamente
Se requieren 1 a n-1 mensajes para obtener
ficha
Carlos Figueira/USB
35
Algoritmo anillo de ficha (token-ring)
Un grupo de procesos desordenados en red (a)
se ordena como un anillo lógico por software (b)
Carlos Figueira/USB
36
Algoritmo anillo de ficha (token-ring)
●
Ventajas
●
●
Requiere menos mensajes que algoritmo
distribuido
Desventajas
●
No cumple con EM3 (ordenamiento)
●
Si un proceso falla hay que rehacer el anillo
●
Si falla el proceso que tiene la ficha, se debe crear
una nueva ficha (¿Qué pasa si hay más de una
ficha? ¿Puede ocurrir?)
Carlos Figueira/USB
37
Elección de coordinador o líder
Carlos Figueira/USB
38
Coordinador o líder
●
●
Muchos sistemas cliente/servidor requieren un
líder o coordinador (o servidor)
El rol de coordinador debe ser dinámico. Si
falla el actual, debe nombrarse otro
Carlos Figueira/USB
39
Algoritmos de elección de
coordinador
●
●
Una elección es un procedimiento para
seleccionar un proceso de un grupo para que
ejecute algunas operaciones específicas:
●
Nuevo coordinador
●
Tomar responsabilidad de proceso que falló
Requerimientos
●
●
Debe elegirse un único proceso, aun cuando varios
procesos llamen simultáneamente a elección
Todos deben enterarse de cuál proceso fue electo
Carlos Figueira/USB
40
Algoritmo del grandulón (bully)
●
●
●
●
Puede ser usado cuando los miembros del
grupo conocen identidades y direcciones de los
otros procesos
El
algoritmo
selecciona
el
proceso
sobreviviente con el identificador mayor
Se asume comunicación confiable, pero
procesos pueden fallar durante una elección
Tres tipos de mensajes: elección, respuesta y
coordinador
Carlos Figueira/USB
41
Algoritmo del grandulón
●
●
Una elección puede ser iniciada por cualquier
proceso que detecte que el coordinador ha fallado
Proceso P envía mensaje elección a todos aquellos
procesos que tengan un id más alto que el suyo, y
espera mensaje de respuesta:
●
●
Si no le llega ningún mensaje respuesta en un tiempo
determinado, P se nombra coordinador y envía mensaje
coordinador a todos los procesos con id menores,
anunciándose como coordinador
Si le llega al menos una respuesta, espera un tiempo
determinado por un mensaje coordinador. Sino, inicia una
nueva elección
Carlos Figueira/USB
42
Algoritmo del grandulón
●
●
●
Si un proceso recibe mensaje coordinador,
registra el id y comenzará a comunicarse con él
cuando requiera sus servicios
Si un proceso recibe mensaje de elección,
envía respuesta y comienza nueva elección
Cuando un proceso que falló se recupera,
comienza una elección aunque coordinador no
haya fallado
Carlos Figueira/USB
43
Algoritmo del grandulón
(a) Proceso 4 inicia elección. (b). Procesos 5 y 6
responden, indicando a 4 que se detenga. (c) 5 y
6 inician cada uno una elección
Carlos Figueira/USB
44
Algoritmo del grandulón
(d) Proceso 6 dice a 5 que se detenga. (e).
Proceso 6 gana y lo comunica a todos los demás
Carlos Figueira/USB
45
Algoritmo del grandulón
●
En el mejor caso, el proceso con el segundo
mayor id se da cuenta de la falla del
coordinador, inicia una elección:
●
●
sólo se envían n-2 mensajes coordinador
Peor caso: proceso con menor id se da cuenta
de la falla del coordinador, inicia una elección.
Se requieren O(n2) mensajes
Carlos Figueira/USB
46
Algoritmos basados en anillos
lógicos
●
Propuesto por Gerard Le Lann (76), mejorado por Chang y
Roberts (79).
●
●
●
●
●
Cada proceso tiene id único y conoce el id del vecino
Cualquier proceso puede querer ser coordinador (“rojo”), e iniciar
elección, enviando mensaje a su vecino con su id indicando que
quiere ser coordinador. Sino, se marca como “negro”.
Si un proc. rojo recibe mensaje antes de iniciar elección, pasa a
negro (un proc. negro nunca se vuelve rojo)
Los nodos pueden fallar. Si el vecino falló, el mensaje es enviado al
siguiente vecino activo
Se elige como coordinador el de mayor id que participa en elección
Carlos Figueira/USB
47
Algo. de Chang y Roberts
Inicialmente: todos los procesos son rojos, y proc i envía elecc<i>
a su vecino. Cada proc i ejecuta
recv (mens(elecc<x>))
Si (color=rojo) entonces /* participa en elección */
Si (x < i) entonces descartar mens
Sino si (x > i) entonces send(elecc<x>) ; color:= negro
/*abandona*/
Sino si (x = i) entonces L(i) :=i ; send(coord<i>)
/*i es coordinador, el mensaje da la vuelta al anillo*/
Fin Si
Sino Si (color=negro) entonces send(elecc<x>) /* no participa en
elección */
Fin Si
Carlos Figueira/USB
48
Complejidad Algo. de Chang y
Roberts
●
Peor caso en número de mensajes
●
●
●
●
●
Todos inician elección
Anillo numerado en orden inverso al del sentido de
circulación de mensajes
Mensaje de proc k hace un máx de k+1 saltos
(reenvíos).
Para n procesos, 1+2+3...+n= n(n+1)/2
Al final hay un mensaje adicional para anunciar el
nuevo coordinador
Carlos Figueira/USB
49
Anexos
Carlos Figueira/USB
50
Variantes algoritmos de elección
●
●
Mejoras al algoritmo de Chang y Roberts:
●
Recordar mayor id visto; si recibe uno menor, no reenvía
●
Anillos bi-direccionales (Franklyn)
En general
●
●
●
●
Para árboles, algoritmos del estilo “olas”
Para anillos, Chang/Roberts
Para grafos: variante de algoritmo de construcción de
árbol
Problema anillo, árbol: sensibles al fallo de nodos
(hay que reconstruir la topología)
Carlos Figueira/USB
51
Redes anónimas
●
Puede no conocerse los id, o no son únicos
●
El tamaño de la red puede ser calculado si el coordinador existe
●
Id únicos pueden ser distribuidos si existe un coordinador
●
●
●
Es imposible construir un algoritmo determinístico de elección sin
un coordinador
Algorítmicos probabilísticos usando números aleatorios
– Usar algoritmos de árbol para escoger un coordinador
Ejemplos: redes de sensores, o Computadores MIMD
Carlos Figueira/USB
52
Redes de sensores
Carlos Figueira/USB
53
Referencias
●
●
Sukumar Ghosh. “Distributed systems: an
algorithmic approach”, Volumen 13 de
Chapman & Hall/CRC computer and
information science series, CRC Press, 2007
Material del Profesor Ali Ghodsi, del KTH Inst.
of Technology, Suecia http://www.scse.se/~ali
Carlos Figueira/USB
54
Descargar