Sistemas Distribuidos.
Christian Aguilar Fuster
CINVESTAV – Tamaulipas
Enero 2014
Tiempo Físico.
•
El tiempo real se define en términos de la rotación de la Tierra en el sistema
solar. Un segundo solar es igual a 1/86, que forma parte 400a de un día
solar, que es la cantidad de tiempo que la tierra necesita para completar una
revolución alrededor de su propio eje.
•
Tiempo Atómico Internacional (TAI) es una escala de tiempo exacto que
refleje el promedio ponderado de las lecturas de cerca de 300 relojes
atómicos en más de cincuenta laboratorios nacionales de todo el mundo.
•
Otra fuente de hora precisa es el GPS (Global Positioning System). Un
sistema de 24 satélites desplegado en órbita de la Tierra mantiene
coordenadas espaciales precisas, y proporciona tiempo preciso referencia en
casi todas partes del mundo donde las señales GPS pueden recibirse. Cada
emisión por satélite tiene el valor de un reloj atómico a bordo.
Modelos síncronos y asíncronos.
Sistemas distribuidos asíncronos
•
No hay un reloj común
•
No hacen ninguna suposición sobre las velocidades relativas de los
procesos.
•
Los canales son fiables pero no existe un límite a la entrega de mensajes
•
La comunicación entre procesos es la única forma de sincronización
Sistemas distribuidos síncronos
•
Hay una perfecta sincronización
•
Hay límites en las latencias de comunicación
•
Los sistemas del mundo real no son síncronos
Relojes Lógicos.
Un evento corresponde a la ocurrencia de una acción. Un conjunto de
eventos {a, b, c, d, ...} en un solo proceso se denomina secuencial y sus
ocurrencias puede ser totalmente ordenado en el tiempo con el reloj en ese
proceso. Por ejemplo, si Bob regresa a su casa a las 5:40 de la tarde, contesta
el teléfono a las 5:50 pm, y come la cena a las 6:00 pm.
Ley de la causualidad.
Ningún mensaje puede ser recibido antes de ser enviado.
Ejemplo: durante un chat, Bob envía un mensaje M a Carol y Alice y Alice
enviar una respuesta Re: M de nuevo a Bob y Carol.
Claramente M sucedió antes Re: M. Para hacer cualquier sentido de la charla,
Carol siempre debe recibir M
Relojes Lógicos.
Regla 1. Deje que cada proceso tiene un reloj físico cuyo valor es
monótonamente creciente. Si a, b son dos eventos dentro de un solo
proceso P, y el tiempo de ocurrencia de a es anterior a el momento de la
aparición de b, entonces a ≺ b.
Regla 2. Si a es el caso de que el envío de un mensaje por el
proceso P, y b es el caso de recibir el mismo mensaje por otro
proceso Q, entonces a ≺ b.
Regla 3. (a ≺ b) ∧ (b ≺ c) ⇒ a ≺ c
Cada proceso tiene un LC contador que representa el reloj lógico. Inicialmente,
para cada proceso, LC = 0. Cada vez que ocurre un evento, LC se
incrementa.
LC1. Cada vez que un evento local o interno se lleva a cabo, LC incrementar el
valor en 1.
LC2. Al enviar un mensaje, añada el valor de LC al mensaje.
LC3. Cuando se recibe un mensaje, establezca el valor de LC a 1 + max (LC
local, LC mensaje).
Relojes Lógicos.
Si a y b son dos eventos en los procesos de i y j (no necesariamente distintos),
respectivamente, y luego defino orden total («) de la siguiente manera:
a «b si y sólo si
LC (a) <LC (b)
o LC (a) = LC (b) y i <j
donde i <j se determina ya sea por los valores relativos de los identificadores de proceso
numéricos, o por el orden lexicográfico de sus nombres. Por lo tanto, cada vez que los
valores de reloj lógicas de dos eventos distintos son iguales, los números de proceso o
nombres se utilizarán para romper el empate. El valor (id, LC) asociada a un evento se
conoce como su marca de tiempo.
Relojes Vectoriales.
Una de las principales debilidades de los relojes lógicos es que, los valores de
LC de dos eventos no pueden revelar si están causalmente ordenado.
Ellos definen un mapeo VC de eventos a matrices enteras y una orden <tal que
para cualquier par de eventos a, b: a ≺b ⇔ VC (a) <VC (b)
Todo proceso lleva asociado un vector de enteros.
Vc[a] es el valor del reloj vectorial del proceso i cuando ejecuta el evento a.
Sean a, b sea un par de eventos. Denotar el k-ésimo elemento del vector de
reloj para el caso de que a para VC (a) [k]. Definir VC (a) <VC (b) (leer VC
(a) está dominado por VC (b)), si y sólo si cumplen dos condiciones:
• ∀ i: 0 ≤ i ≤ N - 1: VC (a) [i] ≤ VC (b) [i]
• ∃ i: 0 ≤ i ≤ N - 1: VC (a) [i] <VC (b) [i]
Relojes Vectoriales.
Para implementar un sistema de relojes vectoriales, inicializar el vector de
reloj de cada proceso en 0, 0, 0, ..., 0 (N componentes), usar las tres reglas
siguientes:
Regla 1. Cada evento local al proceso de i se incrementa el componente i de
su vector de reloj (es decir, VC [i]) en 1.
Regla 2. El remitente añade el vector de sello de tiempo a cada mensaje que
envíe.
Regla 3. Cuando el proceso j recibe un mensaje con un vector de marca de
tiempo T de otro proceso, primero incrementa el componente j-ésimo VC [j]
de su propio reloj de vectores, (es decir, VC [j]: = VC [j] + 1) y, a
continuación actualizaciones su vector de reloj de la siguiente manera:
∀ k: 0 ≤ k ≤ N - 1 :: VC [k]: = max (T [k], VC [k])
Errores de lectura de reloj.
•
El retardo de propagación. Si el reloj i envía su lectura al reloj j, entonces
la exactitud del valor recibido debe depender no sólo en el valor que se
envió, sino también en el retardo de propagación de mensaje. Un único
parámetro δ (llamado el error de lectura) representa la inexactitud.
•
Sobrecarga de procesamiento. Cada cálculo relacionada con la
sincronización del reloj en sí tiene una cantidad finita de tiempo que
necesita ser contabilizado por separado.
Sincronizacion de relojes Fisicos.
• Sincronización externa.
El objetivo de la sincronización externa es la de mantener la lectura de un
reloj tan cerca de la UTC como sea posible. El uso de un servidor central que
recibe las señales de onda corta WWV desde Fort Collins, Colorado, y
periódicamente de radiodifusión el tiempo para otros cronometradores es bien
conocida.
• Sincronización interna.
El objetivo de la sincronización interna es mantener las lecturas de un sistema
de relojes autónomas estrechamente sincronizados uno con el otro, a pesar de
la insuficiencia o fallo de funcionamiento de uno o más relojes. Estas lecturas
de reloj puede que no tienen ninguna conexión con el UTC o tiempo GPS - la
coherencia mutua es el principal objetivo.
Sincronizacion de relojes Fisicos.
• Sincronización externa.
El objetivo de la sincronización externa es la de mantener la lectura de un
reloj tan cerca de la UTC como sea posible. El uso de un servidor central que
recibe las señales de onda corta WWV desde Fort Collins, Colorado, y
periódicamente de radiodifusión el tiempo para otros cronometradores es bien
conocida.
• Sincronización interna.
El objetivo de la sincronización interna es mantener las lecturas de un sistema
de relojes autónomas estrechamente sincronizados uno con el otro, a pesar de
la insuficiencia o fallo de funcionamiento de uno o más relojes. Estas lecturas
de reloj puede que no tienen ninguna conexión con el UTC o tiempo GPS - la
coherencia mutua es el principal objetivo.
Sincronizacion externa.
Algoritmo de Cristian
1.- Un proceso p hace una petición de tiempo al servidor en un mensaje mr.
2.- El servidor responde con un mensaje mt en el que incluye su tiempo TUTC.
3.- El proceso que recibe el mensaje mt actualiza su reloj con el tiempo TUTC,
por lo que el cliente sincroniza su reloj a TUTC + TVIAJE/2.
Sincronizacion externa.
Protocolo de tiempo de red
Mecanismo diseñado para sincronizar los relojes en Internet con el UTC a
pesar de la pérdida ocasional de la conectividad, y el fracaso de algunos de
los tiempos de los servidores y las entradas de tiempo posiblemente
malintencionados de fuentes no confiables.
En cierto sentido, NTP es un refinamiento del método de Cristian. NTP
proporciona servicio de tiempo utilizando tres mecanismos
•
•
•
La multidifusión.
Llamada a procedimiento.
Peer-to-peer comunication.
Sincronizacion interna.
Algoritmo de Berkeley
•
Sincronización interna entre procesadores
•
El servidor de tiempo realiza un muestreo periódico de todas las máquinas
para pedirles el tiempo.
•
Calcula el tiempo promedio y le indica a todas las máquinas que avancen su
reloj a la nueva hora o que disminuyan la velocidad
Algoritmo de Lamport and MelliarSmith’s.
Este algoritmo es una adaptación del algoritmo de Berkeley. Donde (i, k)
denota el reloj de lectura i con valor del reloj de k. Cada reloj i ejecuta
repetidamente los tres pasos siguientes:
•
Paso 1. Lea el valor de todos los relojes en el sistema.
•
Paso 2. Desechar valores de reloj malos y sustituirlos por el valor del reloj
local. Así, si | c (i, i) - c (i, j) |> δ entonces c (i, j): = c (i, i).
•
Paso 3. Actualización de la lectura del reloj usando la media de estos
valores.
Descargar

Ch06 - Cinvestav