junio 21, 2022

Memoria Compartida Distribuida

La memoria compartida distribuida (DSM) [1] es una abstracción utilizada para compartir datos entre computadoras que no comparten memoria física. Los procesos acceden a DSM mediante lecturas y actualizaciones de lo que parece ser la memoria ordinaria dentro de su espacio de direcciones. Sin embargo, un sistema de tiempo de ejecución subyacente garantiza de manera transparente que los procesos que se ejecutan en diferentes computadoras observen las actualizaciones realizadas entre sí. Es como si los procesos accedieran a una única memoria compartida, pero en realidad la memoria física está distribuida.

 La memoria compartida distribuida (DSM) es un paradigma intuitivo [3] que emula el entorno de ejecución de un multiprocesador de memoria compartida en un sistema distribuido. El modelo es intuitivo en el sentido de que los paradigmas que son válidos para la programación concurrente en sistemas de memoria compartida siguen siendo válidos en sistemas distribuidos.  Un área de aplicación donde los paradigmas de memoria compartida distribuida son útiles es el área de computación de alto rendimiento. 

Arquitecturas DSM

El comportamiento más intuitivo para la memoria es el de un sistema centralizado donde todas las operaciones son atómicas. Este modelo se denomina consistencia atómica o linealizabilidad: todas las operaciones de escritura están totalmente ordenadas (obedeciendo el orden en tiempo real de las operaciones) y las operaciones de lectura siempre devuelven el último valor escrito en la memoria. Estos modelos de consistencia de memoria  se etiquetan como modelos de consistencia fuerte

La implementación más simple de DSM, se ilustra en la figura 1. En esta arquitectura, un servidor central mantiene las páginas de memoria y los accesos a los datos, por parte de los clientes, se realizan a través de una invocación remota al servidor. El servidor serializa todas las solicitudes, asegurando así el orden total en los mensajes que son  necesario para mantener una consistencia fuerte. El sistema se comporta como si se dispusiera de una única memoria central.

En la arquitectura anterior, si todos los accesos a la memoria tuvieran que ser remotos el rendimiento sería bajo. 

Arquitectura Centralizada. Adaptada de [3]

Afortunadamente, los programas presentan cierto grado de localidad en los accesos a datos. Localidad significa que si se lee o escribe una posición de memoria determinada, es probable que también se acceda a otras posiciones de memoria adyacentes. En lugar de forzar la ejecución remota de todos los accesos, simplemente se puede migrar una parte de la memoria (por ejemplo, una página) del servidor al cliente, como se ilustra en la figura 2. El cliente puede realizar accesos locales posteriores a esa misma página. Si otro cliente quiere acceder a la misma página, la página se vuelve a migrar. Dado que una página determinada se encuentra en una única ubicación en un momento determinado, también se garantiza la coherencia.


Migraciones. Adaptada de [3]

La arquitectura anterior funciona mucho mejor que una centralizada ya que permite que la mayoría de los accesos se ejecuten localmente, en la máquina del cliente. Sin embargo, no permite que dos clientes accedan a la misma página al mismo tiempo. Siempre se debe migrar la página antes de que otro sitio pueda acceder a ella. 

Dado que las lecturas suelen ser mucho más comunes que las escrituras, y dado que muchas aplicaciones se basan en estructuras compartidas que pueden ser leídas en paralelo por hilos  diferentes, es aconsejable permitir varias copias idénticas del mismo página para ser replicada en el sistema.  La variante ilustrada en la figura 3 tiene réplicas de solo lectura que se leen simultáneamente. Cada vez que un cliente solicita, se crea una nueva réplica. Las solicitudes de escritura son coordinadas por el servidor. Naturalmente, si existen varias réplicas de una misma página, hay que garantizar que se comporten como una sola página. Se pueden usar dos enfoques para garantizar que las réplicas se mantengan con contenidos similares en una escritura: uno es propagar la actualización a todas las réplicas; la otra es invalidar las copias obsoletas y mantener actualizada una única copia.
Replicación con solo lectura. Adaptada de [3]


 La figura 4 muestra el enfoque de replicación completa, donde las réplicas de páginas de lectura y escritura se pueden mantener en varios clientes. Los clientes pueden realizar solicitudes de acceso, que son coordinadas por un secuenciador. La intercalación de operaciones y comandos locales del secuenciador depende de la semántica de coherencia del DSM. La función de secuenciador se puede distribuir, por ejemplo, realizada por un protocolo descentralizado ejecutado por todos los clientes interesados.

Replicación Lectura-Escritura. Adaptada de [3]




Referencias

  1. Coulouris, George F. Distributed Systems: Concepts and Design. Boston: Addison-Wesley, 2012.
  2. Tanenbaum, Andrew S., and Maarten van Steen. Distributed Systems: Principles and Paradigms. Upper Saddle River, NJ: Pearson Prentice Hall, 2007. 
  3. Rodrigues, Luís and Veríssimo, Paulo. Advances in Distributed Computing and Middleware. 

No hay comentarios.:

Publicar un comentario