Sistemas Distribuídos: Sincronização

Download Report

Transcript Sistemas Distribuídos: Sincronização

Sistemas Distribuídos
Jorge Surian
[email protected]
Sistemas Distribuídos: Sincronização
Relógios Físicos
 Hora atômica Internacional (International Atomic Time) é
baseada em relógios muito precisos (taxa de variação de
10 -13).
 Hora Coordenada Internacional (Universal Coordinated
Time – UCT) é o padrão para medição do tempo.
 É baseada na hora atômica, mas ocasionalmente é
ajustada pela hora astronômia.
 'Broadcast' da hora é feito através de estações de rádio
(WWV) e satélites (GPS).
 Computadores que recebem o sinal sincronizam os
relógios.
2
2
Relógios Físicos
 Seja C o valor do relógio 'ideal' (hora UTC).
 Seja Cp o valor do relógio no computador p.
 Se t é o tempo no relógio em sincronia com a hora UTC,
então temos o tempo em p dado por Cp(t).
 Idealmente para todo p e para todo t, temos:
– Cp(t) = t → C'p(t) = dC/dt = 1.
 Clock skew (defasagem do relógio): denota a magnitude
de diferença entre as frequências de dois relógios.
3
3
Relógios Físicos
 Seja x a taxa máxima de deriva (que especifica se um
relógio está adiantado ou atrasado).
 Como fazer a sincronização periódica entre relógios?
4
4
Sincronização de Relógios
 Se existe um 'servidor de tempo' (receptor WWC ou
relógio de precisão)
– Algoritmo proposto por Cristian (1989)
 Se não existe uma fonte que disponibilize a hora
coordenada universal (UCT)
– Algoritmo de Berkeley
 Tempo exato não importa!!
– Relógios Lógicos → Algoritmo de Lamport e
– Relógios vetoriais
5
5
Algoritmos...
Relógio de Cristian (1989)
– Possibilidade de consultar servidores de tempo
equipados com um receptor WWV ou um relógio de
alta precisão.
– Problema: Atrasos de mensagens farão com que a
hora fornecida seja desatualizada!
– Variações na estimativa do atraso entre as máquinas.
6
6
Algoritmos...
Relógio de Cristian (1989)
– Computador A consulta a hora no computador B.
– Computador B inclui na resposta o valor do seu
relógio → T3.
– Computador A atualiza o seu relógio com o valor do
relógio em B adicionado ao retardo da mensagem
entre B e A (One way delay).
– Estimativa para o one-way delay = RTT/2, caso
atrasos em ambas direções sejam aproximados
7
7
Algoritmos...
Relógio de Berkeley
– Algoritmo usado para a sincronização interna de um
grupo de computadores.
– 'Servidor de tempo' é ativo (master) e coleta os
valores de relógios de outros (slaves).
– Master usa estimativas do RTT para estimar o valor
dos relógios dos computadores dentro dos grupos.
– Hora atual é resultante de uma média .
– Master envia ao slaves o total de tempo em que os
relógios devem adiantar/atrasar.
– Caso o master falhe, um novo computador master é
eleito.
8
8
Algoritmos
Relógio de Berkeley
9
9
Relógios Lógicos
 Sincronização baseada em “tempo relativo”.
 Tempo relativo não possui nenhuma relação com o
tempo real.
 O mais importante é que os processos do Sistema
Distribuído concordem com a ordem em que os eventos
ocorrem:
– Algoritmo de Lamport
– Relógios Vetoriais
10
10
Relógios Lógicos
Relógios de Lamport, 1978.
– Em vez da sincronização de relógios, ordenação dos
eventos:
1) Se dois eventos ocorrem no mesmo processo, então eles ocorrem
na ordem observada pelo processo pi.
2) 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.
11
11
Relógios Lógicos
Relógios de Lamport, 1978.
a b ( p1)
c  d (p2)
b  c dado m1
d  f dado m2
Mas, nem todos os eventos podem ser relacionados
através da relação “acontece antes” 
Consideremos a e e (processos diferentes, sem a
existência de cadeias de mensagens entre os processos)
Não estão relacionados através da relação 
São definidos como processos concorrentes: a || e
12
12
Relógios Lógicos
Relógios de Lamport, 1978.
a b ( p1) c  d (p2) b  c dado m1
d  f dado m2
13
13
Relógios Lógicos
Relógio de Lamport, 1978.
 Um relógio lógico é um contador monotonicamente
crescente. Não precisa estar relacionado com o relógio
físico.
 Como Funciona?
– Cada processo pi tem o seu relógio lógico Ci que
pode ser usado para aplicar timestamps lógicos aos
eventos.
1) Ci é incrementado de 1 antes de cada evento no processo pi.
2) Quando um processo pi envia mensagem m, o tempo t = Ci é
anexado a mensagem.
3) Quando pi recebe (m,t), o relógio é atualizado para Ci = max(Cj,
t) antes de aplicar 1.
14
14
Relógios Lógicos
Relógio de Lamport, 1978
 Em cada um dos processos p1, p2, p3 o relógio lógico é
inicializado com zero.
 Os valores dos relógios lógicos são aqueles que ocorrem
imediatamente após o evento. Podemos imaginar a=1,
b=2 e assim sucessivamente.
 Juntamente com m1, o valor 2 é enviado e o relógio em
p2, após o evento c, recebe o max(0,2)+1 = 3.
 a  b implica em que C(a)<C (b ) mas C(a)<C (b ) não
implica em a  b!!!
15
15
Relógios Lógicos
Relógio de Lamport – Exemplo 1
16
16
Relógios Lógicos
Relógio de Lamport – Exemplo 2
17
17
Relógios Lógicos
Relógio de Lamport – Problema
– C(a) < C(b): Não se pode inferir que a → b !!!!
18
18
Relógios Lógicos
Relógios Vetoriais
– Criados por Mattern, Figdge,1988.
– Implementados para evitar a limitação dos relógios de
Lamport: C(a) < C(b) não implica a “acontece antes”
de b.
– Vetores com marcas de tempo são usados para os
eventos locais em cada processo.
– Seja VCi [I] o número de eventos ocorridos em pi até
o instante de tempo em questão.
– Seja VCi [j], o número de eventos que ocorreram em
pj, portanto pi sabe quantos eventos ocorreram em
pj.
19
19
Relógios Lógicos
Relógios Vetoriais
– Como funcionam?
»
1)
2)
3)
4)
Vetor de relógios CVi no processo pi é um vetor de N inteiros
Inicialmente CVi[j] = 0 for i, j = 1, 2, …N
Antes de cada evento, pi executa CVi[i] = CVi[i] +1
pi envia t = CVi em cada mensagem transmitida
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)
20
20
Relógios Lógicos
Relógios Vetoriais
– Exemplificando...
– p1: a(1,0,0); b (2,0,0) envia (2,0,0) juntamente com a mensagem
m1.
– Em 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
– =,<=, max: devem ser realizadas entre pares de elementos
21
21
Relógios Lógicos
Relógios Vetoriais
– Eventos c e e são concorrentes, mas nem VC(e) <=
VC(c) nem VC(c) <=VC(e) podem ser afirmados!!!!
22
22
Relógios...
 Algoritmos de Cristian e Berkeley sincronizam 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.
23
23
Relógios
 Relógios de Lamport são contadores que mudam de
acordo com o relacionamento de “acontece antes” entre
os eventos.
 Relógios vetoriais são uma melhora nos relógios de
Lamport, onde dois eventos são ordenados pela relação
“acontece antes” ou são concorrentes através da
comparação dos vetores com marcas de tempo.
24
24
Fontes:
Tanenbaum, Andrew S. e Steen, Marteen Van. Sistemas Distribuídos, São
Paulo: Prentice Hall, 2008.
Imagem do Relógio, trecho da obra “Persistência do Tempo”, de Salvador
Dali.
Copyright © 2010 Prof. Jorge Surian
Todos direitos reservados. Reprodução ou divulgação total ou parcial deste documento é
expressamente proíbido sem o consentimento formal, por escrito, do Professor Surian.
25
25