Distributed Shared Memory
# Distributed Shared Memory

En computación, 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 cluster tiene 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.

Los sistemas de software DSM también tienen capacidad para organizar la región de memoria compartida de manera flexible. Las aproximaciones basadas en páginas organizan la memoria compartida en páginas de tamaño fijo. Por su parte, las aproximaciones basadas en objetos organizan la región como un espacio abstracto en el que se pueden almacenar objetos compartidos de tamaño variable.

La arquitectura de memoria compartida puede suponer la separación de la memoria en partes compartidas distribuidas entre los nodos y la memoria principal; o la distribución de toda la memoria en los distintos nodos. Un protocolo de coherencia, escogido de acuerdo a un modo de consistencia, se encarga de mantener la coherencia de la memoria.

En la memoria compartida, los procesos utilizan variables que pueden leer/escribir para poder comunicarse. Por ejemplo, cada máquina tienen su memoria virtual propia y sus propias tablas de páginas. Cuando cualquiera de las CPUs realiza una llamada a STORE o LOAD en una página que no existe dentro de su contexto, produce una interrupción al sistema operativo. Éste localiza dónde está la página que se solicita y hace que la CPU que la contiene la desasigne de su contexto, posterior a eso la envía a través de la red de conexión a la CPU que la solicitó.

En el funcionamiento de DSM, el espacio de direcciones se divide en páginas las cuales se distribuyen por todos los nodos. En el momento que una CPU hace referencia a una página en una dirección remota se produce una interrupción, el software de DSM obtiene la página que contiene la dirección y retorna a la instrucción fallida que ahora puede proseguir.

