Contador visitas

Memoria Compartida Distribuida

      Los sistemas de  memoria compartida distribuida (DSM) representan la creación hibrida de dos tipos de computación paralelos: la memoria distribuida en sistemas multiprocesador y los sistemas distribuidos. Ellos proveen la abstracción de memoria compartida en sistemas con memorias distribuidas físicamente y consecuentemente combinan las mejores características de ambos enfoques.


 Modelos de Consistencia


      La cuestión de la consistencia adquiere importancia en los sistemas DSM que replican el contenido de la memoria compartida mediante su almacenamien­to en las cachés de computadores separados. Cada proceso tiene un gestor de réplicas local, el cual está encargado de mantener copias en caché para los objetos. En la mayor parte de las implementaciones, los datos se leen desde las réplicas loca­les por cuestiones de eficiencia, pero las actualizaciones deben propagarse al resto de gestores de réplica.

     El gestor de réplica local se implementa mediante una combinación del middleware (el nivel DSM en tiempo de ejecución en cada proceso) y del núcleo. Es normal que el middleware realice la mayor parte del procesamiento DSM. Incluso en las implementaciones de DSM basadas en pá­ginas, el núcleo normalmente proporciona únicamente una correspondencia de páginas básica, el manejo de fallos de página y los mecanismos de comunicación, mientras que el middleware es responsable de implementar las políticas de compartición de páginas. Si los segmentos DSM son persistentes, entonces uno o más servidores de almacenamiento (por ejemplo, servidores de archi­vos) actuarán también como gestores de réplicas.

      Además de la gestión de la caché, una implementación DSM puede almacenar las actualizacio­nes y reducir los costes de comunicación mediante la propagación de múltiples actualizaciones a la vez.

     Un modelo de consistencia de memoria (Mosberger 1993) especifica las garantías de consisten­cia que un sistema DSM realiza sobre los valores que los procesos leen desde los objetos, dado que en realidad acceden sobre una réplica de cada objeto y que múltiples procesos pueden actualizar los objetos. Téngase en cuenta que esto es diferente de la noción de consistencia de alto nivel y dependiente de aplicación.
     Sin embargo, la mayor parte de las aplicaciones tienen requisitos de consistencia muy estrictos. Es preciso proporcionar a los programadores un modelo que se ajuste razonablemente al comportamiento que la memoria debería tener.
      Mosberger (1993) realiza un bosquejo de un conjunto de modelos que han sido pensados para multiprocesadores de memoria compartida y sistemas DSM software. Los principales modelos de consistencia que se pueden implementar en la práctica en sistemas DSM son la consistencia secuencial y los modelos basados en consistencia débil.


 Memoria Compartida Distribuida con base en páginas


     El esquema de DSM propone un espacio de direcciones de memoria virtual que integra la memoria de todas las computadoras del sistema, y su uso se realiza mediante paginación. Las páginas quedan restringidas a estar necesariamente en un único nodo. Cuando un programa intenta acceder a una posición virtual de memoria, se comprueba si esa página se encuentra de forma local. Si no se encuentra, se provoca un fallo de página, y el sistema operativo solicita la página al resto de nodos. El sistema funciona de forma análoga al sistema de memoria virtual tradicional, pero en este caso los fallos de página se propagan al resto de ordenadores, hasta que la petición llega al nodo que tiene la página virtual solicitada en su memoria local. A primera vista este sistema parece más eficiente que el acceso a la memoria virtual en disco, pero en la realidad ha mostrado ser un sistema demasiado lento en ciertas aplicaciones, ya que provoca un tráfico de páginas excesivo.


 Memoria Compartida Distribuida Con Variables


Un método más estructurado que la DSM con base a páginas consiste en compartir sólo ciertas variables y estructuras de datos necesarias para más de un proceso. Ahora el problema pasa a ser la forma de mantener una base de datos distribuida, en potencia duplicada, consistente en las variables compartidas.

Uno de los aspectos más importantes a tratar de estos sistemas es el de si las variables compartidas deben o no duplicarse, y de qué manera, parcial o total. Si se duplicasen existiría más potencial que en un sistema DSM basado en páginas, en términos de actualización, dado que las escrituras en las variables compartidas individuales se pueden aislar. Dos de los ejemplos más interesantes de este tipo de sistemas son el Munin y el Midway; el primero se basa en una implantación software de la consistencia de liberación, y el segundo consiste en compartir las estructuras de datos individuales, permitiendo que los programas multiprocesador existentes y los nuevos se ejecuten de manera eficiente en las multicomputadores, con ligeros cambios de código.

 Memoria Compartida Distribuida basada en objetos

     Una alternativa al uso de páginas es tomar el objeto como base de la transferencia de memoria. Aunque el control de la memoria resulta más complejo, el resultado es al mismo tiempo modular y flexible, y la sincronización y el acceso se pueden integrar limpiamente. Otra de las restricciones de este modelo es que todos los accesos a los objetos compartidos han de realizarse mediante llamadas a los métodos de los objetos, con lo que no se admiten programas no modulares y se consideran incompatibles.


 Casos de estudio


La memoria compartida distribuida se implementa utilizando uno de los siguientes métodos o bien una combinación de ellos, hardware especializado, memoria virtual paginada convencional o middleware:

Hardware: las arquitecturas multiprocesador de memoria compartida basadas en una arquitec­tura NUMA (por ejemplo, Dash [Lenoski y otros 1992] y PLUS [Bisiani y Ravishankar 1990] se basan en hardware especializado para proporcionar a los procesadores una visión consistente de la memoria compartida. Gestionan las instrucciones de acceso a memoria LOAD y STORE de forma que se comuniquen con la memoria remota y los módulos de caché según sea necesa­rio para almacenar y obtener datos. Esta comunicación se realiza sobre sistemas de intercone­xión de alta velocidad similares a una red. El prototipo del multiprocesador Dash tiene 64 no­dos; conectados mediante una arquitectura NUMA.

Memoria virtual paginada: muchos sistemas, incluyendo Ivy [Li y Hudak 1989], Munin [Carter y otros 1991], Mirage [Fleisch y Popek 1989], Clouds [Dasgupta y otros 1991], Choices [Sane y otros 1990], COOL (Lea y otros 1993] y Mether [Minnich y Farber 1989], implementan DSM como una región de memoria virtual que ocupa el mismo rango de direcciones en el espacio de direcciones de cada proceso participante. Este tipo de implementación normalmente sólo es factible sobre una colección de computadores homogéneos con formatos de datos y de paginación comunes.

 
Middleware: algunos lenguajes del tipo de Orca [Bal y otros 1990] y middleware como Linda [Carriero y Gelernter 1989] junto con sus derivados JavaSpaces y TSpaces [Wyckoff y otros 1998] proporcionan DSM sin necesidad de soporte hardware o de paginación, de una forma independiente de la plataforma. En este tipo de implementación, la computación se implementa mediante la comunicación entre instancias del nivel de soporte de usuario en los clientes y los servidores. Los procesos realizan llamadas a este nivel cuando acceden a datos en DSM. Las instancias de este nivel en los diferentes computadores acceden a los datos locales y se intercambian información siempre que sea necesario para el mantenimiento de la consistencia.

No hay comentarios:

Publicar un comentario