Sistemas Distribuidos
2.1 Introdução
A comunicação esta intimamente ligada à questão de como os processos cooperam e sincronizam uns com os outros, por isso a sincronização em sistemas distribuídos também deve ser conseguida por troca de mensagens.
Sincronização em sistemas distribuídos è conceito mais complicado se comparado aos sistemas centralizados. A principal razão é a utilização de algoritmos distribuídos, onde:
1. As informações estão espalhadas entre diversas máquinas.
2. Os processos tomam decisões baseados nas informações disponíveis no local.
3. Deve ser evitada a existência de um ponto de falha.
4. Não existe nenhuma fonte de tempo comum.
2.2 Sincronização através do Clock
Nos sistemas centralizados o tempo é um conceito não-ambíguo. Em sistemas distribuídos, a conformidade em relação à questão do tempo não é obtida de forma trivial.
Com um único computador, não tem importância o fato do clock estar um pouco atrasado ou adiantado. Em um sistema com n processadores, os n clock’s podem estar ligeiramente diferentes uns dos outros. A diferença nos valores de tempo é denominada escorregamento do clock. Os tempos associados a arquivos, processo, ou mensagens poderão vir a falhar, como no exemplo de make.
Em muitas aplicações não importa que todos os processos estejam de acordo sobre o valor exato do tempo, mas sobre a ordem na qual os eventos ocorrem. Para certas classes de algoritmos, o que vale é a consistência interna dos clocks, e não o quanto eles estão próximos do real. Esses são conhecidos como clocks lógicos.
Existem vários algoritmos para obter a sicnronização de clocks lógicos. Exemplo:
• Relação acontecimento-anterioridade: quando uma mensagem é enviada, além do número da máquina de destino e da informação, é enviado também o valor do
Sincronização em Sistemas Distribuídos
17
seu clock. Ao receber a informação o cliente atualiza o seu clock com o valor da mensagem, o que garante o processamento da