Sistemas Distribuídos Sincronização de relógios Gustavo Reis gustavo.reis@ifsudestemg.edu.br 1
- Sincronização de Relógios Em um sistema centralizado, o tempo não é ambíguo. Quando um processo quer saber a hora, faz um chamada de sistema e o núcleo responde. Se o processo A perguntar a hora e, um pouco mais tarde, o processo B também perguntar a hora, o valor que B obtém será mais alto (ou possivelmente igual ao valor que A obteve). Por certo, não será mais baixo. Em um sistema distribuído, conseguir acordo nos horários não é trivial. 2
- Sincronização de Relógios Ex.: programa make no Unix. Programas grandes normalmente são divididos em vários arquivos-fonte, de modo que uma alteração em um arquivofonte requer que apenas um arquivo seja recompilado, e não todos os arquivos. Se um programa consistir em cem arquivos, não ter que recompilar tudo porque um arquivo foi alterado aumenta bastante a velocidade a qual os programadores podem trabalhar. 3
- Sincronização de Relógios Ex.: programa make no Unix. O modo de funcionamento normal do make é simples. Quando o programador terminou de alterar todos os arquivos-fonte, ele executa o make, que examina os horários em que todos os arquivos-fonte e arquivos-objeto foram modificados da última vez. Se o horário do arquivo-fonte input.c for 2151 e o horário do arquivo-objeto input.c for 2150, make sabe que input.c foi alterado desde o momento em que input.o foi criado e, assim, que input.c deve ser recompilado. 4
- Relógios físicos Quase todos os computadores têm um circuito para monitorar a passagem do tempo. Apesar do uso disseminado do termo relógio para se referir a esses dispositivos, na verdade eles não são relógios no sentido usual da palavra e sim Temporizador. Um temporizador de computador usualmente é um cristal de quartzo lapidado e usinado com precisão. Quando mantidos sob tensão, cristais de quartzo oscilam a uma frequência bem definida que depende do tipo de cristal. Associados com cada cristal há dois registradores, um contador e um registrador de retenção. 5
- Relógios físicos Cada oscilação do cristal reduz uma unidade do contador. Quando o contador chega a zero é gerada uma interrupção e o contador é recarregado pelo registrador de retenção. Desse modo, é possível programar um temporizador para gerar uma interrupção 60 vezes por segundo ou a qualquer outra frequência desejada. Cada interrupção é denominada ciclo de relógio. Com um único computador e um único relógio, não há problema se esse relógio estiver um pouco defasado. Uma vez que todos os processos usam o mesmo relógio. 6
- Relógios físicos Logo que foram introduzidas CPUs múltiplas, cada uma com seu próprio relógio, a situação sofre uma mudança radical. Embora a frequência a qual um oscilador de cristal funciona seja em geral razoavelmente estável, é impossível garantir que todos os cristais em diferentes computadores funcionem exatamente à mesma frequência. Na prática, quando um sistema tem n computadores, todos os n cristais funcionarão a taxas ligeiramente diferentes, o que faz com que os relógios (de software) gradativamente saiam de sincronia e informem valores diferentes quando lidos. Essa diferença nos valores dos horários é denominada defasagem de relógio. 7
- Protocolo de tempo de rede Uma abordagem comum a muitos e proposta originalmente por Cristian (1989) é deixar que os clientes consultem um servidor de tempo. Este pode fornecer a hora corrente exata, por exemplo, porque está equipado com um receptor WWV ou um relógio de precisão. Para fornecer UTC (Universal Time Coordinate base de toda a moderna medição civil de tempo) a quem precisa da hora exata, o National Institute of Standard Time (Nist) opera uma estação de rádio de ondas curtas cujo prefixo é WWV, em Fort Collins, Colorado. A WWV transmite um pulso curto no início de cada segundo UTC. A precisão da própria WWV é de + 1ms. 8
- Protocolo de tempo de rede O protocolo NTP (Network Time Protocol) tem como objetivo: Fornecer um serviço que permita aos clientes na Internet serem sincronizados precisamente com o UTC, a despeito dos atrasos de mensagem, grandes e variáveis, encontrados na comunicação via Internet. Fornecer um serviço confiável que possa sobreviver a longas perdas de conectividade. Existem servidores redundantes e caminhos redundantes entre os servidores. Os servidores podem ser reconfigurados para que continuem a fornecer o serviço, caso um deles se torne inatingível. 9
- Protocolo de tempo de rede O protocolo NTP (Network Time Protocol) tem como objetivo: Fornecer um serviço que permita aos clientes na Internet serem sincronizados precisamente com o UTC, a despeito dos atrasos de mensagem, grandes e variáveis, encontrados na comunicação via Internet. Fornecer um serviço confiável que possa sobreviver a longas perdas de conectividade. Existem servidores redundantes e caminhos redundantes entre os servidores. Os servidores podem ser reconfigurados para que continuem a fornecer o serviço, caso um deles se torne inatingível. 10