martes, 9 de julio de 2013

SINCRONIZACIÓN EN SISTEMAS DISTRIBUIDOS

Menú Principal


Sincronización de relojes

                     Un sistema distribuido debe permitir el apropiado uso de los recursos, debe encargarse de un buen desempeño y de la consistencia de los datos, además de mantener seguras todas estas operaciones .Consiste en garantizar que los procesos se ejecuten en forma cronológica y a la misma vez respetar el orden de los eventos dentro del sistema. La sincronización de procesos en los sistemas distribuidos resulta más compleja que en los centralizados, debido a que la información y el procesamiento se mantienen en diferentes nodos. Un sistema distribuido debe mantener vistas parciales y consistentes de todos los procesos cooperativos y de cómputo. Tales vistas pueden ser provistas por los mecanismos de sincronización. El término sincronización se define como la forma de forzar un orden parcial o total en cualquier conjunto de eventos, y es usado para hacer referencia a tres problemas distintos pero relacionados entre sí:

1. La sincronización entre el emisor y el receptor.
2. La especificación y control de la actividad común entre procesos cooperativos.
3. La serialización de accesos concurrentes a objetos compartidos por múltiples procesos.




Relojes lógicos

 Los relojes lógicos son aquellos por los cuales están ordenados los sucesos de una forma única. Para poder usar en general el tiempo físico se debe sincronizar perfectamente bien los relojes a lo largo de un sistema distribuido para poder así obtener el orden de cualquier par arbitrario de sucesos que ocurran en él, pero es poco probable que esto ocurra por que no se puede sincronizar perfectamente los relojes a lo largo de un sistema distribuido. Se puede utilizar un esquema que similar a la casualidad física, que se aplica en los sistemas distribuidos, para controlar el orden de algunos sucesos que ocurren en diversos procesos. La cual está basada en dos puntos sencillos y obvios. Cuando se envía un mensaje entre procesos, el suceso de enviar el mensaje ocurrió antes del de recepción del mismo. Lamport llamo a la ordenación obtenida al generalizar estas dos relaciones la realización suceder antes.

•El interés en las aplicaciones distribuidas, no necesariamente es el tiempo exacto, sino la secuencia en que ocurren los eventos. Así, se pueden manejar relojes lógicos, en lugar de relojes físicos.
•Reloj lógico: contador de software que se incrementa monótonamente, cuyo valor no necesita estar relacionado con ningún reloj físico.
•Generalmente se asocia a cada proceso un reloj lógico.





RELOJES FÍSICOS

 Los relojes físicos son relojes que: Deben ser iguales (estar sincronizados).
No deben desviarse del tiempo real más allá de cierta magnitud. 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.





Algoritmos para la sincronización de relojes

Algoritmo de Cristhian: Es el más sencillo consiste en utilizar un servidor de reloj y medir los tiempos de latencia, dichos tiempos se consideran en el tiempo formal, este algoritmo se basa en que el ordenador cliente envía un mensaje al servidor de tiempo preguntándole la hora actual y cuando el cliente recibe el mensaje de respuesta debe actualizar su reloj

Algoritmo de Berkeley: Este algoritmo sugiere que se coordinen todos los relojes de los nodos en un tiempo t en específico. En este algoritmo se elige un coordinador para que actué como maestro y este se va a encargar de preguntar a todas las estaciones o esclavos su hora y una vez obtenida la respuesta calcula un tiempo promedio y actualiza las horas de los esclavos.






USO DE RELOJES SINCRONIZADOS: Hasta hace poco, se dispone del hardware y software necesarios para la sincronización de relojes a gran escala (es decir, en todo Internet).


EXCLUSIÓN MUTUA

• Los sistemas con varios procesos se programan más fácilmente mediante las regiones críticas.

• Cuando un proceso debe leer o actualizar ciertas estructuras de datos compartidas, primero entra a una región crítica para lograr la exclusión mutua y garantizar que ningún otro proceso utilice las estructuras de datos al mismo tiempo.

• En los sistemas con un solo procesador, las regiones críticas se protegen mediante semáforos, monitores y construcciones similares.


Para mas:
http://geneura.ugr.es/~gustavo/aco/teoria/exclusion/exclusion.pdf


ALGORITMOS DE ELECCIÓN.

 Muchos de los algoritmos distribuidos necesitan que uno de los procesos que interviene en ellos, actúe como el coordinador, iniciador, secuenciador o que desempeñe en cierta forma un papel especial. El objetivo de los algoritmos de elección es garantizar que al iniciar una elección, ésta concluya con el acuerdo de todos los procesos con respecto a la identidad del nuevo coordinador.


• Por ejemplo en el coordinador del algoritmo centralizado.

• No importa cuál de todos los procesos que intervienen sea el que sea el que asuma esta responsabilidad, uno de ellos debe de hacerlo. 



Algoritmos basados en paso de mensajes:

En estos algoritmos, se comparte un token único entre todos los nodos. Se permite que un nodo entre a la SC si posee al token. Este tipo de algoritmos utilizan números de secuencia en lugar de marcas de tiempo. Cada petición del token contiene un número de secuencia y el número de secuencia del resto de los nodos. Un nodo incrementa el contador de número de secuencia cada vez que realiza una petición para poseer al token. Una de las funciones principales de los número de secuencia, es distinguir entre peticiones viejas y nuevas. En segundo lugar, la forma en que se asegura la exclusión mutua debido a que mientras un nodo posea al token, ningún otro nodo podrá entrar a la SC.


Algoritmos no basados en paso de mensajes


Estos algoritmos requieren dos o más rondas sucesivas de mensajes entre los nodos. Se basan en una aseveración porque un nodo puede entrar a su sección crítica de procesamiento (SC) cuando una aseveración en sus variables se vuelve verdadera. Se forza la exclusión mutua porque la aseveración es verdadera en un solo nodo en un determinado momento.


Bloqueos en Sistemas Distribuidos

     Son peores que los bloqueos en sistemas monoprocesador: Son más difíciles de evitar, prevenir, detectar y solucionar. Toda la información relevante está dispersa en muchas máquinas. Son especialmente críticos en sistemas de bases de datos distribuidos. Las estrategias usuales para el manejo de los bloqueos son:
Algoritmo del avestruz:

·         Ignorar el problema.
·         Detección: Permitir que ocurran los bloqueos, detectarlos e intentar recuperarse de ellos.
·         Prevención: Hacer que los bloqueos sean imposibles desde el punto de vista estructural.
·         Evitarlos: Evitar los bloqueos mediante la asignación cuidadosa de los recursos.

     El algoritmo del avestruz merece las mismas consideraciones que en el caso de mono-procesador. En los sistemas distribuidos resulta muy difícil implantar algoritmos para evitar los bloqueos:

·         Se requiere saber de antemano la proporción de cada recurso que necesitará cada proceso.
·         Es muy difícil disponer de esta información en forma práctica.

     Las técnicas más aplicables para el análisis de los bloqueos en sistemas distribuidos son:

  •         Detección.
  •          Prevención
Videos



Sincronización Ubuntu Linux con reloj atómico mediante NTP

 


No hay comentarios:

Publicar un comentario