4 Teoria
4 Teoria
Fundamentos teóricos de
computación distribuida
Sincronismo, relojes, c us lid d y consistenci de est dos glob les
Objetivos de aprendizaje:
1. Comprende los diferentes modelos de sincronismo y coordinación distribuida.
2. Explica los algoritmos de sincronización de relojes de tiempo real de tipo
determinísticos y probabilísticos.
3. Aplica los conceptos de relojes lógicos y vectoriales para resolver problemas de
coordinación y ordenamiento de eventos de una computación distribuida.
4. Analiza correctamente la consistencia de un estado global.
@ Prof. Raúl Monge - 2025 2
a
a
a
Agenda
4.1 Coordinación y
sincronismo en Sistemas
Distribuidos
Modelos de sincronismo
Noción de tiempo p r procesos distribuidos y cooper tivos
Modelo asincrónico: No hay garantía de tiempo Modelo sincrónico: Procesos funcionan de forma
sobre la velocidad de ejecución y/o los retardos en la sincronizada y se garantiza límites estrictos en
comunicación; i.e., no existe noción de una medida velocidad de ejecución y/o retardos en la
tiempo. comunicación:
• Entrega de mensajes: Mensajes pueden tardar un • Entrega de mensajes: Se garantiza la entrega de
tiempo arbitrario en entregarse, pero nito. mensajes dentro de un límite de tiempo conocido.
• Velocidad de procesamiento: Procesos pueden • Velocidad de procesamiento: el tiempo que
tardar un tiempo arbitrario en ejecutar los pasos, tarda un proceso en ejecutar un paso está
pero nito. acotado.
• Sincronización de relojes: Relojes reales pueden • Sincronización de relojes: Relojes de procesos
desviarse arbitrariamente. están sincronizados dentro de límites conocidos.
∴ ∄ noción global de tiempo real. ∴ ∃ noción global de tiempo real.
Comentario: Si no se conocen límites de tiempo en un sistema, se debe trabajar en un modelo asincrónico.
@ Prof. Raúl Monge - 2025 6
fi
a
a
fi
Ejemplo Nº1: Un problema clásico de coordinación distribuida
Suposición:
• Dos procesos A y B se comunican enviándose mensajes por un canal bidireccional.
• Ningún proceso puede fallar.
• Los canales pueden experimentar fallas transitorias, con posible pérdida de algunos mensajes, pero
garantizando su integridad (no se corroen).
Objetivo:
• Encontrar un protocolo para ponerse de acuerdo sobre realizar una de dos posibles acciones u y v, tal que:
• Ambos procesos A y B deciden realizar la misma acción ( u ⊻ v ), o
• No se hace nada (ninguna de las acciones se realiza, por falta de acuerdo).
Fuente: Jim Gray, "Notes on Data Base Operating Systems", Operating Systems, An Advanced Course. Springer, pp. 393–481, 1978.
• Suposición inicial:
• Entonces consenso se debe haber alcanzado en mensaje #(n − 1), pues n-ésimo
mensaje se pudo haber perdido.
Supongamos:
• Sea un conjunto de n procesos P1, P2, ⋯, Pn, donde se debe seleccionar a un líder.
• ∀i : 1 ≤ i ≤ n : Pi tiene un identi cador único uid(i);
∴ identi cadores de nen un ordenamiento total de los procesos en el sistema.
• Todos los procesos comienzan simultáneamente el algoritmo (digamos en t = 0).
• Los procesos y la comunicación son totalmente ables.
Objetivo:
• Diseñar un protocolo donde todos los procesos aprenden la identidad del líder.
CORRECTITUD:
• Cada proceso va eventualmente a recibir exactamente un mensaje por proceso (total: n mensajes),
dado que la comunicación es able y la entrega ocurre en tiempo nito.
∴ Todos los procesos tendrán el mismo conjunto de n mensajes y c/u puede independientemente
elegir al mismo proceso Pk: con menor uid(k); u otro criterio, acordado previamente por todos.
Observación: Nótese que n difusiones de mensajes son requeridas para una elección.
∴ Complejidad en mensajes del algoritmo: ∼ O(n 2)
@ Prof. Raúl Monge - 2025 11
ALGORITMO:
• Al iniciarse el algoritmo, todo proceso Pi parte un timer y espera hasta que se cumpla alguna de las siguiente condiciones:
(i) Recibe un mensaje de difusión (broadcast) de otro proceso menor y detiene su timer.
(ii) Si ha transcurrido tiempo T ⋅ uid(i) en su reloj (i.e., ocurre timeout), entonces procede a difundir un mensaje con su uid(i).
• Se elige al primer proceso del cual se recibe un mensaje de difusión.
CORRECTITUD:
• En cada ventana de tiempo de tamaño T, llegará a los más un mensaje de difusión.
• Como los procesos por su identi cador de nen un orden total, el algoritmos terminará antes que transcurra T [s] desde que el
proceso con menor identi cador difundió su mensaje (que es el elegido por todos).
Observación: Nótese existe una única difusión de mensajes para una elección sincrónica.
∴ Complejidad en mensajes del algoritmo: ∼ O(n)
@ Prof. Raúl Monge - 2025 12
fi
fi
fi
fi
fi
Conclusión sobre el modelo de sincronismo
• El modelo asincrónico es más general, pues no hace supuestos sobre el tiempo.
• El modelo sincrónico es un caso particular de un sistema (asincrónico), que impone ciertas
restricciones temporales para garantizar un determinado comportamiento.
• Conocimiento sobre el tiempo permite, en general, diseñar algoritmos más e cientes (pero podría
ser más complejos de diseñar e implementar).
• Existen problemas que sólo tienen solución en un modelo sincrónico (e.g. consenso con fallas).
• Sincronismo es di ícil de lograr en sistema a gran escala y con redes no ables, pudiéndose en
consecuencia considerarse el modelo asincrónico como un modelo más realista.
• Existe una gradualidad de modelos entre asincrónico estricto y sincrónico total.
Sistema sincrónico
@ Prof. Raúl Monge - 2025 13
APLICACIONES DEL TIEMPO: Disponer de una base de tiempo común es fundamental para resolver problemas de coordinación en
sistemas distribuidos, tales como ordenamiento de eventos, sincronización y consistencia. Por ejemplo:
• Actualización de información (e.g., saber cuál es última versión de un archivo que se actualiza frecuentemente).
• Detección de fallas (e.g., uso de un timer para reconocer que no se responde a tiempo y asumir una falla).
• Causalidad y consistencia (e.g., ordenar mensajes según sus marcas de tiempo, para una interpretación consistente de la
relación causal entre ellos , tal como e-mails en el buzón de entrada).
• Observabilidad y Debugging (e.g., monitorear eventos en un sistema, ordenándolos por tiempo de ocurrencia para analizar
consistentemente la realidad y explicar correctamente un determinado comportamiento observado).
∀t ≥ 0 : Ci(t) = t
• Reloj correcto: En general, para que cualquier reloj Ci (1 ≤ i ≤ n) esté funcionando correctamente, su tasa de deriva (dri rate) está
acotada a una constante ρ: Es decir:
d
∀t ≥ 0 : C (t) − 1 < ρ
dt i
• Reloj fallado: Un reloj que se detiene o su tasa de deriva excede ρ.
• Tiempo en Unix y Posix: medido en intervalos de 1 [s] desde el 1 de enero de 1970. Esta codi cado con un
entero con signo (i.e. 31 bits de magnitud: aprox. 68 años )
• 1.000.000.000 corresponde a 09/Sep/2001, 01 : 46 : 40
• En 2038 habrá cambio de época (problema parecido al año 2.000)
• FILETIME en Windows: medido en intervalos de 100 [ns] desde el 1 de enero de 1601. Representado como
entero sin signo de 64 bits.
• Llamadas al sistema: Analizar las diferencias de:
• time() : reloj del sistema (segundos)
• gettimeofday() : reloj del sistema(microsegundos)
• rdtsc() : Contador de ciclos de CPU (TSC) (nanosegundos)
• clock_gettime() : Timer de alta resolución del sistema (nanosegundos)
@ Prof. Raúl Monge - 2025 18
a
Deriva de un reloj
Ci(t) (1 + ρ) ⋅ t
Reloj rápido
Ci(t) = t
t0+ Reloj perfecto
t0 (1 − ρ) ⋅ t
t0− Reloj lento
t (tiempo real)
t0
Observaciones:
• ≈ 10−5 (más de 1 [s] de desviación diaria)
Valores típicos de tasa de deriva en relojes de cristal son del orden ρ
• Relojes atómicos pueden tener una tasa de deriva ρ < 10−11 (e.g., menos de 1 [s] de desviación en 6.000 [año]
para uso de Cesio-133).
@ Prof. Raúl Monge - 2025 19
Sincronización de relojes
Problem s y requisitos p r un solución
Problema básico de sincronización de relojes:
• Cada máquina (o procesador) tiene su propio reloj local, siendo la base de tiempo para sus procesos.
• Los relojes se desvían unos de otros (clock skew), si no se hace nada (por inevitable existencia de diferentes tasas de deriva).
• La complejidad de sincronizar relojes es mayor si existen fallas (peor caso: modelo de fallas bizantinas)
Objetivo: Lograr que relojes de diferentes máquinas se coordinen para reducir su desviación del tiempo a un máximo conocido.
Requisitos (propiedades):
• Precisión (precision): Relojes tienen tiempos cercanos entre si. Formalmente, existe una constante de tiempo pequeña π, tal que:
∀i, j : 1 ≤ i, j ≤ n : Ci(t) − Cj(t) < π
• π corresponde en sincronización interna a desviación máximo entre cualquier par de relojes.
• Exactitud (accuracy): Tiempo de cada reloj es cercano al tiempo real. Formalmente, existe una constante de tiempo pequeña α, tal que:
∀i : 1 ≤ i ≤ n : Ci(t) − t < α
• α corresponde en sincronización externa a desviación máxima con un reloj patrón de tiempo real (e.g., UTC: Coordinated Universal Time).
• Monotonicidad. Un reloj siempre se incrementa en el tiempo, i.e.: ∀i : 1 ≤ i ≤ n : t < t′ ⟹ Ci(t) < Ci(t′)
• Ajuste de relojes: consecuencia es no poder tener saltos negativos al sincronizar relojes y se debe reducir velocidad por un lapso de tiempo.
• Probabilístico:
• Condiciones y límites para la sincronización entre relojes están garantizados sólo con cierta probabilidad.
• No se requiere limitar retardo máximo de los mensajes, pero precisión depende de retardos estimados.
• Ejemplos:
• Algoritmo de Cristian (1989): Estima desfase temporal (o set) basado en retardo de la comunicación.
• Protocolo NTP (versión 4: RFC 5905): Uso de ltrado estadístico para acotar el desfase temporal.
Métodos de sincronización: (1) Consultando a un servidor; o (2) cooperativos consultando a un grupo de servidores.
@ Prof. Raúl Monge - 2025 21
• PC debe estimar la desviación o desfase temporal (o set) de su reloj CC respecto a CS para luego ajustar su reloj.
• Retardo de comunicación es de tiempo variable, una di cultad para establecer cuándo PS efectivamente leyó su reloj.
• Relojes pueden fallar, dando diferentes lecturas a procesos lectores (i.e. problema de doble cara).
CARACTERÍSTICAS:
• Se logra típicamente una precisión del orden de varios milisegundos (sincronización interna), pero el grupo
de servidores sincronizados puede derivar respecto a UTC (i.e. no se considera sincronización externa).
• Permite tolerar fallas de servidor, aislando servidores fallados con excesiva desviación de la mayoría.
• Si fallas no son bizantinas y coordinador no tiene fallas de doble cara, se cumple: 2f + 1 ≤ n
Fuente: R. Gusella & S. Zatti, "The accuracy of the clock synchronization achieved by
TEMPO in Berkeley UNIX 4.3BSD," in IEEE TOSE, 15(7), pp. 847-853, July 1989.
@ Prof. Raúl Monge - 2025 23
Algoritmo de Berkeley
Ejemplo sobre su funcion miento
a) Medidas para b) Cálculo del promedio c) Ajuste de relojes para d) Relojes se encuentran
estimación de o sets del o set, descartando corregir desviación sincronizados
valores fuera de rango según o set promedio
• NTP is uno de los protocolos más ampliamente usados para sincronizar relojes en sistemas
distribuidos y es un estándar en Internet.
• Está diseñado para sincronizar los relojes de computadores en una red, asegurando mantener
consistencia y precisión.
• Ofrece tres modos de operación:
• Cliente-Servidor: cliente se sincroniza con uno o más servidores.
• Simétrico: Dos pares de computadores se sincronizan entre ellos; útil para redundancia.
• Broadcast/Multicast: Permite difundir períodicamente información para sincronizar relojes
en una red de área local.
• Algunas características son tolerancia a fallos con replicación de servidores, organización
jerárquica para escalar, autenticación para seguridad, entre otras.
@ Prof. Raúl Monge - 2025 26
á
a
a
ff
ff
NTP: Modo básico de sincronización
De niciones (Ambas variables se pueden indexar por #ronda): Ti−1
Ti−2
• θ : o set entre los relojes de los servidores PA y PB es:
PB
θ(t) = CB(t) − CA(t) ≈ θ (se asume constante)
• δ : retardo medio de transmisión por mensaje m′ m
(2δ es promedio de tiempo de entrega de un mensaje)
Fuente: L. Lamport, "Time, clocks, and the ordering of events in a distributed system", Comm. of the ACM 21(7), 1978, pp. 558-565
Motivación
• Un sistema distribuido se caracteriza, entre otros, por no tener un base de tiempo
precisa y compartida, lo que desvirtúa el concepto de simultaneidad temporal.
• Muchos problemas se resuelven en base a un razonamiento de lo que pasó antes y
después, para establecer casualidad entre eventos (i.e., ¿cómo un evento pudo haber
in uido en la ocurrencia de otro?).
• Sincronizar relojes reales tiene limitaciones y un costo de coordinación.
• Los relojes lógicos de Lamport tiene en sistemas distribuidos múltiples aplicaciones
por ser un sistema de reloj más liviano. Ejemplos:
• Ordenamiento de eventos y ordenamiento de transacciones
• Seguimiento de causalidad, depuración y monitoreo distribuido
• Exclusión mutua entre procesos, elección de un líder.
@ Prof. Raúl Monge - 2025 30
fl
Modelo de un sistema distribuido
MODELO: Sea conjunto de n procesos P1, P2, . . . , Pn (secuenciales, concurrentes y asincrónicos), donde:
1. Cada proceso Pi genera localmente una secuencia de eventos Ei, de nida por:
def
∀Pi (1 ≤ i ≤ n) : Ei = {ei,1, ei,2, ei,3, ⋯}
def
El conjunto de todos los eventos del sistema de n procesos, se de ne como: E = {E1, E2, ⋯, En}.
2. La comunicación entre procesos es por paso de mensaje asincrónico, donde los eventos de envío y
recepción usualmente ocurren en diferentes procesos.
◼
Relación de causalidad →
“H ppen before” (“ocurrió ntes que”)
1) Localidad: ∀a, b ∈ E, a ≠ b : a → b
si eventos a y b son eventos del mismo proceso y a ocurre en este proceso antes que b.
2) Comunicación: ∀a, b ∈ E, a ≠ b : a → b
si a es el evento de envío de un mensaje m en un proceso y b es el evento de recepción de m en otro
proceso.
Observación: Para l n procesos P1, P2, . . . , Pn, eventos E = {E1, E2, ⋯, En} y la relación de
causalidad →, (E, → ) de ne una computación distribuida.
Dado que eventos concurrentes en E no se pueden ordenar, se dice que → establece sólo un
orden parcial sobre los eventos de E.
Comentarios:
• La relación → re eja una potencial in uencia causal, pero que no necesariamente ocurre.
Observación: Si T(a) < T(b), no es posible a rmar que a y b estén causalmente conectados.
• En cada proceso Pi del sistema existe un único reloj lógico LCi (escalar en ℕ0).
• Cada evento a que ocurre en el sistema recibe un tiempo lógico LC(a), denominada
también “marca de tiempo” (timestamp).
• LC() puede ser vista como una función que asigna en un proceso a cada evento
local a una marca de tiempo LC(a).
Las marcas de tiempo de los relojes lógicos para los eventos pueden ser
implementados, si se cumplen las siguientes dos condiciones:
Reglas de implementación
[IR1]: Eventos locales
• El reloj LCi es incrementado para dos eventos locales sucesivos en el proceso Pi, según:
LCi ← ′LCi + d (con d > 0)
• Si a y b son dos eventos sucesivos en el proceso Pi y a → b, entonces se cumple:
LCi(b) = LCi(a) + d
INICIALMENTE:
e1,1 e1,2 e1,3 e1,4 e1,5 e1,6 e1,7
LC1 = 0 P1 m1 (4) m4
(1) (2) (3) (5) (6) (7)
Objetivo:
• Encontrar un orden total sobre los eventos de un sistema E, para resolver
problemas de decisión con control distribuido.
• Todos los procesos observan el mismo orden para todos los eventos de E.
Aplicaciones:
• Ordenar mensajes, respetando causalidad
• Transacciones distribuidas
• Observación o monitoreo de un sistema
P2
(1) (2) m2 (3) (4) m3 (7) • Cualquier observador aplicando ≺
e2,1 e2,2 e2,3 e2,4 e2,5 generará el mismo orden para (E, → ).
Si P1 < P2, entonces los eventos se ordenan así: < e1,1, e2,1, e1,2, e2,2, e1,3, e2,3, e1,4, e2,4, e1,5, e1,6, e1,7, e2,5 >
@ Prof. Raúl Monge - 2025 41
Problemas:
1. No es posible determinar causalidad o concurrencia entre dos eventos cualesquiera si
sólo se conocen las marcas de tiempo de un Relojes Lógico de Lamport.
2. Existe falta de densidad (no es posible saber a partir de las marcas de dos eventos si
existe o no otro evento con una marca intermedia, especialmente si d > 1).
Observaciones:
• Relojes reales sufren también de ambos problemas.
• Además, relojes reales sólo garantizan ordenamiento total (respetando causalidad), si
existe sincronismo perfecto (una imposibilidad).
• La diferencia sustancial radica en que el valor de un reloj lógico en principio no tiene
relación con el tiempo real y no es una métrica de tiempo.
@ Prof. Raúl Monge - 2025 42
4.4 Relojes vectoriales
Fuente: O. Babaglou, K. Marzullo, "Consistent Global States of Distributed Systems: Fundamental Concepts and Mechanisms". Technical Report UBLCS-93-1. January 1993. Laboratory for Computer Science.
University of Bologna. Bologna (Italy).
RESPUESTA: h(e1,6) = {e1,1, e1,2, e1,3, e1,4, e1,5, e1,6, e2,1, e2,2}
Fuente: Schwarz, R. & Mattern, F., "Detecting Causal Relationships in Distributed Computations: In Search of the Holy Grail", Distributed Computing, Springer Verlag, 1994.
@ Prof. Raúl Monge - 2025 45
Historias causales
Propied des
COMENTARIOS:
• Las historias causales permiten detectar si existe concurrencia o causalidad entre 2 eventos.
• Una condición de reloj más fuerte es posible realizarla considerando las dos propiedades
anteriores, cuya implementación denominaremos “relojes vectoriales”.
• Los relojes vectoriales fueron propuestos "concurrentemente" por Fidge y Mattern, en 1988.
Fuentes primarias:
• C. J. Fidge. Timestamps in message-passing systems that preserve the partial ordering. In Eleventh Australian Computer Science Conference, pp. 55–66, U. of Queensland, February 1988.
• F. Mattern. Virtual time and global states of distributed systems. In Proc. of the International Workshop on Parallel and Distributed Algorithms, pp. 215–226. North-Holland, October 1989.
@ Prof. Raúl Monge - 2025 46








a
Proyecciones de una historia causal
DEFINICIÓN: Proyección de una historia causal. Para un evento e ∈ E, la proyección de h(e)
def
sobre Ei, denotada por hi(e), se de ne como: hi(e) = h(e) ∩ Ei
Observaciones:
n n
⋃ ⋂
1. Todos las proyecciones de h(e) de nen una partición; i.e.: hi(e) = h(e) y hi(e) = ϕ
i=1 i=1
2. Para la historia causal de un evento e vale: ∀ei,k ∈ Ei : {ei,k ∈ hi(e) ⟺ ∀j, j < k : ei,j ∈ hi(e)}
∴ Basta un número entero único para representar hi(e), el último evento por proceso.
◼
OBSERVACIÓN:
• ∀e ∈ E : VC(e) representa exactamente h(e).
• Considerando propiedades anteriores 1 y 2, es posible determinar con los relojes vectoriales
si existe causalidad o concurrencia entre un par de eventos cualesquiera.
@ Prof. Raúl Monge - 2025 48
f
fi
fi
fi
Reloj vectorial
Modelo de implement ción
• Como en relojes lógicos de Lamport, cada proceso Pi del sistema puede mantener
un reloj local VCi que re eje el conocimiento global que tiene el este proceso sobre
los eventos ocurridos en el sistema.
∴ Existirán n relojes vectoriales en el sistema (uno por proceso),
donde cada vector tendrá n dimensiones (conocimiento sobre cada proceso).
Reloj vectorial
Interpret ción oper cion l
• Cada proceso Pi asignará una marca de tiempo a cada uno de sus eventos locales o
de comunicación e, tal que:
• ∀i : 1 ≤ i ≤ n : VCi(e)[i] :
Nº de eventos que han ocurrido en Pi cuando sucede evento e
• ∀i, j : 1 ≤ i, j ≤ n, i ≠ j : VCi(e)[ j] :
Nº de eventos que Pi conoce de Pj cuando sucede e
[IR2]: Evento de comunicación. Si en el proceso Pi el evento ei,k es un evento de recepción de un mensaje m con
marca de tiempoVC(m), entonces:
i) VCi(ei,k)[i] ← max{VCi(ei,k−1), VC(m)}
• {ii) VCi(ei,k)[i] ← VCi(ei,k)[i] + 1
VCi(ei,k) :=
OBSERVACIÓN:
• Se ha tratado la recepción de un mensaje como un evento local más del proceso receptor Pi.
• Valor del reloj para otro proceso debe ser igual a marca del último evento conocido por el proceso receptor.
@ Prof. Raúl Monge - 2025 51
Inicialmente:
P3
VC3 = (0,0,0) (0,0,1) (0,2,2) (0,2,3) (0,2,4) (0,2,5)
( ∑ VC(ei)[ j] )− 1
j
OBSERVACIÓN: Esta última propiedad permite a un proceso Pj detectar que existe un evento e′ que
ocurre en otro proceso Pi después que un evento ei ya conocido por Pj.
Limitaciones:
• Overhead: Tamaño de vectores consumen memoria y ancho de banda; por lo mismo, no escala bien para
grandes sistemas (con aumento de Nº de procesos).
• Complejidad: Operaciones son más complejas que marcas escalares, tal como en relojes de tiempo real y
relojes lógicos de Lamport.
• Sistemas dinámicos. Es di ícil manejar los vectores si proceso entran o salen del sistema, requiriendo
redimensionar su tamaño.
• Modelo de fallas. No tolera fallos bizantinos.
Modelo de implementación
• Todos los procesos Pi (1 ≤ i ≤ n) de (E, → ) envían mensajes a un monitor P0,
noti cándole sobre los eventos observables (de interés para monitorear).
• Cada mensaje m enviado por un proceso Pi al monitor Po lleva una marca VCi(m).
• P0 mantiene una cola de mensajes Q, conjunto de mensajes recibidos y no entregados.
• Cola Q está inicialmente vacía.
Sistema de Monitor
P1
Computación Q
P2
distribuida P0
(E, → ) Cola de Proceso
mensajes monitor
Pn
Para la entrega correcta (i.e., en orden causal) en Po del mensaje m ∈ Q proveniente de Pj (i.e.,
sendj(m) ∈ Ej), se deben cumplir dos condiciones:
1. Condición FIFO (mismo proceso origen):
∄m′ ∈ Ej : {sendj(m′) → sendj(m)} ∧ {(m′ no ha sido entregado en P0}
Condición FIFO: Fácil de veri car con relojes vectoriales, pues se debe cumplir que:
VC(m)[ j] − 1 : mensajes han sido entregados en P0 para Pj
Luego, para que no exista mensaje m′′, se debe negar la expresión anterior, quedando:
∀k, k ≠ j : {VC(m′)[k] ≥ VC(m)[k]}
@ Prof. Raúl Monge - 2025 61
Regla Nº1: Entregar en monitor Po mensaje m desde Pj tan pronto se cumplan las
siguientes dos condiciones:
(1,0,0)
P1 e1,1
(2,4,1)
e1,2
DEFINICIÓN: Corte. Un corte C de una computación distribuida (E, → ) es un subconjunto nito de eventos de E, tal
que:
∀e, e′ : (e, e′ ∈ Ei) ∧ (e ∈ C) ∧ (e′ → e) ⟹ e′ ∈ C
◼
DEFINICIÓN: Estado global. El estado global S = {s1, s2, s3, ⋯, sn} asociado al corte C es un conjunto de estados
locales (uno por proceso), tal que para cada evento ei ∈ C :
El efecto del evento ei está re ejado en el estado si de (E, → ).
◼
66
P1 e1,1
s1,1 s1,2 s1,3
e1,5
e1,2 e1,3 e1,4
P2 s2,1 s2,2
e2,2 e2,3
s2,3
C3 = {e1,1, e1,2, e1,3, e1,4, e2,1, e2,2, e2,3, , e3,1, e3,2, e3,3} S3 = {s1,3, s2,3, s3,3}
@ Prof. Raúl Monge - 2025 67
DEFINICIÓN: Estado global consistente. Un estado global S es consistente, ssi S está asociado a
un corte consistente.
◼
Interpretación operacional de consistencia: Un estado global S = {s1, s2, s3, ⋯, sn} para n procesos es
consistente, ssi para cada par de procesos Pi y Pj (i ≠ j) se cumple que:
• ∄ mensaje m enviado por Pi después de tomar su estado si y recibido por Pj antes de tomar su estado sj
@ Prof. Raúl Monge - 2025 68


Ejemplo de consistencia
C1 C2 C3
P1 e1,1
s1,1 s1,2 s1,3
e1,5
e1,2 e1,3 e1,4
P2 s2,1 s2,2
e2,2 e2,3
s2,3
¡C3 no es consistente!
@ Prof. Raúl Monge - 2025 69
Suposiciones:
• Procesos se comunican por paso de mensajes unidireccional, usando canales FIFO.
• Topología conocida, que corresponde a un Grafo Dirigido Conectado.
• Alguien comienza el algoritmo (e.g. un proceso controlador o iniciador).
• Cada uno de los procesos es capaz de registrar su estado local.
• Cada proceso es capaz de registrar el estado de todos sus canales de entrada.
• Una vez terminado el algoritmo, el estado de todos los procesos y canales puede ser recolectado
para obtener el estado global del sistema (e.g. por el controlador).
Fuente: Chandy, K. M., & Lamport, L., “Distributed snapshots: Determining global states of distributed systems”. ACM Transactions on Computer Systems, 3(1), pp. 63-75, Feb. 1985.
@ Prof. Raúl Monge - 2025 70
Algoritmo de Chandy-Lamport (2/2)
• Partida: Inicialmente un único proceso cualquiera recibe una marca (e.g. de un proceso controlador o autoenvío).
• Ejecución: Cada proceso Pi que recibe una marca de partida o desde un proceso cualquiera Pj, por medio algún
canal de entrada denotado como Cj→i, ejecuta el siguiente algoritmo:
if (Pi recibe por primera vez una marca) then { /* realiza atómicamente */
· Pi registra su estado local si;
· Pi registra el estado de todos sus canales de entrada como vacíos;
· Pi envía una marca a todos sus vecinos (usando sus canales de salida);
} else { /* Pi recibe otra vez una marca; en este caso, por canal de entrada Cj→i */
· Pi registra el canal de entrada Cj→i igual a secuencia de mensaje
recibidos por este canal desde que Pi registró su estado si;
}
Demostración (1/2)
) Algoritmo registr un est do consistente
si
Pi
m En el corte de este estado global se observa que
sj Pj ha recibido m, sin embargo m no ha sido
Pj
enviado por proceso Pi .
¿Envío de marca?
• Cuando Pj registró su estado local sj, también registró como vacío su canal de entrada Ci,j.
• Cuando Pj recibe la marca por canal de entrada Ci,j, ha registrado los mensajes {m2, m3} como el
estado de este canal: los dos mensajes en tránsito asociado al corte.
∴ Existencia de canales FIFO asegura Pj haya registrado exactamente los mensajes en tránsito (Q.E.D.)
@ Prof. Raúl Monge - 2025 73
Algoritmo parte en P3
P2 P4
P1
P2
P3
P4
P2 P4
P1
P2
P3
P4
S1 S2 S3 S4 S5 S6 S7 S8 S9
P1 e1,1 e1,5
e1,2 e1,3 e1,4
P2 e2,2 e2,3 e2,4 e2,5 e2,6
e2,1
P3
e3,1 e3,2 e3,3 e3,4 e3,5
4.6 Conclusiones