Sincronización de Relojes Alvaro Ospina Sanjuan [email protected] Sincronización de relojes >En un sistema centralizado el tiempo no tiene ambigüedades >Si dos procesos, A y B piden la hora en el respectivo orden, la hora de A siempre será menor que la hora de B >En un S.D no ocurre lo mismo – Se carece de reloj global – No es importante si A nunca se comunica con B Sincronización de relojes >Ej: El programa make – Muy sensible a el tiempo Sincronización de relojes >Pude haber sincronización de relojes? – Lamport demostró que si >No se busca una sincronización de tiempo absoluto, sino que el orden de los eventos sea el mismo – En make, lo que importa es orden que fueron creados output.o y output.c, no la hora de creación Sincronización de relojes >Tipos – Lógicos: las máquinas tienen el mismo valor de reloj aunque marquen una hora distinta de la real – Físicos: las máquinas tienen el mismo valor de reloj y éste no debe desviarse de la hora real más allá de cierta magnitud Sincronización de relojes lógicos > Lamport definió a->b y se lee “a ocurre antes de b” que indica que todos los procesos coinciden en que primero ocurre a y después b > Se cumple: – Si a y b son dos eventos en el mismo proceso y a ocurre antes que b, entonces a->b es verdadero – Si a es el evento del envío de un mensaje por un proceso y b es el evento de la recepción del mensaje por otro proceso, entonces a->b es verdadero Sincronización de relojes lógicos > de qué forma podemos sincronizar relojes lógicos? – Necesitamos una forma de asociar a cada evento a un valor de tiempo C(a) en el que todos los procesos estén de acuerdo – Los valores de tiempo deben tener la propiedad de que si a->b entonces C(a)<C(b) – El tiempo de reloj C siempre debe ir hacia delante, nunca puede ser decreciente Sincronización de relojes lógicos > Algorítmo de Lamport – Cada mensaje acarrea el tiempo de envío, de acuerdo con el reloj del emisor. – Cuando un mensaje llega y el reloj del receptor muestra un valor anterior al tiempo en que se envió el mensaje, el receptor adelanta su reloj para que tenga una unidad más que el tiempo de envío. – Entre dos eventos cualesquiera, el reloj debe marcar al menos una vez. – Dos eventos no deben ocurrir exactamente al mismo tiempo. Sincronización de relojes lógicos >Tres procesos cada uno con su propio reloj Con C y D no se cumplen las reglas anteriores Sincronización de relojes lógicos >Tres procesos cada uno con su propio reloj Solución propuesta por Lamport: puesto que C sale en 60 debe llegar en 61 o posterior Sincronización de relojes físicos >Algoritmo de Cristian – Algoritmo centralizado con un servidor UTC(tiempo coordenado universal) pasivo. Cada maquina solicita el tiempo periódicamente. Se debe tener en cuenta las interrupciones del servidor y el tiempo de transmisión. Sincronización de relojes físicos >Algoritmo de Cristian – Supongamos un conjunto de máquinas. Una de ellas tiene acceso a una fuente fiable de la hora (servidor de tiempo) T0 Tiempo T1 Solicit ud I, Tiempo de procesamiento de la petición Sincronización de relojes físicos >Algoritmo de Cristian – Para la máquina emisora, una buena estimación de la hora sería (T1-T0)/2 – Y si se conoce el valor de I: (T1-T0-I)/2 – Se hacen varias medidas y se toma la media Sincronización de relojes físicos > Algoritmo de Berkeley – En el algoritmo de Cristian, el servidor de tiempo es pasivo. En el UNIX de Berkeley se emplean servidores de tiempo activos – El servidor de tiempo realiza un muestreo periódico de todas las máquinas para preguntarles el tiempo – Con base en estas respuestas, calcula el tiempo promedio y le indica a las máquinas que avancen o retrasen su reloj la cantidad que sea necesaria Sincronización de relojes físicos >Algoritmos con promedio: – En este caso dividimos el tiempo en intervalos de resincronización – El i-ésimo intervalo comienza en T0+iR y termina en T0+(i+1)R, donde T0 es un momento ya acordado en el pasado y R es una cte. – Al comienzo de cada intervalo cada máquina transmite el tiempo actual de su reloj. Sincronización de relojes físicos >Algoritmos con promedio: – Puesto que los relojes de las diversas máquinas no funcionan exactamente a la misma velocidad, estas transmisiones no ocurrirán en forma simultánea – Tras transmitir su hora, una máquina arranca un cronómetro local para reunir las demás transmisiones que lleguen en un cierto intervalo S – A partir de ellas calcula un nuevo tiempo, p.ej. con la media Sincronización de relojes físicos >Algoritmos con varias fuentes externas de tiempo – Algoritmo descentralizado con varios receptores UTC. Los relojes son actualizados cada R unidades de tiempo intersectando los tiempos emitidos por los receptores UTC.