lunes, 6 de febrero de 2017

SINCRONIZACIÓN DE SISTEMAS DISTRIBUIDOS

1.     SINCRONIZACIÓN DE SISTEMAS DISTRIBUIDOS.

Además de la comunicación, es fundamental la forma en que los procesos 
  • Cooperan.
  • Se sincronizan entre sí.
Ejemplos:
  • 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.
Otro problema de gran importancia es el tiempo y la forma de medirlo, ya que juega un papel fundamental en algunos modelos de sincronización.
             
     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 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. Haciendo referencia a los métodos utilizados en un sistema centralizado, el cual hace uso de semáforos y monitores; en un sistema distribuido se utilizan algoritmos distribuidos para sincronizar el trabajo común entre los procesos y estos algoritmos



2.     SINCRONIZACIÓN DE RELOJES

La sincronización de relojes en un sistema distribuido consiste en garantizar que los procesos se ejecuten en forma cronológica, y a la vez respetando el orden de los eventos dentro del sistema.

En general la sincronización en procesos distribuidos tiene muchas aplicaciones, especialmente en aplicaciones en tiempo real, simulación, líneas de producción, sistemas de trámites complejos, cálculos avanzados, renderización, indexación para buscadores web, encuestas, etc. esto define un ámbito particular de aplicaciones que necesariamente caen en el concepto de aplicaciones en tiempo real, pero ésto no es tan estricto, ya que la sincronización puede trabajar a otra escala. En pocas palabras, podemos correr una aplicación distribuida con relojes sincronizados en cámara lenta, de tal suerte que su comportamiento y sus dificultades de operación no cambian. Esto abre otra posiblidad que es la sincronizacion de eventos en una escala de tiempo mayor, en la que la propagación de la sincronía es tan veloz que se hace transparente a la operación del S.D.

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.


3.     ALGORITMOS PARA LA SINCRONIZACIÓN DE RELOJES

La sincronización de relojes en un sistema distribuido 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. Para lograr esto existen varios métodos o algoritmos que se programan dentro del sistema operativo, entre los cuales tenemos:

·                  Algoritmo de Cristian

     Este algoritmo está basado en el uso del tiempo coordenado universal (siglas en inglés, UTC), el cual es recibido por un equipo dentro del sistema distribuido. Este equipo, denominado receptor de UTC, recibe a su vez solicitudes periódicas del tiempo del resto de máquinas del sistema a cada uno de los cuales les envía una respuesta en el menor  plazo posible informando el tiempo UTC solicitado, con lo cual todas las máquinas del sistema actualicen su hora y se mantenga así sincronizado todo el sistema. El receptor de UTC recibe el tiempo a través de diversos medios  disponibles, entre los cuales se menciona las ondas de radio, Internet, entre otros. Un gran problema en este algoritmo es que el tiempo no puede correr hacia atrás:

El tiempo del receptor UTC no puede ser menor que el tiempo de la máquina que le solicitó el tiempo.

El servidor de UTC debe procesar las solicitudes de tiempo con el concepto de interrupciones, lo cual incide en el tiempo de atención.

El intervalo de transmisión de la solicitud y su respuesta debe ser tomado en cuenta para la sincronización. El tiempo de propagación se suma al tiempo del servidor para sincronizar al emisor cuando éste recibe la respuesta.

·                  Algoritmo de Berkeley

Un sistema distribuido basado en el algoritmo de Berkeley no dispone del tiempo coordenado universal (UTC); en lugar de ello, el sistema maneja su propia hora. Para realizar la sincronización del tiempo en el sistema, también existe un servidor de tiempo que, a diferencia del algoritmo de Cristian, se comporta de manera activa. Este servidor realiza un muestreo  periódico del tiempo que poseen algunas de las máquinas del sistema, con lo cual calcula un tiempo promedio, el cual es enviado a todas las máquinas del sistema a fin de sincronizarlo.

4.     EXCLUSIÓN MUTUA, ALGORITMOS NO BASADOS EN PASO DE MENSAJES Y BASADOS EN PASO DE MENSAJES.

Ø  Algoritmos para la Exclusión Mutua
Estos algoritmos están definidos para asegurar el cumplimiento de exclusión mutua entre procesos que requieren acceder a una región crítica del sistema.

Este algoritmo simula la filosofía de operación de exclusión mutua utilizada en sistemas monoprocesadores. Para ello, existe una máquina en el sistema distribuido que se encarga de controlar el acceso a las diferentes secciones críticas, la cual es denominada coordinador. Cada proceso del sistema que requiera acceso a una sección crítica, debe solicitar acceso al coordinador, el cual lo otorgará en caso que la sección crítica esté disponible; caso contrario, colocará en una cola de espera al proceso solicitante. Cuando un proceso que recibió acceso a la sección crítica culmina su tarea, informa por igual al coordinador a fin de que éste pueda otorgar acceso a un próximo proceso solicitante o que se encuentre en cola de espera.

Este algoritmo presenta una gran limitante, consistente en que el coordinador representa un único punto de control para el acceso a las diferentes secciones críticas del sistema distribuido, lo cual se convierte en un cuello de botella que puede afectar la eficiencia de los procesos que se ejecutan en el sistema. Igualmente, cualquier falla que presente el coordinador ocasionará la paralización de los procesos.


La exclusión mutua no es mas que una serie de algoritmos que se utilizan en la programación concurrente para con esta programación poder evitar el ingreso a las secciones criticas por mas de un proceso simultaneo.
Algunos ejemplos de algoritmos clásicos de exclusión mutua son:

·                  El algoritmo de Dekker.
·                  El algoritmo de Peterson.

Ø  Algoritmos Basados En  Paso De Mensaje

  Comparten un token único entre todos los nodos el cual permite que un nodo entre en la sección critica (SC) si posee al token, este utiliza números de secuencia en lugar de marcas de tiempo. Cada partición de un token contiene un numero de secuencias del resto de los nodos donde un nodo incrementa el contador de numero secuencia cada vez que realiza una petición para poseer a token.


Ø  Algoritmos No Basados En El  Paso De Mensaje

 

5.     ALGORITMOS DE ELECCIÓN

Muchas aplicaciones y servicios distribuidos se basan en la existencia de un proceso diferenciado que coordina el trabajo de un conjunto de procesos. Por ejemplo, acabamos de ver que el algoritmo centralizado para exclusión mutua distribuida requiere un proceso coordinador. En este mismo capítulo comprobaremos esta misma necesidad para los algoritmos de acuerdo atómico y en algunos modelos de replicación. En todas estas situaciones se requiere detectar que el proceso coordinador falla y elegir un nuevo proceso que asuma el papel de coordinador. La elección requiere el acuerdo sobre quién va a ser el nuevo y único coordinador. De nuevo, las decisiones se basan en la existencia de plazos para la recepción de los mensajes de respuesta. Por otra parte, para determinar el criterio de elección de un proceso como coordinador se requiere definir un orden total entre el conjunto de procesos. Supondremos que los procesos tienen asociados identificadores únicos según los cuales pueden ordenarse.

Elección. La figura de un proceso coordinador o líder es frecuente en sistemas distribuidos. La posibilidad de fallo del coordinador hace necesarios mecanismos que permitan la promoción de un proceso como nuevo coordinador, lo que implica detectar el fallo del coordinador y la elección de uno nuevo.

6.     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.


No hay comentarios:

Publicar un comentario