Sincronización de Relojes

9
Sincronización de Relojes • Es importante para sincronizar eventos en sistemas distribuidos (transacciones) • Consistencia en datos replicados • El reloj de un sistema se peude representar por Ci(t) = a*Hi(t) + b en que Hi(t) es una medida de tiempo dada por un hardware

description

Sincronización de Relojes. Es importante para sincronizar eventos en sistemas distribuidos (transacciones) Consistencia en datos replicados El reloj de un sistema se peude representar por Ci(t) = a*Hi(t) + b en que Hi(t) es una medida de tiempo dada por un hardware. - PowerPoint PPT Presentation

Transcript of Sincronización de Relojes

Page 1: Sincronización de Relojes

Sincronización de Relojes

• Es importante para sincronizar eventos en sistemas distribuidos (transacciones)

• Consistencia en datos replicados

• El reloj de un sistema se peude representar por Ci(t) = a*Hi(t) + b en que Hi(t) es una medida de tiempo dada por un hardware

Page 2: Sincronización de Relojes

El método de sincronización de Christian

• Se basa en la observación que en un período corto de tiempo, los mensajes de ida en internet se demoran casi lo mismo que los de vuelta

Servidor de tiempocliente

mr

mt

Page 3: Sincronización de Relojes

El método de sincronización de Christian

• Si se llama T(mr) al tiempo en que fue mandado el mensaje y T(mt) al del recibido, y que t es el tiempo que se recibió en mt, se puede estimar que el timestamp se debe poner en t + (T(mt)-T(mr))/2

• Esto se puede comparar con lo siguiente si se conoce el tiempo mínimo que puede tardar una viaje en redondo en la red T(rd)

T(mr) T(mt)t

min min

Page 4: Sincronización de Relojes

Tiempos lógicos

• Se trata de lograr sincronización interna, es decir relativa entre los procesos

• Se basan en dos principios: – Si dos eventos ocurrieron en un mismo proceso pi (i =

1..N) entonces el proceso pi puede determinar con exactitud cual ocurrió antes y cual despues

– Cuando un mensaje es enviado entre procesos entonces el evento de mandarlo ocurrió necesariamente antes que el de recibirlo

Page 5: Sincronización de Relojes

Algoritmo de Lamport

• Un reloj lógico es un contador monotónicamente creciente, cuyo valor absoluto no es importante

• Cada proceso pi tiene su propio reloj lógico Li que usa para ponerle el timestamp a los eventos

• Llamemos el timestamp del evento e en pi Li(e) y llamamos L(e) si no nos importa qué proceso le dio el valor

Page 6: Sincronización de Relojes

Algoritmo de Lamport• Cada proceso pi incrementa en uno su reloj Li cada vez

que ocurre un evento

• Cuando un proceso manda un evento, le incluye el valor t = Li en el mensaje (m,t)

• Cuando un proceso pj recibe un mensaje ajusta su reloj con el valor Lj = max(Lj, t) y luego suma 1 para reflejar el evento de recibo de mensaje

• Con esto se puede ordenar relativamente bien las cadenas de eventos

p1

p2

p3

1

1

2

3 4

5

Page 7: Sincronización de Relojes

Ordenamiento total lógico• Se puede dar que pares distintos de eventos tengan el

mismo timestamp si fueron generados en procesos distintos. Esto se puede corregir incluyendo la identificación del proceso en el timestamp

• Si e1 ocurrió en el proceso pi en el instante Ti (lógico) y e2 ocurrió en pj en el instante Tj entonces los timestamps serán (Ti,i) y (Tj,j) respectivamente

• Se define (Ti,i) < (Tj,j) si Ti < Tj o i < j• Esto no tiene ningún significado físico

Page 8: Sincronización de Relojes

Relojes Vector• Un reloj vector para un sistema de N procesos es un

arreglo (o vector) de N enteros. Cada proceso pi guarda un vector propio Vi con valores Vi[j], j= 1,2,3...N

• Cada vez que el proceso pi produce un evento actualiza Vi[i]++

• Cada vez que manda un mensaje envía un “timestamp” que consiste en todo el vector Vi

• Cuando un proceso j recibe un mensaje de pi actualiza su vector Vj[k] = max(Vi[k],Vj[k]) para k= 1...N

Page 9: Sincronización de Relojes

Relojes Vector• Se puede definir un orden entre los vectores de la siguiente forma:

• V = V’ ssi V[j] = V’[j] para j = 1...N• V <= V’ ssi V[j] <= V’[j] para j = 1...N• V < V’ ssi V[j] <= V’[j] y hay al menos un k para el cual V[k] < V’[k]

• Problema: el tráfico es proporcional a Np1

p2

p3

(1,0,0)

(1,0,0)

(2,0,0)

(2,1,0) (2,2,0)

(2,2,2)