Relógios lógicos

Relógios lógicos são mecanismos para identificação de relações causais e cronológicas em sistemas distribuídos, uma vez que estes fazem uso de uma classe de algoritmos que têm como base a sincronização de seus eventos e a consistência interna de seus relógios.

Leslie Lamport foi o primeiro a provar que é possível sincronizar todos os relógios de um sistema para produzir um único padrão de tempo, mostrando que os processos do sistema não precisam concordar na hora atual, mas sim na ordem em que os eventos ocorrem. Também afirma que os relógios do sistema não precisam estar sincronizados se os processos não interagem, já que a falta de sincronização seria imperceptível e não causaria problemas.

Os dois principais algoritmos para sincronização de relógios são:

Para sincronizar os relógios lógicos, Lamport definiu a relação happens-before (acontece antes de), representada pelo símbolo →. Por exemplo, na relação a → b, o evento a acontece antes do evento b. Dessa forma, é possível sincronizar dois eventos nas seguintes situações:

  1. Se os eventos a e b acontecem em um mesmo processo, o processo pode determinar se a → b é verdade.
  2. Se a representa o envio de uma mensagem por um processo e b representa o recebimento da mesma por outro processo, então a → b é verdade.

A relação happens-before é transitiva: se a → b e b → c então a → c.

Além disso, dois eventos a e b são ditos concorrentes se não é possível inferir que a → b ou b → a.

Referências gerais editar

  • Tanenbaum, A.S.; Steen, M.V. 2002. Distributed Systems - Principles and Paradigms. Prentice Hall.