Algoritmo de Cristian
# Algoritmo de Cristian

Algoritmo de Cristian ou Algoritmo de Christian é um algoritmo que pressupõe que uma das máquinas do sistema distribuído acessa um serviço de informações da hora atômica e ajustando-se, passa a ser um “servidor de tempo” para as demais máquinas do sistema, que periodicamente a consultam para ajustar seus relógios.
Entretanto, há dois problemas a resolver. O principal é a distorção relativa de cada máquina em relação ao “servidor de tempo”, já que os mecanismos de avanço de tempo, tanto de uma como de outra máquina não são absolutamente precisos.
Outro problema é que a comunicação entre essas máquinas também exige um certo tempo, decorrente de fatores das próprias máquinas e dos meios que as interligam. Assim, o algoritmo propõe a adoção de certos ajustes, que levam em consideração a diferença de tempo verificada entre as máquinas, depois de decorrido um certo período do último ajuste entre elas.
No processo periódico de sincronização também é utilizada a média ajustada (devido aos reflexos de possíveis momentos de congestionamento da rede) dos tempos necessários à comunicação entre as máquinas.
Sistemas Distribuídos II - Algoritmo de Christian - Resumo
Algoritmo de Christian : Usado em sistemas assíncronos onde os rtts (envio+recebimento-> T2 - T1) entre cliente e servidor são menores do que a precisão desejada.
    Fórmula: t + RTT/2 -> clock do cliente
Precisão: ± (RTT/2 – Tmin) -> se Tmin nao for conhecido considerar igual a zero.
* Quanto mais o RTT se aproxima Tmin, MAIOR será a precisão
* Para obter um RTT mínimo pode-se fazer diversos pedidos ao servidor
* Como esse algoritmo utiliza um servidor, se esse morrer não será mais possível fazer a sincronização. Para evitar que isso aconteça deve-se utilizar vários servidores de tempo, os clientes fazem multicast do pedido e guardam a primeira resposta.
* Pode acontecer também de servidores intrusos difundirem um horário falso.