O documento discute sincronização de tempo em sistemas distribuídos, abordando relógios físicos, medição de tempo, e algoritmos para sincronização como o de Cristian, Berkeley e Lamport. Relógios físicos têm imprecisões que requerem algoritmos para manter processos em máquinas diferentes sincronizados.
4. INTRODUÇÃO
• Em sistemas centralizados o tempo não é ambíguo
• Núcleo do SO informa tempo aos processos
• P1 solicita hora
• P2 solicita hora depois de P1
• tempo(P2) >= tempo(P1)
• Em SDs, cada máquina tem sua própria percepção do
tempo
• P1 no host1, P2 no host2 se comunicam em ambiente com
potencial diferença de tempo
• Não há noção de tempo global
4
5. INTRODUÇÃO
• Porque sincronizar os relógios em um sistema distribuído?
• Monitorar sistemas distribuídos à medida em que a sua
execução se desenrola;
• Saber o momento exato em que eventos ocorrem,
• ex.: para auditoria em transações bancárias.
• Sincronização externa:
• sincronizar os processos com uma fonte de tempo externa de
referência.
• Sincronização interna:
• relógios de diferentes computadores são sincronizados com
grau de precisão conhecido.
5
7. RELÓGIOS FÍSICOS
Temporizador
•Cristal de quartzo lapidado e usinado com precisão
• Oscilam a frequências bem-definidas sob pressão
• Associados ao cristal:
• Contador
• Registrador de retenção
• Uma oscilação = uma unidade de contagem
• Contador = 0
• gera uma interrupção e o contador é recarregado pelo
registrador de retenção
• A interrupção é denominada clock do relógio
7
8. TEMPO EM SISTEMAS
DISTRIBUÍDOS
• CPU’s múltiplas, cada uma com seu próprio relógio
• Frequência de cada oscilador cristal é normalmente estável,
no entanto:
• Impossível garantir que todos os cristais funcionem na
mesma frequência
• Cristais, funcionando a taxas ligeiramente diferentes
• Relógios fora de sincronia
• Problema da defasagem do relógio
8
9. PROBLEMAS DE
TEMPORIZAÇÃO
• Como sincronizar os relógios com o mundo real?
• Como sincronizar os relógios um com o outro em um
sistema distribuído?
9
10. MEDIÇÃO DE TEMPO
• Invenção dos relógios: séc. XVII
• Tempo medido por meios astronômicos
• Todo dia o Sol nasce no leste e se põe no oeste
• Zênite é o ponto mais alto no céu alcançado pelo Sol
• Passagem do Sol pelo zênite chama-se: trânsito solar
• Trânsito solar ocorre aproximadamente ao meio-dia
• Intervalo de dois trânsitos solares é um dia solar
• Segundo solar= 1/86400 avos de um dia solar
10
12. MEDIÇÃO DE TEMPO
• O relógio atômico
• Surgido em 1948
• Mede o tempo com mais exatidão, independente dos
movimentos da Terra
• Baseado nas transições do átomo de Césio 133
• Um segundo = “9.192.631.770 ciclos de radiação
correspondente a transição entre dois níveis de energia do
átomo de césio-133, no estado fundamental”
• 1 Segundo atômico = 1 segundo solar médio do ano de
medição
• Usado para gerar o Tempo Atômico Internacional (TAI)
12
13. MEDIÇÃO DE TEMPO
• Resumo
• Medição do tempo baseado em segundos TAI (Tempo
Atômico Internacional) constantes
• Em fase com o movimento aparente do Sol
• Hora Coordenada Universal (UTC)
• UTC substitui o GMT (hora astronômica)
• National Institute of Standard, em Colorado/USA
• Time opera estações de ondas de rádio WWV para informar o
tempo UTC
13
15. SINCRONIZAÇÃO DE
TEMPO EM SISTEMAS
DISTRIBUÍDOS
• Se uma máquina tem um receptor WWV,
• Deve-se manter as demais sincronizadas com o tempo real
• Se não possui receptor WWV,
• Deve-se manter o tempo o mais próximo possível.
15
16. SINCRONIZAÇÃO EM
SISTEMAS DISTRIBUÍDOS
• Problemas
• Processos localizados em sistemas computacionais
diferentes
• Atrasos decorrente do tempo de rede
• Há casos com diferencial de fuso horário
16
17. SINCRONIZAÇÃO EM
SISTEMAS DISTRIBUÍDOS
• Há um relógio que define o tempo comumente aceitado e
pré-acordado
• “C”é o valor do relógio
• “p”é uma dada máquina
• “t”é hora UTC
• tempo na máquina p é Cp(t)
• Ideal
• R’p(t) = dC/dt = 1
17
18. SINCRONIZAÇÃO EM
SISTEMAS DISTRIBUÍDOS
• Temporizadores
• Temporizadores reais não interrompem exatamente H vezes
por segundo
• Teoricamente, um temporizador H=60 deve gerar 216.000
ciclos por hora
• O erro relativo de modernos chips estão em 10-5
18
21. ALGORITMO DE
CRISTIAN
• Idéia geral
• Clientes consultam um servidor de tempo com hora exata
(WWV)
• Hora fornecida enfrenta problema de atraso de atualização
(demora para receber de volta a resposta)
•Solução
• Estimar atrasos
21
23. ALGORITMO DE
BERKELEY
• Um daemon de tempo pergunta para todas as outras máquinas
os valores marcados por seus relógios.
• As máquinas respondem.
• O daemon de tempo informa a todas as máquinas como devem
ajustar seus relógios.
23
24. RELÓGIOS FÍSICOS
• Para muitas finalidades é suficiente que todas as máquinas
concordem em uma hora.
• Só para algumas finalidades é necessário que a hora acordada
seja idêntica ao tempo real.
24
25. RELÓGIOS LÓGICOS
DE LAMPORT
• Mecanismos para identificação de relações causais e
cronológicas em sistemas distribuídos
• Cada processo mantém um relógio lógico, que não
necessariamente precisa ter relação com um relógio físico.
• Os processos atualizam seus relógios lógicos e transmitem
valores de seus relógios lógicos em mensagens.
• Princípio de Lamport (1978)
• Processos do sistema não precisam concordar na hora atual,
mas sim na ordem em que os eventos ocorrem
• Relógios do sistema não precisam estar sincronizados se os
processos não interagem
• Relógios são sincronizados para frente, nunca para trás
25
26. RELÓGIOS LÓGICOS
DE LAMPORT
• Para sincronizar relógios lógicos Lamport definiu:
• Relação “acontece antes”
• Notação: a →b é lida como “a acontece antes de b”
• A relação é transitiva:
• se a →b
• b →c,
• então a →c
• Se a →b, então C(a) < C(b)
• Se dois processos diferentes x e y não trocam mensagens
• x →y e y →x não são verdadeiros
26
28. RELÓGIOS LÓGICOS
DE LAMPORT
Cada processo Pi mantém um contador Ci
• Antes de executar um evento Pi executa Ci = Ci + 1.
• Quando um processo Pi envia uma mensagem m para Pj, ele ajusta
a marca de tempo de m, ts (m) para igual a Ci após ter executado a
etapa anterior.
• Ao receber a mensagem m, o processos Pj ajusta seu próprio
contador local para Cj = max{Cj, ts (m)}, e depois disto executa a
primeira etapa e entrega a mensagem à aplicação
28