¿Cuál es la diferencia entre la memoria compartida distribuida (DSM) y la memoria compartida?

Memoria compartida distribuida (DSM)

En DSM, las diferentes memorias físicas se comparten lógicamente en un gran espacio de direcciones (memoria virtual). Entonces, los procesos que se realizan acceden a la memoria física a través de este espacio de direcciones lógicamente compartido. DSM no tiene memoria física compartida. El modelo de memoria compartida proporciona un espacio de dirección virtual compartido entre todos los nodos. El término “compartido” no significa que haya una sola memoria centralizada, pero “compartido” esencialmente significa que el espacio de direcciones está compartido (la misma dirección física en dos procesadores se refiere a la misma ubicación en la memoria).

Memoria compartida (SM)

En informática, la memoria compartida es memoria a la que pueden acceder simultáneamente varios programas con la intención de proporcionar comunicación entre ellos o evitar copias redundantes. La memoria compartida es un medio eficiente de pasar datos entre programas. Dependiendo del contexto, los programas pueden ejecutarse en un único procesador o en múltiples procesadores separados.
En software de computadora, la memoria compartida es
-un método de comunicación entre procesos (IPC), es decir, una forma de intercambiar datos entre programas que se ejecutan al mismo tiempo. Un proceso creará un área en RAM a la que otros procesos pueden acceder;
-un método para conservar el espacio de memoria dirigiendo los accesos a lo que normalmente serían copias de un dato a una sola instancia, utilizando mapeos de memoria virtual.

Kai Li de Princeton inventó esto en los años noventa.

La memoria compartida puede ser un modelo de programación útil para programas multiproceso. Los subprocesos se ejecutan en la misma máquina y todos se comunican a través de un espacio de direcciones común.

Pero suponga que está en un entorno distribuido. Si sus hilos están en máquinas separadas, no pueden compartir memoria directamente. La memoria compartida distribuida utiliza técnicas de software para permitir que estas máquinas compartan (lo que parece ser) un espacio de direcciones común de todos modos.

En el caso más simple, cada página reside en una sola máquina a la vez. Los hilos en otras máquinas se atrapan cuando intentan acceder a la página, y el software la mueve, dejando siempre que los hilos en una sola máquina la usen a la vez. Una optimización es permitir que la página esté en muchas máquinas a la vez mientras se está leyendo, pero volviendo al acceso exclusivo cuando se producen escrituras.

Los sistemas distribuidos pueden ser notoriamente difíciles de programar. La memoria compartida distribuida permite un modelo de programación familiar. En el lado negativo, el rendimiento puede ser deficiente y las fallas de la máquina o las particiones de red bloquean todo el programa.