jueves, 2 de abril de 2009

SINCRONIZACION DE LOS SISTEMAS DISTRIBUIDOS

El problema que existe en un sistema distribuido, es determinar el orden particular sobre cualquier conjunto de eventos en un sistema distribuido.

En sistemas con una única CPU las regiones críticas, la exclusión mutua y otros problemas de sincronización son resueltos generalmente utilizando métodos como semáforos y monitores. Estos métodos no se ajustan para ser usados en sistemas distribuidos ya que invariablemente se basan en la existencia de una memoria compartida.
No es posible reunir toda la información sobre el sistema en un punto y que luego algún proceso la examine y tome las decisiones.
En general los algoritmos distribuidos tienen las siguientes propiedades:
1)- la información relevante está repartida entre muchas máquinas
2)- los procesos toman decisiones basadas solamente en la información local disponible
3) - debería poder evitarse un solo punto que falle en el sistema
4)- no existe un reloj común u otro tiempo global exacto
Si para asignar un recurso de E/S un proceso debe recolectar información de todos los procesos para tomar la decisión esto implica una gran carga para este proceso y su caída afectaría en mucho al sistema.
Idealmente, un sistema distribuido debería ser más confiable que las máquinas individuales. Alcanzar la sincronización sin la centralización requiere hacer cosas en forma distinta a los sistemas operativos tradicionales.



RELOJES EN LOS SISTEMAS OPERATIVOS DISTRIBUIDOS:


Existen dos tipos de relojes dentro de los sistemas operativos estos pueden ser: fisicos y logicos


RELOJES FISICOS:

La idea es proveer de un único bloque de tiempo para el sistema. Los procesos pueden usar la marca física del tiempo provista o leída de un reloj central para expresar algún orden en el conjunto de acciones que inician. La principal ventaja de este mecanismo es la simplicidad, aunque existen varios inconvenientes: el correcto registro del tiempo depende en la posibilidad de recibir correctamente y en todo momento, el tiempo actual desplegado por el reloj físico; los errores de transmisión se convierten en un impedimento para el orden deseado, el grado de exactitud depende de las constantes puestas en el sistema.


•Los valores de tiempo asignados a los eventos no tienen porqué ser cercanos a los tiempos reales en los que ocurren.

•En ciertos sistemas es importante la hora real del reloj: Se precisan relojes físicos externos (más de uno). Se deben sincronizar: Con los relojes del mundo real. Entre sí.

Desde antiguo el tiempo se ha medido astronómicamente. Se considera el día solar al intervalo entre dos tránsitos consecutivos del sol, donde el tránsito del sol es el evento en que el sol alcanza su punto aparentemente más alto en el cielo. El segundo solar se define como 1 / 86.400 de un día solar. Como el período de rotación de la tierra no es constante, se considera el segundo solar promedio de un gran número de días. Los físicos definieron al segundo como el tiempo que tarda el átomo de cesio 133 para hacer 9.192.631.770 transiciones:

Se tomó este número para que el segundo atómico coincida con el segundo solar promedio de 1958. :

•Operan estaciones de radio de onda corta o satélites de comunicaciones.

•Transmiten pulsos UTC con cierta regularidad establecida (cada segundo, cada 0,5 mseg, etc.). •Se deben conocer con precisión la posición relativa del emisor y del receptor:Se debe compensar el retraso de propagación de la señal. oSi la señal se recibe por módem también se debe compensar por la ruta de la señal y la velocidad del módem.Se dificulta la obtención del tiempo con una precisión extremadamente alta.


SINCRONIZACIÓN DE RELOJES FÍSICOS

Para conocer en que hora del día ocurren los sucesos en los procesos de nuestro sistema distribuido Q, es necesario sincronizar los relojes de los procesos Ci con una fuente de tiempo externa autorizada. Esto es la SINCRONIZACIÓN EXTERNA. Y si los relojes están sincronizados con otro con un grado de precisión conocido, entonces podemos medir el intervalo entre dos eventos que ocurren en diferentes computadores llamando a sus relojes locales, incluso aunque ellos no estén necesariamente sincronizados con una fuente externa de tiempo. Esto es SINCRONIZACION INTERNA. Definimos estos dos modos de sincronización mas detalladamente, sobre un intervalo de tiempo real I: Sincronización Externa: para una sincronización dada D>0, y para una fuente S de tiempo UTC,  Si (t) – Ci (t)0, Ci(t) – Cj(t)


RELOJES LOGICOS

Las computadoras poseen un circuito para el registro del tiempo conocido como dispositivo reloj.
Es un cronómetro consistente en un cristal de cuarzo de precisión sometido a una tensión eléctrica que:
Oscila con una frecuencia bien definida que depende de: o Al forma en que se corte el cristal.
o El tipo de cristal.
o La magnitud de la tensión.
A cada cristal se le asocian dos registros: o Registro contador.
o Registro mantenedor.
Cada oscilación del cristal decrementa en “1” al contador.
Cuando el contador llega a “0”: o Se genera una interrupción.
o El contador se vuelve a cargar mediante el registro mantenedor.
Se puede programar un cronómetro para que genere una interrupción “x” veces por segundo.
Cada interrupción se denomina marca de reloj.
Para una computadora y un reloj:
No interesan pequeños desfasajes del reloj porque: o Todos los procesos de la máquina usan el mismo reloj y tendrán consistencia interna.
o Importan los tiempos relativos.
Para varias computadoras con sus respectivos relojes:
Es imposible garantizar que los cristales de computadoras distintas oscilen con la misma frecuencia.
Habrá una pérdida de sincronía en los relojes (de software), es decir que tendrán valores distintos al ser leidos.
La diferencia entre los valores del tiempo se llama distorsión del reloj y podría generar fallas en los programas dependientes del tiempo.
Lamport demostró que la sincronización de relojes es posible y presentó un algoritmo para lograrlo.
Lamport señaló que la sincronización de relojes no tiene que ser absoluta:
Si 2 procesos no interactúan no es necesario que sus relojes estén sincronizados.
Generalmente lo importante no es que los procesos estén de acuerdo en la hora, pero sí importa que coincidan en el orden en que ocurren los eventos.
Para ciertos algoritmos lo que importa es la consistencia interna de los relojes:
No interesa su cercanía particular al tiempo real (oficial).
Los relojes se denominan relojes lógicos.
Los relojes físicos son relojes que:
Deben ser iguales (estar sincronizados).
No deben desviarse del tiempo real más allá de cierta magnitud.
Para sincronizar los relojes lógicos, Lamport definió la relación ocurre antes de (happens-before):
Si “a” y “b” son eventos en el mismo proceso y “a” ocurre antes de “b”, entonces “a –> b” es verdadero.
“Ocurre antes de” es una relación transitiva: o Si “a –> b” y “b –> c”, entonces “a –> c”.
Si dos eventos “x” e “y” están en procesos diferentes que no intercambian mensajes, entonces “x –> y” no es verdadero, pero tampoco lo es “y –> x”: o Se dice que son eventos concurrentes.
Necesitamos una forma de medir el tiempo tal que a cada evento “a”, le podamos asociar un valor del tiempo “C(a)” en el que todos los procesos estén de acuerdo:
Se debe cumplir que: o Si “a –> b” entonces “C(a) <>


Para sincronizar los relojes lógicos, Lamport definió la relación ocurre antes de (happens-before):
Si “a” y “b” son eventos en el mismo proceso y “a” ocurre antes de “b”, entonces “a –> b” es verdadero.
“Ocurre antes de” es una relación transitiva:
Si “a –> b” y “b –> c”, entonces “a –> c”.
Si dos eventos “x” e “y” están en procesos diferentes que no intercambian mensajes, entonces “x –> y” no es verdadero, pero tampoco lo es “y –> x”:
Se dice que son eventos concurrentes. Necesitamos una forma de medir el tiempo tal que a cada evento “a”, le podamos asociar un valor del tiempo “C(a)” en el que todos los procesos estén de acuerdo:
Se debe cumplir que:
Si “a –> b” entonces “C(a) <>

Este algoritmo cumple nuestras necesidades para el tiempo global, si se hace el siguiente agregado: Entre dos eventos cualesquiera, el reloj debe marcar al menos una vez.
Dos eventos no deben ocurrir exactamente al mismo tiempo. Con este algoritmo se puede asignar un tiempo a todos los eventos en un sistema distribuido, con las siguientes condiciones:
Si “a” ocurre antes de “b” en el mismo proceso, “C(a) <>

EN RESUMEN:

Sincronizacion de los Sistemas Distribuidos

Ademas de la comunicacion en los sistemas distribuidos es fundamental la cooperacion y la sincronizacion entre si. Algunos ejemplos pueden ser:
Forma de implantar las regiones críticas, Forma de asignar recursos en un sistema distribuido.Los problemas relativos a las regiones críticas, exclusión mutua y la sincronización:
Generalmente se resuelven en sistemas de una sola cpu con métodos como los semáforos y los monitores. Se basan en la memoria compartida.
No son aplicables a sistemas distribuidos.


Relojes Fisicos


Las computadoras poseen un circuito para el registro del tiempo conocido como dispositivo reloj.Es un cronómetro consistente en un cristal de cuarzo de precisión sometido a una tensión eléctrica. Los relojes físicos son relojes que:
Deben ser iguales, estar sincronizados.
No deben desviarse del tiempo real más allá de cierta magnitud.


Reloges Logicos


Los relojes lógicos son un mecanismo para capturar la causalidad en un sistema distribuido. En un sistema de relojes lógicos cada sitio tiene un reloj lógico que avanza de acuerdo a un conjunto de reglas. A cada evento se le asigna una etiqueta de tiempo mediante la cual es posible determinar la relación de causalidad entre los eventos. Se presenta un estudio teórico de los relojes lógicos a través de su historia, desde los relojes de Lamport hasta los relojes Adaptativos.