Daniel Corzo, Juan Pablo Duque, Stefania Garzon, Diego Aguilar, Marilyn Ruiz.
Universidad Católica de Colombia.
decorzo73@ucatolica.edu.co, jpduque86@ucatolica.edu.co, tsgarzon15@ucatolica.edu.co,
dfaguilar24@ucatolica.edu.com, druiz52@ucatolica.edu.co
Abstract. Algorithms are defined as processes that were executed in an orderly manner and with a
chronological time within a team, these allowed processes to be carried out periodically in all the
components that work within the system. In the last decade different points of view have been seen, the
comparison to the synchronization of the algorithms, from the point of view of balanced communication,
to advance the times in the clocks and adjust with synchronization for the rest of the components. The
concepts of signaling, CTU or central time reference, physical clocks, deviation, time, are concepts that
should be clear when venturing into synchronization algorithms.
Keywords: synchronization, logical clocks, physical clocks, memory management, threading, process,
LAN,
Este algoritmo no contempla problemas de fraude o Donde T0 es el momento en el que los equipos
malfuncionamiento por parte del servidor. Hay comienzan a sincronizarse tras su arranque.
algoritmos (Marzullo [1984]) para distinguir los
servidores válidos de los que funcionan mal o son
impostores. Cada nodo debe conocer cuál es el tiempo de
propagación del mensaje desde cada origen a cada
3.1.2 Algoritmo de Berkeley
destino, para lo cual debe conocerse bien la topología
El algoritmo de Berkeley (Gusella y Zatti [1989]) de la red, o calcularlo mediante mensajes que se
está diseñado para entornos en los que no hay ningún envían y se devuelven para calcular simplemente el
receptor de tiempo UTC y el único objetivo es que tiempo de propagación.
todos los computadores se mantengan sincronizados
con una misma hora. Entre todos los equipos del
sistema distribuido eligen un coordinador que hará el En cada intervalo, cada computador envía un mensaje
rol de maestro o Servidor de Tiempo. En este caso el a todo el grupo, incluido él mismo, indicando su hora
coordinador elegido pregunta la hora, periódicamente local. Como todos los relojes son distintos y la
al resto de las estaciones. Cuando las estaciones velocidad es diferente, la difusión no se produce
responden, cada una con su hora local, el coordinador exactamente de una manera simultánea. Para cada
estima los retardos de propagación de los mensajes uno de los mensajes que se recibe, sabiendo el tiempo
con cada uno de las estaciones y calcula un tiempo de propagación desde su nodo y comparando con la
promedio con las horas recibidas y la suya propia. hora local, se calcula la desviación propia respecto
Queda por actualizar los relojes de las estaciones. al nodo del mensaje recibido. Cuando un computador
ha enviado el mensaje de difusión de su hora,
Ahora el coordinador, no envía la hora coordinada
porque introduciría un cierto error debido al tiempo arranca un temporizador y se pone a esperar los
de transmisión, sino que envía a cada uno el desfase mensajes de difusión del resto de los equipos, los
cuales deberán llegar dentro de un cierto intervalo de
que tiene con la hora promedio calculada. Recibido
tiempo. Cuando han llegado todos los mensajes del
este desfase, cada equipo actualiza su reloj.
resto de las computadores ó ha vencido la
Aunque no se está teniendo en cuenta el tiempo de temporización, se calcula el valor medio de las
propagación en el envío del mensaje desde la estación desviaciones y se ajusta el tiempo local.
al coordinador, no importa, pues lo que se quiere
calcular es la hora promedio de entre las recibidas de
todas las estaciones. El algoritmo realiza un Como todos los nodos reciben el mismo conjunto de
“promedio tolerante a fallos” con los tiempos mensajes, después de cada sincronización todos
recibidos de las estaciones, es decir, que considera deben tener la misma hora. Pueden descartarse los
solamente el subconjunto de relojes que no difieren valores más extremos recibidos, por suponer que
entre sí más de una cierta cantidad, considerando que puedan deberse a relojes que están fallando o
los demás no están funcionando bien. mintiendo.
Si el coordinador falla (no pregunta, no envía
modificaciones de tiempos, o éstas son “demasiado
extrañas”), simplemente se elige otro coordinador. 3.1.4 Relojes Lógicos
No es fácil, sincronizar múltiples relojes distribuidos Lo que se necesita entonces, es una forma de
para mantener una única hora estándar con la medir el tiempo tal que para todo evento a, se
suficiente precisión. le pueda asignar un valor de tiempo R(a) en el
que todos los procesos estén de acuerdo.
Lamport señaló que la sincronización de relojes no
necesita ser absoluta. Por una parte, si dos procesos Dichos valores deben tener la propiedad que si:
no interactúan, no tienen ninguna necesidad de que
a → b ⇒ R(a) < R(b).
sus relojes respectivos estén sincronizados, pues la
no interacción no requiere sincronización, ésta no Además, como ya sabemos, el reloj R siempre
será observable y no causará problemas. Por otra debe ir hacia delante, nunca hacia atrás.
parte, lo realmente importante es todos estén de
acuerdo sobre el orden en el que se suceden y
producen los eventos y no que todos los procesos Lamport inventó un mecanismo denominado reloj
estén sincronizados según una misma hora exacta lógico, el cual es un contador de software
monótono creciente, cuyo valor no requiere tener
ninguna relación concreta con ningún reloj físico.
Como ejemplo, podemos tener dos eventos, un En cada ordenador hay un reloj lógico R que se
ocurrido después del otro pero con diferencia en la utiliza para poner marcas de tiempo a los eventos que
hora local, lo significativo es saber cuál ocurrió se producen (stamp), tal que Rp(a) indica la marca de
primero, sin tener en cuenta la hora local, que puede tiempo del evento a en el proceso p.
estar desfasada.
Para algunos entornos en los que no se requiere una
sincronización exacta con una hora externa de Así, las dos situaciones en las que se observa la
referencia (tiempo UTC), en lugar de tratar con los relación “sucedió antes” se tratan de la siguiente
relojes físicos se trabaja con relojes lógicos, en los manera con los relojes lógicos:
que solamente tiene importancia el orden de los 1. Rp se incrementa en una unidad antes de que
eventos y no la medida del momento exacto en el se produzca cada evento en el proceso, es
que se producen. decir, Rp = Rp + 1
Para sincronizar relojes lógicos, Lamport definió 2. a) Cuando un proceso p envía un mensaje m,
la relación “sucedió antes”, según la cual, la se le pega al mensaje el valor t = Rp.
expresión a → b quiere decir “a sucedió antes que b) Cuando el proceso q recibe el mensaje
(m, t ), calcula Rq := max(Rq, t), y
b”, y significa que todos los procesos coinciden aplica el paso 1 antes de marcar el evento
en que primero sucedió el evento a y de recepción del mensaje (m,t).
posteriormente el evento b. Esta relación se observa
directamente en dos situaciones:
1. Si dos eventos se producen en el mismo 4 Conclusiones
proceso, tiene lugar en el orden que indica su
reloj común.
2. Cuando dos procesos se comunican mediante un La sincronización de procesos en ambientes
mensaje, el evento de enviarlo se produce siempre distribuidos es muy importante, ya que garantiza que
antes del evento de recibirlo. los eventos o marcas de tiempo ocurrirán y se
marcarán en el respectivo orden. Dependiendo del
Si dos eventos, x e y, se producen en procesos tipo de problema a solucionar, dependerá el algoritmo
diferentes que no intercambian mensajes (ni directa seleccionado para sincronizar. Existen muchos más
ni indirectamente), entonces no es cierto x → y, ni algoritmos que solucionan problemas de
y → x. En este caso se dice que tales eventos son sincronización, de los vistos en este artículo y cada
concurrentes, lo que significa que sencillamente no se uno merece más revisión y un estudio más detallado.
sabe nada y para el caso ni se necesita saber, sobre Comparar o decir cuál es mejor, no sería lo adecuado
cuál de ellos sucedió primero. porque cada uno puede aplicarse y solucionar un
problema específico.
Se debe observar que la relación “sucedió antes”
es transitiva, es decir, si a → b y b → c,
entonces a → c.
Apéndice I
En caso de ser necesario, los apéndices irán ubicados
después de las Conclusiones, y antes de los
Agradecimientos y las Referencias. Se numerarán
con números romanos, tal como en el título de esta
sección.
Agradecimientos
Si los hay, los agradecimientos deberán ubicarse al
final del trabajo, justo antes de las referencias. Esta
sección no llevará numeración.
Utilice el formato estándar de IEEE Computer o
Communications of the ACM para las referencias, es
decir, una lista numerada, ordenada alfabéticamente
por apellido del primer autor y referenciada en el
texto por un número entre corchetes (ejem., “[1]”).
Todas las referencias deben ser documentos
accesibles públicamente.
Finalmente, note que el título de esta sección no lleva
numeración. Considere el siguiente ejemplo:
Referencias
[1] Anderson, R.E. Social impacts of
computing: Codes of professional ethics. Social
Science Computing Review. Vol. 10, No. 2,
(Winter 1992), pp.453-469.
[2] Harmon, J.E. The Structure of Scientific and
Engineering Papers: A Historical Perspective.
IEEE Trans. On Professional Communication.
Vol 32, No. 2, (September, 1989), pp. 132-138.
[3] Pierson, M.M. and Pierson, B.L. Beginnings
and Endings: Keys to Better Engineering
Technical Writing. IEEE Trans. On
Professional Communication. Vol 40, No. 4,
(December, 1997), pp. 299-304.
[4] Strunk, W. and White, E.B. The Elements of
Style. Fourth Edition, Boston: Allyn and Bacon.
2000.