Sistemas Distribuídos Aula Passada Capítulo 6 - Aula 10 Nomeação estruturada Implementação de um espaço de nomes Implementação de resolução de nomes Nomeação baseada em atributo Introdução ao problema de sincronização (cap 6) Aula de hoje Introdução ao problema de sincronização Relógios Físicos Algoritmos de Sincronização 1
Sincronização Comunicação é importante, mas não é tudo! Como os processos cooperam e sincronizam uns com os outros? Ex 1. Importante que vários processos não acessem simultaneamente um recurso compartilhado como uma impressora, mas cooperem para garantir um acesso temporário exclusivo. Ex 2. Concordância, entre dois processos, em relação a ordenação de eventos
Sincronização Sincronização em relação ao tempo Relógios Físicos e Lógicos Sincronização em relação ao compartilhamento de recursos Exclusão Mútua Sincronização em relação ao coordenador de um grupo de processos Algoritmos de Eleição de Lider
Sincronização de Relógios Em um sistema centralizado, o tempo não é ambíguo Se A pergunta a hora e logo depois B pergunta a hora, tempo A <= tempo B! Sistema distribuído e a aplicação make input.c 2151 e arquivo-objeto 2150 modificação é feita pelo make Arquivo-objeto 2144 e input.c 2143 nenhuma modificação é feita : Inconsistência!
Relógios Físicos Nos computadores, é possível programar um temporizador para gerar uma interrupção 60 vezes por segundo ou a qualquer outra frequência Cada interrupção é denominada ciclo de relógio Ao iniciar o sistema, data e hora atuais são digitadas e convertidas em ciclos de relógio. A cada ciclo de relógio, o procedimento do serviço de interrupção soma uma unidade a hora armazenada na memória.
Programas que esperam que o horário associado com um arquivo, objeto, processo ou uma mensagem esteja correto e seja independente da máquina na qual foi gerado podem falhar! Relógios Físicos Com um único computador e um único relógio Não há problema se o relógio estiver um pouco defasado! Todos os processos na máquina usam o mesmo relógio, internamente estão consistentes! Com a introdução de múltiplas CPUs, cada uma com o seu relógio diferença nos valores dos horários! Clock skew diferença entre a leitura simultânea de dois relógios
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
Relógios Físicos - GPS Global Positioning System (sistema de posicionamento global) GPS usa 29 satélites, cada um circulando em a 20,000Km de altura Cada satélite tem até quatro relógios atômicos que são calibrados periodicamente Um satélite transmite sua posição em broadcast e anexa marcas de tempo a cada msg, informando a hora local Essa transmissão broadcast permite que todo receptor na Terra calcule com precisão sua própria posição (usando três satélites)
Relógios Físicos - GPS Ao se calcular a posição/tempo, usando GPS, dois fatos importantes do mundo real devem ser considerados: Leva um certo tempo para que os dados sobre a posição de um satélite cheguem ao receptor De modo gral, o relógio do receptor não está em sincronia com o de um satélite De modo geral, calcular uma posição exata não é trivial! No caso do tempo, receptores GPS têm um erro declarado de menos de 20 a 35 nanossegundos.
Relógios Físicos Se, no SD,em uma máquina tiver um receptor WWV, o objetivo é manter toadas as outras máquinas sincronizadas com ela Se nenhuma máquina tiver receptores WWV, cada uma monitora seu próprio horário, e o objetivo é manter todas as máquinas o mais junto possível Vários algoritmos foram propostos para manter um SD sincronizado. Cada máquina deve ter um temporizador que provoca uma interrupção H vezes por segundo. Quando o temporizador esgota o tempo fixado, o manipulador de interrupção soma 1 a um relógio de software que monitora o número de ciclos do relógio
Relógios Físicos Seja C o valor do relógio 'ideal' (hora UTC) Seja C p 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 C p (t) Idealmente para todo p e para todo t C p (t) = t C' p (t) = dc/dt = 1
Relógios Físicos Seja ρ a taxa máxima de variação (que especifica se um relógio está adiantado ou atrasado). Especifica até que ponto a defasagem de um relógio pode chegar Como fazer a sincronização periódica entre relógios?
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
Algoritmo I Cristian (1989) Consulta a servidores de tempo equipados com um receptor WWV ou um relógio de alta precisão Utilizável em sistemas assíncronos onde os tempos de RTT são menores que a precisão desejada Problema: Atrasos de mensagens farão com que a hora fornecida esteja desatualizada Solução: Achar estimativas para os atrasos entre as máquinas (delay)
Algoritmo I Cristian (1) Computador A consulta a hora no computador B (requisição) (2) Computador B inclui na resposta o valor do seu relógio T 3 e T 2 (3) Computador A registra a hora da chegada da resposta T 4 (4) Supondo atraso aproximadamente igual em ambas as direções: θ = T 3 - ((T 2 -T 1 ) + (T 4 - T 3 ))/2 = ((T 2 -T 1 ) + (T 3 - T 4 ))/2
Algoritmo I Cristian Se o relógio de A estiver adiantado (θ < 0), significa que A deve atrasar o seu relógio Alteração deve ser feita gradativamente Se cada interrupção somaria 10 ms a hora, para atrasar, a rotina de interrupção soma apenas 9 ms, até que a correção tenha sido feita O mesmo mecanismo pode ser usado caso o relógio de A esteja atrasado (soma 11ms a cada interrupção)
Algoritmo II 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 aos slaves o AJUSTE a ser feito no relógio Caso o master falhe, um novo computador master é eleito
Algoritmo II Berkeley
Protocolo de Tempo de Rede (Network Time Protocol) Algoritmos de Christian e Berkeley são usados para intranets, enquanto o NTP é um serviço para Internet Protocolo para sincronização de relógios, baseado no UDP O ajuste do relógio é feito entre pares de servidores: A consulta B e B consulta A É possível calcular o deslocamento θ, bem como a estimativa de atraso δ entre os computadores (RTT/2) Oito pares de valores (θ,δ) são armazenados. O valor mínimo de δ é usado para a estimativa de atraso entre os dois servidores O valor θ associado a δ é considerado a estimativa mais confiável do deslocamento
Protocolo de Tempo de Rede (Network Time Protocol) Apesar de ser um protocolo que permite sincronismo simétrico, um relógio somente é ajustado se a sua precisão é pior do que a do relógio do outro computador Servidores são organizados em hierarquia, onde um relógio do nível k, possui maior precisão do que um relógio do nível k+1 Se nível de A for mais baixo do que o nível de B, B se ajustará a A
Protocolo de Tempo de Rede (Network Time Protocol)
NTP É confiável não é afetado por problemas de conexão pois usa servidores redundantes e caminhos redundantes entre servidores Atende um grande número de clientes É seguro evita interferências acidentais ou voluntárias usando técnicas de autenticação para verificar se os dados provém de uma origem conhecida
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