Você está na página 1de 22

Sistemas Distribuidos

3. Sincronizacin

ISC Enrique Ayala Franco, MCC


Sincronizacin

Objetivo: El alumno describir los mecanismos utilizados para


sincronizar procesos distribuidos, ya que la serializacin y
control de la actividad conjunta de procesos cooperativos
son la base para el correcto funcionamiento de un sistema
distribuido.
Temas:
Introduccin
Relojes y eventos,
Estado de procesos,
Sincronizacin de relojes fsicos,
Tiempo lgico y relojes lgicos,
Relojes vectoriales,
Estados globales.
3.4 Relojes Lgicos y Tiempo Lgico

3
Tiempo lgico
Como se ha mencionado, debido a que no se
pueden sincronizar perfectamente los relojes
fsicos en un sistema distribuido, el uso del tiempo
fsico como marca de tiempo para la ordenacin de
eventos en procesos distribuidos no es del todo
precisa ni confiable. (Lamport 1978)
Otra alternativa es utilizar un esquema similar a la
causalidad fsica para ordenar los eventos que
ocurren en diferentes procesos.
La cual se basa en lo siguiente:
Orden causal u ordenacin causal potencial

1. Si dos eventos han ocurrido en el mismo proceso


pi (i=1,2, , N), entonces ocurren en el orden en
el que pi los observa , este es el orden i.
2. Cuando un mensaje se enva entre procesos, el
evento que enva el mensaje ocurre antes que el
evento que recibe el mensaje.

Lamport llam a la ordenacin parcial obtenida de


estas dos realizaciones como la relacin sucede
antes o tambin a veces llamada la relacin de
orden causal.
Relacin suceder antes

Formalmente se define a la relacin suceder


antes, indicada por
SA1:
Si existe en un proceso pi: eie, entonces e e
SA2:
Para cualquier mensaje m,
enva(m) recibe(m)
SA3:
Si e, e y e son sucesos tales que e e y e
e, entonces e e.
Relacin suceder antes

Por tanto si e y e son eventos, y ee, entonces


podemos encontrar una serie de eventos e1,e2,en
que sucedieron en uno o ms procesos tales que e=e1
y e=en y para i = 1,2n-1 se aplica SA1 o SA2 entre
ei y ei+1.

Esto es, o bien ocurren en sucesin en el mismo


proceso o existe un mensaje m tal que ei=enva(m)
y ei+1=recibe(m)
Ejercicio: Orden causal, sucesos ocurridos en tres
procesos
p1
a b m1

p2 Physical
c d time
m2

p3
e f

1. Qu relacin existe entre a y b en p1?


2. Qu relacin existe entre c y d en p2?
3. Qu relacin existe entre (b y c) y (d y f)?
No todos los eventos estn relacionados mediante .
4. Qu sucede con a y e?
Orden causal: sucesos ocurridos en tres procesos

No podemos decir que ae ya que ocurren en


diferentes procesos y no hay una cadena de
mensajes entre ellos.
Claramente no se pueden modelar relaciones
entre eventos de procesos que no se han
enviado mensajes
En este caso, la relacin sucede antes no
establece ni garantiza causalidad, es decir
entre ee el primer evento pudo o no haber
causado el segundo.
Analizar: suponiendo que d c, se puede
decir que af?
Relojes lgicos

Lamport invent un mecanismo simple por el que la


relacin puede capturarse numricamente. Se le
denomina reloj lgico.

Un reloj lgico de Lamport es un contador de


software que se incrementa montonamente y cuyos
valores no necesitan tener relacin con ningn reloj
fsico.

Cada proceso pi mantiene su propio reloj lgico Li que l


utiliza para aplicar las llamadas marcas de tiempo de
Lamport a los eventos.
Relojes lgicos

Representamos la marca de tiempo del suceso e en pi por


Li(e) y representamos por L(e) la marca de tiempo del
suceso e cualquiera que sea el proceso en el que ocurri.

Para capturar la relacin ocurre antes, los procesos


actualizan sus relojes lgicos y transmiten los valores de
sus relojes lgicos en mensajes:
RL1:
Li se incrementa antes de cada evento en el proceso pi: Li=Li+1
RL2:
(a) Cuando un proceso pi enva un mensaje m, acarrea en m el
valor de t=Li.
(b) Al recibir (m, t) cada proceso pi calcula Lj:=max(Lj,t) y
entonces aplica RL1 antes de realizar la marca de tiempo del
suceso recibe(m).
Marcas de tiempo con Relojes lgicos de Lamport
1 2
p1
a b m1

3 4
Physical
p2
c d time
m2

1 5
p3
e f

Del ejemplo anterior, ahora se aplican marcas de tiempo por medio de un


reloj lgico de Lamport.
Se aprecia que af ya que L(f) > L(a)
Pero, si fuera L(e)>L(a) no podemos decir que ae, pues los relojes
pueden empezar en cualquier valor y hasta que se intercambien tiempos
se determina el orden.
Relojes Lgicos Totalmente Ordenados

Algunos pares de eventos distintos, generados por


diferente procesos, pueden tener estampas de tiempo
de Lamport numricamente idnticas.

Sin embargo, se puede crear un orden total de


eventos, esto es, uno en el que todos los pares de
eventos distintos sean ordenados, teniendo en
cuenta los identificadores de los procesos en que
los eventos ocurrieron.
Relojes Lgicos Totalmente Ordenados

Si e es un evento ocurriendo en pi con estampa


de tiempo local Ti , y e es un evento ocurriendo
en pj con estampa de tiempo local Tj,
Se definen las estampas de tiempo lgicas globales
para estos eventos como (Ti, i) y (Tj, j)
respectivamente.
Tambin se define (Ti, i) < (Tj, j) si y slo si o Ti < Tj, o
Ti = Tj con i < j.

Este ordenamiento no tiene significancia fsica


general (porque los identificadores del proceso
son arbitrarios), pero a veces es til.

Lamport la us, por ejemplo, para ordenar la


entrada de procesos a una seccin crtica.
3.5 Relojes Vectoriales

15
Relojes vectoriales

Mattern (1989) y Fidge (1991) desarrollaron los


relojes vectoriales para vencer la deficiencia en
los relojes de Lamport, casos en los que si
L(e)<L(e) no se puede concluir que ee.

Un reloj vectorial para un sistema de N procesos


es un vector de N enteros.

Cada proceso mantiene su reloj vectorial Vi, que


utiliza para colocar tiempos en los eventos
locales.
Relojes vectoriales

Al igual que en los relojes de Lamport, cada


proceso agrega el vector de marcas de tiempo en
los mensajes que enva y para actualizar los
relojes sigue los siguientes criterios:
RV1:
inicialmente Vi[j]=0 para i,j=1,2,..N
RV2:
justo antes que pi coloque una marca de tiempo en un
suceso, coloca Vi[i]=Vi[i]+1
RV3:
pi incluye el valor t=Vi en cada mensaje que enva
RV4:
Cuando pi recibe una marca de tiempo en un mensaje,
establece Vi[j]= max(Vi[j],t[j]) para j=1,2,N
Relojes vectoriales

(1,0,0) (2,0,0)
p1
a b m1

(2,1,0) (2,2,0)
Physical
p2
c d time
m2

(0,0,1) (2,2,2)
p3
e f

Al igual que con relojes de Lamport se inicia en cero, pero


ahora para todos los elementos del vector, en cada proceso.
Relojes vectoriales

Definimos V(e) < V(e) si,


Para todo i, V(e)[i] V(e)[i], y
Hay algn j, V(e)[j] < V(e)[j]

Ejemplo:
si V(e) = [2,1,1,0] y
V(e) = [2,3,1,0] entonces
V(e) < V(e)

No todos los V son comparables:


ejemplo [4,0,0,0] y [0,0,0,4] (concurrentes)
Reloj vectorial

La principal desventaja de los relojes


vectoriales en comparacin con los relojes de
Lamport
Precisan de una cantidad de almacenamiento
Representan una carga real en el mensaje
proporcional a N (el nmero de procesos)
Ejercicio 1
A. Etiquetar la figura con marcas para los mensajes, y para
los eventos.
B. Agregar marcas de tiempos utilizando un reloj de Lamport
C. Agregar marcas de tiempo con un reloj vectorial.
D. Determinar las relaciones para los eventos o ver cuales
son concurrentes.

P1

P2
Ejercicio 2

Calcula los relojes lgicos de Lamport y vectoriales para la


siguiente secuencia de eventos.
Define las relaciones y los eventos concurrentes.

P1

P2

P3

P4

Você também pode gostar