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