1
Sistemas Distribuídos –
Capítulo 6 - Aula 10
Aula de hoje
Relógios Lógicos
Relógios de Lamport
Relógios Vetoriais
Aula de hoje
Introdução ao problema de
sincronização
Relógios Físicos
Algoritmos de
Sincronização
Algumas definições...
Um sistema distribuído pode ser visto como uma coleção P
de N processos pi, i = 1,2,… N
- Evento: ocorrência de uma ação associada ao processo
– Cada processo consiste de uma sequência de eventos execução de uma instrução de máquina
→
– Processos se comunicam através de mensagens
– Ações de um processo: enviar e receber mensagens, mudar o próprio status
Eventos dentro de um processo pi podem ser totalmente ordenados pela relação “acontece antes” (“happened
before”) → , ou seja, a → b, se e somente se a ocorre
Relação Happened Before
1) Se dois eventos ocorrem no mesmo processo, então
eles ocorrem na ordem observada pelo processo p
i2) Quando uma mensagem m é trocada entre dois
processos, e a é o evento de envio e b o de
recebimento, então a
→
b
3) Relação “acontece antes” é transitiva: a b e b
→
→
c, então a c.
→
“Happened Before”
Diagrama de tempo:
- Pontos representam eventos,
linhas verticais processos, e setas mensagens.
- p1 → r4
- Uma alternativa a definição
“acontece antes” é dizer que a b→ significa que o evento a possa ter causado o evento b
- Dois eventos são denominados
concorrentes, se a não causa b e b não causa a
- p3 e q3 são concorrentes!
(mesmo que no diagrama de tempo temos que q3 tenha ocorrido antes de p3, o processo P não sabe que o
processo Q fez em q3 até P receber uma mensagem em p4)
“ Happened Before”
Se dois eventos d e f acontecerem em processos
diferentes e não trocarem mensagens entre si, nem mesmo indiretamente através de um terceiro processo, então nem d f e nem f d são verdadeiros.→ →
Estes eventos são considerados concorrentes (d || f ou f || d), o que simplesmente significa que nada pode ser dito a respeito de quando tais eventos ocorreram, ou sobre qual deles ocorreu antes e qual ocorreu depois.
Relógios de Lamport (1978)
Idéia: Introduzir um relógio que atribua um número a um evento, onde este identificador pode ser pensado como o tempo em que o evento ocorreu
- Ci relógio do processo Pi função que atribui um → número Ci (a) para qualquer evento a em Pi
- Função não está relacionada com tempo físico
- Se o evento a ocorre antes do evento b, então a deve ter acontecido em um tempo menor que o evento b
se a b então C(a) < C(b) : condição para →
Relógios de Lamport (1978)
- Considerando os eventos concorrentes, a condição
se C(a) < C(b) então a b não se aplica,→ pois
significa que eventos concorrentes devem ocorrer ao mesmo tempo.
p2 e p3 são concorrentes com q3,
o que significa que p2 e p3 deveriam ocorrer no mesmo tempo que p2 e p3, contradizendo a consistência do
Relógios de Lamport (1978)
- Condição para consistência do relógioC1: Se a e b são eventos em um processo Pi e a
acontece antes de b, entao Ci(a) < Ci(b)
C2: Se a envia uma mensagem a partir do processo Pi e
b recebe esta mensagem no processo Pj então Ci(a) < Cj(b)
Relógios de Lamport (1978)
- Garantindo a condição para consistência do relógio
Para garantir C1: Cada processo Pi incrementa o relógio Ci entre dois eventos sucessivos
Para garantir C2: Se o evento a envia uma mensagem
m a partir do processo Pi, a mensagem m possui o
timestamp Tm = Ci(a). Ao receber a mensagem m, Pj ajusta seu próprio relógio local para Cj ← max (Cj, Tm) + 1
Sistema de relógios que satisfaça a condição de
consistência do relógio pode ser usado para ordernar o conjunto de eventos de um sistema distribuído.
Relógios de Lamport (1978)
-
Para ordenar totalmente os eventos, podemos usar o PIDdo processo, para ter desempate (isto ocorre quando os eventos são concorrentes!)
P Q R q1 q2 q3 q4 q5 r1 r2 r3 Condição Inicial: C(P) = 0, C(Q) = 2, C(R) =0 Processadores: pid(P) = 0, pid(Q) = 1, pid(R) = 2
Ordenamento total p1 = 10, p2 = 40, p3 = 50, p4 = 80 q1 = 31, q2 = 41, q3 = 51, q4 = 61, q5 = 71 r1 = 12, r2 = 22, r3 = 72 Ordenamento parcial p1 = 1, p2 = 4, p3 = 5, p4 = 8 q1 = 3, q2 = 4, q3 = 5, q4 = 6, q5 = 7 r1 = 1, r2 = 2, r3 = 7 p1 p2 p3 p4
Relógios Vetoriais
- Por usar inteiros simples como marcas de tempo, o algoritmo de Lamport perde informações de vários
ordenamentos válidos. Após aplicar o algoritmo de Lamport, temos apenas uma de várias ordenações possíveis! Ou seja, temos um SD totalmente ordenado
- No entanto, em algumas situações, é necessário ter
acesso a todas as ordenações parciais possíveis, que representam “fotografias” consistentes do Sistema Distribuído, ou seja estados globais.
- Em recuperação a falhas, é necessário termos acessos a estes estados globais.
Relógios Vetoriais
- Por exemplo, podemos estar interessados em saber se o evento n é concorrente com d, c ou y. Aplicando o
algoritmo de Lamport, teremos uma ordenação total que fará com que esta informação desapareça!
Relógios Vetoriais
(Mattern, Figdge,1988
)
Vetor de relógios VCi no processo pi é um vetor de N
inteiros
1) Inicialmente CVi[j] = 0 cada i, j = 1, 2, …N
2) antes de cada evento, pi executa CVi[i] := CVi[i] +1
3) pi envia t = CVi em cada mensagem transmitida
4) quando pi recebe (m,t), o processo ajusta CVi[j] :=
max(CVi[j] , t[j]) j = 1, 2, …N (antes do próximo evento adiciona 1 ao seu próprio contador de eventos)
Relógios Vetoriais
(Mattern,Figdge,1988
)
a b c d e f m1 m2 (2,0,0) (1,0,0) (2,1,0) (2,2,0) (2,2,2) (0,0,1) p1 p2 p3 Physical time p1: a(1,0,0); b (2,0,0) envia (2,0,0) juntamente com a mensagem m1Em p2, no recebimento de m1, o vetor de relógios é modificado para max ((0,0,0), (2,0,0)) = (2, 0, 0) adicionando 1 ao seu próprio relógio = (2,1,0)
Neste caso, o evento c 'sabe' que ocorreram 2 eventos no processo p1 antes da ocorrência do evento c em p2
Relógios Vetoriais
(Mattern,Figdge,1988
)
a b c d e f m1 m2 (2,0,0) (1,0,0) (2,1,0) (2,2,0) (2,2,2) (0,0,1) p1 p2 p3 Physical time Eventos c, e são concorrentes: nem VC(e) <= VC(c) nem VC(c) <=VC(e)Algumas considerações...
Algoritmos de Cristian e Berkeley sincroniza relógios
físicos, apesar da defasagem entre relógios e retardos das mensagens
Para ordenar eventos em computadores diferentes,
sincronização dos relógios nem sempre pode ser feito
A relação “acontece antes” resulta em uma ordenação
parcial dos eventos
Relógios de Lamport são contadores que mudam de acordo
com o relacionamento de “acontece antes” entre os
eventos. Ao final, é possível determinar uma ordenação total válida, entre diversas possíveis
Relógios vetoriais possibilita definir todas as ordenações