El reloj lógico es un mecanismo para determinar la relación cronológica y causal de eventos en sistemas distribuidos que no tienen un solo reloj físico. Los algoritmos de reloj lógico le permiten obtener una ordenación parcial de eventos en el tiempo y detectar violaciones de las relaciones de causa y efecto. El estado del reloj lógico se puede incluir en mensajes internos enviados entre los nodos del sistema. Propuesto e implementado por primera vez por Lamport en 1978, su trabajo fue galardonado con el Premio Turing 2013 .
El conocimiento de la secuencia cronológica de eventos es útil para analizar cálculos, crear algoritmos distribuidos, rastrear eventos individuales o el progreso de los cálculos [1] .
Al implementar algoritmos de reloj lógico, cada proceso de un sistema distribuido tiene sus propias estructuras de datos para representar el tiempo lógico y utiliza un protocolo especial cuando las actualiza. Por lo general, almacenan una hora local lógica para obtener marcas de tiempo para eventos locales y una hora global lógica correspondiente a la representación de la hora global del proceso. El protocolo especifica las reglas para actualizar la hora lógica local cuando se ejecutan los eventos y las reglas para actualizar la hora global lógica para seguir el progreso en todo el sistema distribuido [1] .
Ejemplos notables de relojes lógicos son: