Memoria Compartida Distribuida

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. Debido a esto, el concepto de memoria compartida distribuida es reconocido como uno de los enfoques mas atractivos para la creación de sistemas escalables, de alto rendimiento de sistemas multiprocesador.

Memoria compartida distribuida con base en páginas

  Para implementar un sistema de MCD es posible hacer uso del hardware de administración de memoria. La gran mayoría de los computadores modernos basan su arquitectura de memoria en paginación o alguna variante de paginación. En este tipo de sistemas, el hardware ofrece una serie de facilidades relacionadas con las páginas de memoria, normalmente aprovechadas únicamente por el sistema operativo.
En un sistema de MCD basado en páginas, la unidad de memoria que utiliza el sistema es, precisamente, la página. Las paginas migran dinámicamente a través de la red en demanda, puesto que en realidad los procesos pueden acceder únicamente  te a paginas almacenadas en la memoria local del computador donde se están ejecutando.

 Memoria Compartida Basados en Variables

  En los MCD basados en variables busca evitar la compartición falsa ejecutando un programa en cada CPU que se comunica con una central, la que le provee de variables compartidas, administrando este cualquier tipo de variable, poniendo variables grandes en varias páginas o en la misma página muchas variables del mismo tipo, en este protocolo es muy importante declarar las variables compartidas. La compartición falsa se produce cuando dos procesos se pelean el acceso a la misma página de memoria, ya que contiene variables que requieren los dos, pero estas no son las mismas. Esto pasa por un mal diseño del tamaño de las páginas y por la poca relación existente entre variables de la misma página.
En este esquema la granularidad es más fina ya que sólo se comparten variables que han sido marcados previamente en el código del programa.
Tanto el compilador como el entorno de ejecución se encargan del acceso y compartición de las variables compartidas.

Memoria Compartida Basados en Objetos

Puesto que en muchos lenguajes de programación los datos se encuentran organizados como objetos y no como variables simples, los sistemas de MCD basados en objetos intentan transportar datos por la red utilizando como unidad de manipulación el objeto y no las páginas o las variables. Los procesos que se ejecutan en los distintos computadores que componen el sistema tienen acceso a un espacio de objetos compartidos, en lugar de a un espacio lineal de direcciones. El sistema es responsable de la ubicación y administración de es-tos objetos compartidos. Un proceso puede invocar métodos de un objeto compartido, independientemente de la ubicación del proceso y del objeto. Los objetos están protegidos por el ocultamiento de información, por lo que los procesos no pueden acceder directamente al estado interno de ningún objeto compartido.

Modelos De Consistencia

Los sistemas de MCD mantienen replicas de páginas, variables u objetos, segun sea el caso, con el objetivo de minimizar los retardos provocados por las transferencias por la red. Cuando una de las replicas es modificada se presenta un problema de consistencia.
Este problema no es trivial si se considera que la actualización debe hacerse utilizando una red generalmente lenta, si se compara con la velocidad de procesamiento de los computadores e incluso con la velocidad de acceso a la memoria local. La solución que a menudo se aplica es sacrificar un poco la consistencia con el propósito de mejorar el desempeño. Si  este es el caso, es necesario establecer reglas sobre el comportamiento de la memoria. El modelo de consistencia establece la forma en que se hace visibles a los distintos procesadores o nodos del sistema las actualizaciones hechas a la memoria compartida. Dado un cierto modelo de consistencia, los programadores y el sistema acuerdan un determinado comportamiento para la memoria .Así, bajo un modelo de consistencia estricto, cada actualización es vista en forma instantánea  por todos los nodos en el sistema. Aunque este es el ideal para cualquier programador, y de hecho es el comportamiento acostumbrado de la memoria en los sistemas multiprocesador, en la práctica  es imposible de implementar en una red de computadores en donde no existe un tiempo global absoluto.

Caso De Estudios

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