sábado, 8 de diciembre de 2012


MEMORIA GLOBAL DISTRIBUIDA



MEMORIA GLOBAL DISTRIBUIDA 
 CONCEPTO: 

la Distributed Shared Memory (DSM, o memoria distribuida compartida) es un tipo de implementación hardware y software, en la que cada nodo de un clustertiene acceso a una amplia memoria compartida que se añade a la memoria limitada privada, no compartida, propia de cada nodo.
Los sistemas de software DSM pueden ser implementados bajo un sistema operativo (SO), o como una biblioteca de programación. Los sistemas de software DSM implementados en el SO pueden concebirse como extensiones de la arquitectura de memoria virtual subyacente. Estos sistemas son transparentes al desarrollador, lo que significa que la memoria distribuida subyacente está completamente oculta para los usuarios. En contraste, los sistemas de software DSM implementados en una biblioteca no son transparentes y los desarrolladores tienen que programarlos separadamente. Sin embargo, estos últimos sistemas ofrecen mejores características de portabilidad en la implementación de sistemas DSM.

MODELOS DE SINCRONIZACION Y COHERENCIA 


Además de la comunicación entre procesos, es fundamental la forma en que los  procesos cooperan y se sincronizan entre sí. En los sistemas con un CPU, los problemas relativos a las regiones críticas, la exclusión mutua y la sincronización se resuelven en general mediante métodos  como:

· Los semáforos 
· Los monitores.

Estos métodos no son adecuados para su uso en los sistemas distribuidos, puesto que siempre se basan (de manera implícita) en la existencia de memoria compartida.

Sincronización de Relojes.

La sincronización es más compleja en los sistemas distribuidos que en los centralizados:

· En los primeros se debe utilizar algoritmos distribuidos. 
· Generalmente no es posible (o recomendable) reunir toda la información relativa al sistema en un lugar y después dejar que cierto proceso la  examine y tome la decisión, como se hace en el caso centralizado.

Los algoritmos distribuidos tienen las siguientes propiedades:

· La información relevante se distribuye entre varias maquinas.
· Los procesos toman las decisiones sólo con base en la información disponible en forma local. 


- Lo ideal es que un sistema distribuido debería de ser más confiable que las maquinas individuales. Si alguna de ellas falla, el resto puede continuar su funcionamiento.

El último punto también es crucial. 
· En un sistema centralizado, el tiempo no tiene ambigüedades. Cuando un proceso desea conocer la hora, llama al sistema y el núcleo se la dice. 

· En un sistema distribuido no es sencillo poner de acuerdo a todas las maquinas en la hora.
· Se requiere de un acuerdo global en el tiempo, pues la falta de sincronización en los relojes puede ser drástica en procesos dependientes del tiempo.

Relojes lógicos

Casi todas las computadoras tienen un circuito para el registro del tiempo. 
· A pesar del uso generalizado de la palabra "reloj" para hacer referencia a  dichos dispositivos, en realidad no son relojes en el sentido usual. 
· En realidad son un cronometro. Un cronómetro de computadora es por lo  general un cristal de cuarzo trabajado con precisión. Cuando se mantiene sujeto a tensión, un cristal de cuarzo oscila con una  frecuencia bien definida:
- Que depende del tipo de cristal,
- La forma en que se corte 
- Y la magnitud de la tensión. 
-  A cada cristal se le asocian dos registros:
-  Un registro contador 
- Un registro mantenedor. 
            · Cada oscilación del cristal disminuye en 1 al contador. 
            · Cuando el contador toma el valor 0, 
- Se genera una interrupción y 
- el contador se vuelve a cargar mediante el registro mantenedor. 
        - De esta forma, es posible programar un cronómetro de modo que genere una interrupción 60 veces por cada segundo o con cualquier frecuencia que se desee. Cada interrupción recibe el nombre de marca de reloj.

Cuando se arranca por vez primera el sistema, por lo general se pide al operador que escriba la fecha y la hora, las cuales se convierten al número de marcas después de cierta fecha conocida y se guardan en la memoria. En cada marca de  reloj, el procedimiento de servicio de interrupciones añade  1 al tiempo guardado en memoria. De esta forma, el reloj (de software) se mantiene actualizado.
En el caso de una computadora y un reloj, no importa si éste se desfasa un poco.

· Puesto que todos los procesos de la máquina utilizan el mismo reloj, tendrán consistencia interna. 
· Todo lo que importa son los tiempos relativos.
En el caso de  varias máquinas, cada una con su propio reloj, la situación es distinta. 
· Aunque la frecuencia de un oscilador de cristal es muy estable, es imposible garantizar que los cristales de computadoras distintas oscilen  precisamente con la misma frecuencia. 
· Cuando un sistema tiene n computadoras, los en cristales, correspondientes oscilarán a tasas un poco distintas, lo que provoca una pérdida de sincronía en los relojes (de software) y que al leerlos tengan valores distintos. 
La diferencia entre los valores del tiempo se llama  distorsión del reloj. Como consecuencia de esta distorsión, podrían fallar los programas que esperan que el tiempo asociado  a un archivo, objeto, proceso o mensaje sea correcto e independiente del sitio donde haya sido generado (es decir, del reloj utilizado).
Lamport demostró que la sincronización de relojes es posible y presentó un algoritmo para lograr esto. Señaló que la sincronización de relojes no tiene que ser  absoluta:
· Si dos procesos no interactúan, no es necesario que sus relojes estén sincronizados, puesto que la carencia de sincronización no sería observable y por tanto no podría provocar problemas.
· Lo que importa por lo general, no es que todos los procesos concuerden de manera exacta en la hora, sino que coincidan en el orden en que ocurren los eventos. 
· Para la mayoría de los fines, basta que todas las máquinas coincidan en la misma hora.
· No es esencial que esta hora también coincida con la hora real.

No hay comentarios:

Publicar un comentario