SINCRONIZACIÓN EN SISTEMAS DISTRIBUIDOS - …yudith/docencia/ci-4821/Temas/Tema3... · ALGORITMOS...

55
SINCRONIZACIÓN EN SISTEMAS DISTRIBUIDOS Sistemas de operación II Abril-Julio 2012 Yudith Cardinale

Transcript of SINCRONIZACIÓN EN SISTEMAS DISTRIBUIDOS - …yudith/docencia/ci-4821/Temas/Tema3... · ALGORITMOS...

SINCRONIZACIÓN EN SISTEMAS DISTRIBUIDOS

Sistemas de operación II

Abril-Julio 2012

Yudith Cardinale

INDICE

Introducción

Relojes (timers)

Sincronización de relojes lógicos

Sincronización de relojes físicos

Exclusión mutua distribuida

Algoritmos de elección de coordinador

INTRODUCCIÓNPropiedades de los Algoritmos Distribuidos

•La información relevante se distribuye entrevarias máquinas.

•Los procesos toman las decisiones sólo conbase en 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 fuenteprecisa del tiempo global.

INTRODUCCIÓN

Problemas a considerar:

•Tiempos y estados globales.

•Exclusión mutua.

•Algoritmos de elección. Problemas de consenso

•Operaciones atómicas distribuidas: Transacciones

Relojes y Sincronización

RELOJES (Timers) Cristal de cuarzo asociado a un dispositivo electrónico (chip) que cuenta oscilaciones.

HR C• C: contador, se decrementa

con cada oscilación.

• HR: “Holding register”, con este valor se inicializa C cada vez que llegue a 0.

Cuando C llega a 0, se genera una interrupción (tick de reloj), la cual puede ser manejada por software (contando los ticks de reloj) y escalada a una unidad de tiempo conveniente.

• ¿Pueden dos eventos tener el mismo registro de reloj?

• Depende de la resolución del reloj y de la frecuencia de ocurrencia de eventos.

• Aunque la frecuencia a la cual un cristal de cuarzo oscila es usualmente estable, puede variar por varios factores (temperatura, tamaño del cristal, forma de corte), presentando un desfase de reloj.

• El desfase de reloj es el cambio en el offset (diferencia en lectura) entre el reloj y un reloj perfecto de referencia, por unidad de tiempo medida.

RELOJES (Timers)

• Los relojes físicos (de hardware) de un sistema distribuido no están sincronizados

• Necesidad de sincronización para:

• Aplicaciones en tiempo real

• Ordenación natural de eventos distribuidos

• Concepto de sincronización

• Mantener relojes sincronizados entre si

• Mantener relojes sincronizados con la realidad

SINCRONIZACIÓN DE RELOJES

• El interés en las aplicaciones distribuidas, no necesariamente es el tiempo exacto, sino la secuencia en que ocurren los eventos. Así, se pueden manejar relojes lógicos, en lugar de relojes físicos.

• Reloj lógico:contador de software que se incrementa monótonamente, cuyo valor no necesita estar relacionado con ningún reloj físico.

• Generalmente se asocia a cada proceso un reloj lógico.

SINCRONIZACIÓN DE RELOJES LÓGICOS

SINCRONIZACIÓN DE RELOJES LÓGICOS Algoritmo de Lamport:Se basa en:

1. Si dos eventos ocurrieron en el mismo proceso, entonces ellos ocurrieron en el orden en que fueron observados. Notación: x p y , x e y son eventos que ocurren en el proceso p y “x pasó antes que y”

2. Siempre que un mensaje es enviado entre procesos, el evento de enviar el mensaje ocurre antes que el evento de recibirlo.

Lamport generalizó estas dos 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) rcv(m).

PA3: Si x,y,z son eventos tales que x y,

y z, entonces x z (propiedad de transitividad)

SINCRONIZACIÓN DE RELOJES LÓGICOS

SINCRONIZACIÓN DE RELOJES LÓGICOS

a b

c d

e f

•a b, b c, c d, d f

•Los eventos a y e son paralelos:

a e

P0

P1

P2 Si cada proceso tiene un reloj lógico Cp, se puede

asignar un valor de tiempo a cada evento a: Cp(a).

Estos relojes lógicos deben tener las siguientes propiedades:

Si a b, entonces Cp(a) < Cp(b).

El valor de Cp debe ser siempre incrementado, nunca deben decrementarse.

SINCRONIZACIÓN DE RELOJES LÓGICOS

Algoritmo de 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 (m,t), q calcula Cq=max(Cq,t) y aplica LC1.

¿Es verdad que si Cp(a) < Cq(b), entonces a b?

SINCRONIZACIÓN DE RELOJES LÓGICOS

Veamos con un ejemplo cómo funciona el algoritmo:

Tres relojes no sincronizados Sincronización de relojes

06121824303642485460

08162432404856647280

0102030405060708090100

P1 P2 P3

A

B

D

C

ab

cd

ef

gh

06121824303642487076

08162432404861697785

0102030405060708090100

P1 P2 P3

A

B

D

C

ab

cd

ef

gh

Se requiere

Sincronizar los relojes físicos con la hora real.Sincronizar los relojes físicos ente si.Se toma en cuenta el Tiempo Universal Coordinado (UTC)

SINCRONIZACIÓN DE RELOJES FÍSICOS

Algunas consideraciones importantes:El Tiempo Atómico Internacional (TAI) es mantenido por el BIH (Bureau International de l’Heure) en París.

Un conjunto de laboratorios mantienen el tiempo contando las transiciones del átomo de cesio-133. Considerando que un segundo atómico es 9.192.631.770 transiciones del cesio-133.

Periódicamente cada laboratorio envía al BIH el número de ticks de su reloj (comenzaron a contarse desde 1ero. de enero de 1958). El BIH calcula el TAI promediando las lecturas de todos los laboratorios.

SINCRONIZACIÓN DE RELOJES FÍSICOS

Algunas consideraciones importantes (cont.):

Segundo solar: 1/86.400 veces el día solar.

El Tiempo Universal Coordinado (UTC) es un estándar internacional basado en TAI y usa unos “segundos de saltos” para sincronizar el TAI con los segundos solares.

Para proveer el UTC, el Instituto Internacional de Tiempo Estándar (NIST), tiene a disposición una estación de radio de onda corta WWV.

Existen otras estaciones satelitales que también dan servicio UTC: NTP (Internet), Satélite (GEOS y GPS).

SINCRONIZACIÓN DE RELOJES FÍSICOS

Si se requiere sincronizar los relojes del sistema con el tiempo real, se usa el UTC. Para esto:

Una máquina debe tener un receptor para WWV y sincronizar el resto de los relojes con este tiempo.

Tener varios receptores para WWV, GEOS. Establecer un rango (intervalo de tiempo) en el cual UTC cae. Se requiere un acuerdo entre las máquinas receptoras para generar un solo intervalo.

Si no hay máquina con receptora de WWV, el tiempo debe colocarse manualmente y luego sincronizar el resto de los relojes.

SINCRONIZACIÓN DE RELOJES FÍSICOS

TAI Vs Segundos Solares

SINCRONIZACIÓN DE RELOJES FÍSICOS

¿Cada cuánto se debe sincronizar? Cada máquina tiene un reloj que causa H interrupciones por segundos. En la práctica se obtiene un error ρ. En cada interrupción se suma 1 al reloj de software (C) que mantiene el número de ticks desde algún tiempo en el pasado.

La idea es que si UTC=t, en la máquina p se cumpla que Cp(t)=t para todo p,t. Si esto es verdad, se cumple que dc/dt=1.

Se cumple que: 1- ρ <= dc/dt <= 1 + ρ

SINCRONIZACIÓN DE RELOJES FÍSICOS

¿Cada cuánto se debe sincronizar?

Donde ρ lo provee el fabricante y se llama tasa máxima de alejamiento.

La idea es sincronizar el reloj con UTC y que entre ellos no haya una diferencia mayor de δ. Para esto los relojes deben ser resincronizados cada δ/2ρ segundos.

SINCRONIZACIÓN DE RELOJES FÍSICOS

¿Cada cuánto se debe sincronizar?

SINCRONIZACIÓN DE RELOJES FÍSICOS

Algoritmo de CristianALGORITMOS DE SINCRONIZACIÓN

ST Servidor de Tiempo con receptor WWV

P0 P1 P2

mrmt mtmr • ST recibe solicitudes de tiempo

y responde tan rápido como pueda.

¿Qué hace el enviador cuando recibe la respuesta?a. Colocar su reloj en el C

UTC que le envía ST.

Problemas:

Si CUTC

es menor que el Cp, se estará devolviendo.

No se considera el tiempo de transmisión de los mensajes.

Algoritmo de CristianALGORITMOS DE SINCRONIZACIÓN

¿Qué hace el enviador cuando recibe la respuesta? b. Ajustar su reloj C

UTC gradualmente

En lugar de sumar 1 al Cp con cada tick de reloj, se suma un valor

mayor (si Cp < C

UTC) o menor (si C

p > C

UTC).

Ejemplo:1 seg = H interrupciones, así al sumar 1 a C

p se están sumando 1/H

segs.1 seg = 100 interrupciones, así al sumar 1 a C

p se suman 10 msegs.

Si en lugar de sumar 1, se suma 0.9 se estarán adicionando 9 msegs.Si en lugar de sumar 1, se suma 1.1 se estarán adicionando 11 msegs.Problema: No considera el tiempo de transmisión de los mensajes.

Algoritmo de CristianALGORITMOS DE SINCRONIZACIÓN

Solución: Estimar el tiempo de propagación Tpropag

.

Enviador Servidor del tiempo

T0

TI

T1

T0 y T

1 se miden con el mismo reloj, así:

Tpropag

= (T1 – T

0)/2.

Si se conoce TI (tiempo de atención de la interrupción),

Tpropag

= (T1 - T

0 - T

I)/2.

Se basa en un servidor de tiempo activo (demonio del tiempo) que realiza un “polling” a cada máquina periódicamente para preguntar el tiempo que tienen.

Es útil, aún si no hay una máquina receptora para WWV. El tiempo debe ser colocado manualmente por el operador.

ALGORITMOS DE SINCRONIZACIÓNAlgoritmo de Berkeley

3:00

3:25 2:50

3:00

Demonio del tiempo

3:00

3:00

3:25 2:50

+25

Demonio del tiempo

-10

3:00

3:25 2:50

-20

Demonio del tiempo

+15

3:00 0 +5

¿Qué ventaja tiene transmitir el ajuste y no la hora?

¿Qué pasa si hay relojes con desfases muy grandes?

El demonio toma un promedio tolerante a fallas. Esto es, el subconjunto de relojes seleccionados, para promediar, son aquellos que no difieran entre sí en una cantidad especificada.

ALGORITMOS DE SINCRONIZACIÓNAlgoritmo de Berkeley

Es distribuido.

La idea es dividir el tiempo en intervalos de resincronización de longitud fija.

El i-th intervalo comienza en T0 + iR y corre

hasta T0 + (i+1)R, donde T

0 es el tiempo inicial

del pasado y R un parámetro del sistema.

ALGORITMOS DE SINCRONIZACIÓNAlgoritmo de Promediación

T0 T1 T2 ... TnSinc Sinc Sinc Sinc

R RPi

Al comienzo de cada intervalo cada máquina realiza un broadcast de su tiempo actual. Inicia un timer=S para recolectar los broadcast de las otras máquinas.

Corregir cada mensaje adicionando un estimado de T

propag.

Eliminar los valores más altos y más bajos.

Promediar los valores restantes.

ALGORITMOS DE SINCRONIZACIÓNAlgoritmo de Promediación

Exclusión Mutua Distribuida

EM1: (seguridad) A lo más un proceso puede ejecutarse en su sección crítica (sc) a la vez.

EM2: (vitalidad)

A un proceso que requiere entrada a su sc , eventualmente se le concederá.

Cualquier proceso que se ejecute en su sc, eventualmente la abandonar.

(Libre de deadlock e inanición)

EM3: (ordenamiento) La entrada a la sc debe ser otorgada en orden “pasó antes”.

EXCLUSIÓN MUTUA DISTRIBUIDARequerimientos para proveer exclusión mutua:

Si un proceso quiere entrar a su región crítica envía un mensaje de requerimiento al coordinador indicando la sc a la que quiere entrar.

Si ningún proceso está en esa sc, el coordinador envía un mensaje de otorgamiento.

Si hay otro proceso en la sc encola su petición y:

Le envía un mensaje de negación o

No le envía nada y el solicitante se bloquea.

ALGORITMOS DE EXCLUSIÓN MUTUAAlgoritmo Centralizado (un coordinador)

Cuando un proceso abandona su sc, le envía un mensaje al coordinador de liberación de sc. El coordinador busca la siguiente petición encolada y envía un mensaje de otorgamiento:

Si el cliente no estaba bloqueado, tendrá que hacer polling.

Si el cliente estaba bloqueado se desbloquea y entra a su sc

ALGORITMOS DE EXCLUSIÓN MUTUAAlgoritmo Centralizado (un coordinador)

P1 P2

1. request

Coordinador

P3 P4

sc1

P4

sc2

P2P1

2. release3. grant

Ventajas:

Se puede generalizar para asignación de recursos en general.

Es justo, las peticiones son atendidas en el orden que son realizadas.

Requiere sólo de tres mensajes (requerir, otorgar, liberar)

Desventajas:

Centralizado

Si el coordinador no envía respuesta ante la negación, el solicitante no sabe si la respuesta no le llega por negación o por falla.

¿Qué pasa si un cliente falla dentro de una sc?

ALGORITMOS DE EXCLUSIÓN MUTUAAlgoritmo Centralizado (un coordinador)

ALGORITMOS DE EXCLUSIÓN MUTUAAlgoritmo Distribuido (Ricart y Agrawala)

• La idea básica del algoritmo es que el procesoque requiere entrar a su Sección Crítica envíaun mensaje a todos los procesos y entra,únicamente, cuando recibe un reconocimientode todos ellos.

44nn

11

22

33xx

. . .. . .

ALGORITMOS DE EXCLUSIÓN MUTUAAlgoritmo Distribuido (Ricart y Agrawala)

• Construye un mensaje con el nombre de la sección crítica, su número de proceso y la hora actual.

• Envía el mensaje a todos los demás procesos, incluyéndose a sí mismo (Se supone un envío confiable).

• Cuando un proceso recibe un mensaje de solicitud de otro proceso:

1. Si el receptor no está en la región crítica y no desea entrar a ella -> OK2. Si el receptor ya está en la región crítica no responde sino que incluye la solicitud en una lista.3. Si el receptor desea entrar a la región crítica pero no lo ha logrado compara la marca de tiempo del mensaje recibido con la marca del mensaje que envió a cada uno. Si el suyo es menor encola la petición, si no envía OK.

ALGORITMOS DE EXCLUSIÓN MUTUAAlgoritmo Distribuido (Ricart y Agrawala)

•Dos procesos quieren hacer uso de la SecciónCrítica al mismo tiempo. En particular, los procesos 0 y 2 son los involucrados.

11

00

22

88

88 88

1212

1212

1212

ALGORITMOS DE EXCLUSIÓN MUTUAAlgoritmo Distribuido (Ricart y Agrawala)

11

00

22

OKOK

OKOK

OKOK

Entra a laEntra a laSecciónSecciónCríticaCrítica

11

00

22

OKOK

ALGORITMOS DE EXCLUSIÓN MUTUAAlgoritmo Distribuido (Ricart y Agrawala)

• Problemas:

1. Si cualquier proceso falla no es posibleresponder a las peticiones hechas (se puedeinterpretar incorrectamente). Probabilidad defalla contra un proceso coordinador es n vecesmayor.

2. Primitiva de comunicación de membresía degrupo.

La idea es ordenar los n procesos en un anillo lógico, y hacer pasar un token en la dirección del reloj.

Si un proceso quiere entrar a su sc, esperará el token y lo retendrá. Al salir de la sc, pasará el token a su vecino.

Si un proceso que no quiere entrar a su sc recibe el token, lo pasa inmediatamente al vecino.

Se requerirán de 1 a n-1 mensajes para obtener el token.

ALGORITMOS DE EXCLUSIÓN MUTUAAlgoritmo basado en token-ring

Ventajas:

Cumple con ME1 y ME2, pero no con ME3.

Requiere menos mensajes que el algoritmo distribuido.

Desventajas:

Si un proceso falla hay que rehacer el anillo.

Si falla el proceso que tiene el token, se deberá crear un nuevo token (cuidado con dos tokens!)

ALGORITMOS DE EXCLUSIÓN MUTUAAlgoritmo basado en token-ring

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, tome la responsabilidad de un proceso que ha fallado).

El requerimiento principal para la selección es que el proceso electo sea único, aún cuando varios procesos llamen a la elección simultáneamente, y que todos sepan cuál es el proceso electo.

ALGORITMOS DE ELECCIÓN DE COORDINADOR

Puede ser usado cuando los miembros del grupo conocen las identidades y direcciones de los otros procesos.

El algoritmo selecciona el proceso sobreviviente con el identificador mayor.

Se asume que la comunicación es confiable, pero que los procesos pueden fallar durante una elección.

Hay tres tipos de mensajes en este algoritmo: elección, respuesta y coordinador.

ALGORITMOS DE ELECCIÓN DE COORDINADOR

Algoritmo del grandulón

La elección puede comenzarla cualquier proceso P que detecte que el coordinador ha fallado.

El proceso P envía un mensaje de elección a todos aquellos procesos que tengan un identificador más alto que el suyo y espera un mensaje de respuesta.

Si no le llega ningún mensaje de respuesta dentro un período de tiempo determinado, el proceso se considera coordinador y envía, a todos los procesos con identificadores menores, un mensaje coordinador anunciándose como nuevo coordinador.

ALGORITMOS DE ELECCIÓN DE COORDINADOR

Algoritmo del grandulón

Si le llega al menos una respuesta, espera un tiempo determinado por un mensaje coordinador. Si al terminar ese tiempo no le llega, inicia una nueva elección.

Si un proceso recibe un mensaje coordinador, registra el identificador y comenzará a comunicarse con él cuando necesite de sus servicios.

Si un proceso recibe un mensaje de elección, envía un mensaje de respuesta y comienza una nueva elección.

Cuando un proceso que falló es recuperado, éste comienza una elección, aún cuando el coordinador no haya fallado.

ALGORITMOS DE ELECCIÓN DE COORDINADOR

Algoritmo del grandulón

ALGORITMOS DE ELECCIÓN DE COORDINADOR

Algoritmo del grandulón

P1

P2

P3 P4Estado 1: Falla el coordinador P4

ER

ER

P1

P2

P3 P4Estado 2:P2 y P3 inician nueva elección

E

ER

P1 P2 P33Estado 3: P3 es coordinador pero falla antes de anunciarlo

C

E

ALGORITMOS DE ELECCIÓN DE COORDINADOR

Algoritmo del grandulón

Eventualmente....p1 inicio de nuevo elección y p2 es coordinador.

P1 P2

CCoord.

En el mejor caso, el proceso con el segundo identificador mayor se da cuenta de la falla del coordinador, y sólo se envían n-2 mensajes coordinador.

En el peor caso, el proceso con menor identificador se da cuenta de la falla del coordinador, y se requieren O(n2) mensajes.

No se requiere que los procesos conozcan los ids de los demás procesos, sólo el del vecino en la dirección del anillo.

Se elige como coordinador el proceso con el id mayor.

Cualquier proceso P puede iniciar la elección, coloca su id en un mensaje de elección y lo pasa a su vecino.

Si el vecino ha fallado, el mensaje es pasado al siguiente vecino que esté corriendo.

Cuando un proceso recibe un mensaje de elección, adiciona si id en el mensaje y lo pasa.

ALGORITMOS DE ELECCIÓN DE COORDINADOR

Algoritmo en anillo lógico (Chang y Roberts)

Eventualmente, el mensaje regresará al proceso que inició la elección. Esto se detecta cuando recibe el mensaje de elección y su id está en la lista.

El mensaje es cambiado a coordinador y circula de nuevo en el anillo.

¿Qué sucede en ambos algoritmos si dos procesos simultáneamente inician elección?

ALGORITMOS DE ELECCIÓN DE COORDINADOR

Algoritmo basado en anillo lógico

ALGORITMOS DE ELECCIÓN DE COORDINADOR

Algoritmo basado en anillo lógico

• No se conoce la identidad de los otros procesos a priori.

• Sólo existe comunicación entre vecinos (en un sentido).

• Se asume la funcionalidad y alcance de los procesos durante la elección.

ALGORITMOS DE ELECCIÓN DE COORDINADOR

Algoritmo en anillo (Variante Tanenbaum)

1.- Inicialmente cada proceso se marca como “no participante”.

2.- Cualquier proceso puede iniciar la elección.

- Se marca como “participante”.

- Envía un mensaje de “elección” con su ID al vecino.

ALGORITMOS DE ELECCIÓN DE COORDINADOR

Algoritmo en anillo (Variante Tanenbaum)

- IDmensaje > IDreceptor, se reenvía.

- IDmensaje < IDreceptor, y el receptor no es “participante”, se sustituye el ID y se

reenvía.

- IDmensaje < IDreceptor, y el receptor es “participante”, no se reenvía.

- IDmensaje = IDreceptor, este proceso pasa a

ser el coordinador.

3.- Cuando se recibe un mensaje de “elección” se compara el ID del mensaje con el propio.

ALGORITMOS DE ELECCIÓN DE COORDINADOR

Algoritmo en anillo (Variante Tanenbaum)

4.- El coordinador se marca como “no participante”, y envía un mensaje de “elegido” con su ID.

5.- Cuando se recibe un mensaje de “elegido” por cualquier otro proceso (no coordinador) se marca como “no participante” y reenvía el mensaje.

ALGORITMOS DE ELECCIÓN DE COORDINADOR

Algoritmo en anillo (Variante Tanenbaum)

• Peor Caso:

Cuando sólo un proceso empieza la elección y su vecino “contrario” es el de mayor ID.

Se envían 3n – 1 mensajes en total.

* n – 1 hasta llegar al vecino de mayor ID

* n mensajes de este vecino a través del anillo

* n mensajes de “elegido”