Está en la página 1de 5

1

Perspectivas de Memoria Compartida


Distribuida para Futuras Aplicaciones
Huayllani Chvez Rolando
Universidad Nacional San Agustn
Ingeniera de Sistemas
Arequipa, Per
rolandohuayllani@gmail.com

ResumenEl paradigma de memoria compartida distribuida


permite aprovechar la potencialidad de computacin paralela y
estn implementados bajo un sistema operativo. Estos sistemas
son ms escalables y menos costosos que los sistemas
multiprocesador fuertemente acoplados. Su programacin es
simple, a diferencia de los sistemas distribuidos basados en paso
de mensajes. En este artculo describir el diseo y los detalles de
de cmo se implementara el DSM y sugerir una perspectiva
futura sobre este tema. En el sistema se propone plantear una
forma de disear por niveles utilizando la taxonoma, la
consistencia y orientacin a objetos, tambin hablare sobre los
multiprocesadores tipos y sus ventajas lo cual facilita mejor su
modificacin y portabilidad. De hecho, la mayora del cdigo es
comn para los dos sistemas operativos en los que opera. Y
finalmente para lograr terminar este trabajo de investigacin se
planteare teoras para futuros trabajos que realizare y terminar
con alguna aplicacin en un algn proyecto en concreto, por el
momento se plantea la suficiente introduccin para los trabajos
relacionados y aun no escribire conclusiones.

una LAN compartiendo un solo espacio de direcciones


virtuales con pginas.
La desventaja de este esquema es que exhibe un desempeo
pobre, ya que las pginas andan de un lado para otro de la red.
La ventaja es que es un modelo fcil de programar y de
construir.
Otro mtodo consiste en no compartir todo el espacio de
direcciones, sino solo una porcin seleccionada, de hecho,
solo aquellas variables o estructuras de datos que se necesitan
utilizar en ms de un proceso, lo cual produce un alto nivel de
abstraccin, pues ya no se piensa en una porcin de memoria,
sino en una coleccin de variables [6].
Una posible optimizacin consiste en repetir las variables
compartidas en varias mquinas, el problema en este caso es
mantener consistentes las copias.
Las lecturas se pueden hacer de manera local, sin ningn
trfico y las escrituras mediante un protocolo de actualizacin
con varias copias.
II. CARACTERSTICAS DE DSM

Palabras Claves Memoria Compartida distribuida,


Programacin
Paralela,
Sistemas
Distribuidos,
Multicomputadores.

I.

INTRODUCCION

a computacin paralela tiene como objetivo disminuir el


tiempo de ejecucin de aplicaciones con grandes
requerimientos de procesamiento, repartiendo el trabajo entre
distintas unidades de procesamiento que pueden operar en
forma simultanea pero coordinada[5][7].
En un multiprocesador los procesadores estn acoplados a
una memoria comn. Los procesos se comunican en forma
simple a travs de la memoria compartida, haciendo escrituras
y lecturas. Adems, los programas requieren de sincronizacin
para acceder a los datos compartidos y controlar el progreso
individual de los procesos paralelos [5].
En 1986 Li y ms tarde Hudak, propusieron un mecanismo
para el manejo de memoria en sistemas distribuidos llamado
memoria compartida distribuida (DSM). Su propuesta fue
tener una coleccin de estaciones de trabajo conectadas por

Los programas que ejecuta el sistema operativo


deben escribirse en el lenguaje C o C++. Los
programas paralelos dentro del sistema utilizan un
paradigma SPMD, un nico programa que acta en
forma paralela sobre distintos datos [11].
Ahorra al programador todo lo concerniente al paso
de mensajes al escribir sus aplicaciones, cuestin que
en otro sistema debera tenerse muy presente [2].
Es fundamentalmente una herramienta para
aplicaciones paralelas o para aplicaciones o grupos de
aplicaciones distribuidas en las que se puede acceder
directamente a datos individuales que ellas
comparten [10].
Es menos apropiado para sistemas cliente-servidor,
ya que los clientes ven al servidor como un gestor de
recursos en forma de datos abstractos que se acceden
a travs de peticiones (por razones de modularidad y
proteccin) [10][11].

2
Distributed shared memory

DSM appears as
memory in address
space of process

Process
accessing DSM

Physical
memory

Physical
memory

Physical
memory

Fig.1. Visin General de DSM

III.

PROGRAMACIN DE MEMORIA COMPARTIDA

A. Interfaz de Programacin de Aplicaciones


La API de TreadMarks es simple pero proporciona
instalaciones para la creacin y destruccin de procesos de
sincronizacin y asignacin de memoria compartida.
La asignacin de memoria compartida se realiza a travs de
Tmk_malloc(), slo la memoria asignada por Tmk malloc est
compartido. Memoria asignada estticamente o por una
llamada a malloc() es privado para cada proceso, ms
formalmente dos accesos a memoria compartida estn
confiriendo si se emiten por diferentes procesadores la misma
ubicacin de memoria y al menos uno de ellos es de escritura.
Un programa paralelo tiene conflicto de datos si no hay
sincronizacin entre dos accesos [6].
B. Dos Ilustraciones Simples
Para el uso de la API TreadMarks se resuelve mediante
Jacobi que es un mtodo para resolver ecuaciones
diferenciales parciales. Nuestro ejemplo itera sobre dos
dimensional durante cada iteracin cada elemento de la matriz
se actualiza a la media de sus vecinos ms prximos (por
encima de la izquierda y la derecha). Jacobi utiliza una matriz
de rascar para almacenar los nuevos valores Calculado durante
cada iteracin para evitar sobrescribir el valor antiguo del
elemento antes de que sea utilizado por su vecino. En la
versin paralela todos los procesadores se asignan
aproximadamente en bandas iguales de tamao de filas. Las
filas en el lmite de una banda son compartidas por dos
procesos vecinos [6].
A continuacin en la figura 2 se ilustra la codificacin.

Fig.2. Pseudo Cdigo de Programa Jacobi para TreadMarks[9]

TAXONOMA DE COMPUTADORES PARALELOS Y


DISTRIBUIDOS

IV.

A. Multiprocesadores

Tienen memoria compartida.


Son sistemas altamente acoplados: cuando se enva
un mensaje el retardo es corto y throughput es alto.
Comunes en sistemas paralelos.

B. Multicomputadores

Cada procesador tiene su memoria privada.


Sistemas dbilmente acoplados: el retardo es notable
y el throughput es bajo.
Son ms comunes en sistemas distribuidos.
V. MODELOS DE CONSISTENCIA

Es esencialmente un contrato entre procesos y el


almacenamiento de datos. Es decir: si los procesos acuerdan
obedecer ciertas reglas, el almacenamiento promete trabajar
correctamente. Normalmente un proceso que realiza una
operacin de lectura espera que esa operacin devuelva un
valor que refleje el resultado de la ltima operacin de
escritura sobre el dato [3][5].
Es un sistema distribuido, tales como una memoria
compartida distribuida o almacenes de datos distribuido, tales
como una base de datos, sistema de archivos, cach web o
sistemas de replicacin optimista, hay una serie de posibles
modelos de consistencia de datos. Se dice que un sistema
soporta un determinado modelo, si las operaciones en
memoria siguen normas especficas. La consistencia de los

3
datos es definida entre el programador y el sistema, que
garantiza que si el programador sigue las reglas, la memoria
ser consistente y el resultado de las operaciones de memoria
ser predecible [6].
Los lenguajes de alto nivel, tales como C, C++ y Java,
respetan parcialmente este modelo traduciendo operaciones de
memoria en operaciones de bajo nivel para preservar la
memoria semntica. Para mantener el modelo, los
compiladores pueden reordenar algunas instrucciones de
memoria, y las llamadas a las bibliotecas como
pthread_mutex_lock(), encapsular la sincronizacin necesaria
[7][9].

VI. IMPLEMENTACIN DE UNA MEMORIA DISTRIBUIDA

Acceso compartido a la memoria a comunicacin


Inter-procesos.
Ningn procesador puede acceder directamente a la
memoria de otro procesador a NORMA (NO Remote
Memory Access) Systems.
Los procesadores hacen referencia a su propia
memoria local. Hay que aumentar software para que,
cuando un procesador haga referencia a una pgina
remota, esta pgina sea recuperada.
El espacio de direccionamiento comn es
particionado en pedazos.
Cada pedazo es situado en una estacin.
Cuando un procesador hace referencia a una pgina
no local "trap" (page fault).

VII. VENTAJAS Y DESVENTAJAS


A. Ventajas
Ilusin de una memoria fsica compartida, sin cuellos
de botella.
Escalabilidad (podemos extender el sistema sin
mucho problema).
Menor costo.
B. Desventajas
Topologa de red muy importante.
Administracin de la red.
VIII. MULTIPROCESADORES BASADOS EN UN ANILLO
En Memnet, un espacio de direcciones se divide en una parte
privada y una compartida [1].
La parte compartida se divide en bloques de 32 bytes,
unidad mediante la cual se realizan las transferencias entre las
mquinas [5].
Las mquinas Memnet estn conectadas mediante un anillo
de fichas modificado. El anillo consta de 20 cables paralelos,
que juntos permiten enviar 16 bits de datos y 4 bits de control
cada 100 nanosegundos, para una velocidad de datos de 160
Mb/seg [1][5][8].

MMU

Cache

Mem. de origen
CPU

Memoria Privada
Fig.3.Multiprocesador en Anillo [8].

Un bloque exclusivo de lectura puede estar presente en


varias mquinas, uno de lectura-escritura debe estar presente
en una sola mquina.
Los bits en el dispositivo Memnet indican uno o ms de los
siguientes estados [6][11]:
A. VALIDO: El bloque est presente en el cach y est
actualizado.
B. EXCLUSIVO: La copia local es la nica.
C. ORIGEN: Se activa si sta es la mquina origen del
bloque.
D. INTERRUPCION: Se utiliza para forzar interrupciones.
E. POSICION: Indica la localizacin del bloque en el cach
si est presente y es vlido.
IX.

PROTOCOLO MENNET

A. Lectura.
1. Cuando un CPU desea leer una palabra d ela
memoria compartida, la direccin de memoria por
leer se transfiere al dispositivo Memnet, el cual
verifica la tabla del bloque para ver si est presente.
Si es as, la solicitud es satisfecha de inmediato. En
caso contrario, el dispositivo Memnet espera hasta
capturar la ficha que circula; despus, cooca un
paquete de solicitud en el anillo y suspende el CPU.
El paquete de solicitud contiene la direccin deseada
y un campo vaco de 32 bytes [8].
2. Cada dispositivo Memnet en el anillo verifica si tiene
el bloque. De ser as, coloca el bloque en el campo
vaco y modifica el encabezado del paquete para
inhibir la accin de las mquinas posteriores [8][5].
3. Si el bit exclusivo del bloque est activo, se limpia.
Cuando el paquete regresa al emisor, se garantiza que
contiene al bloque solicitado. El CPU que enva la
solicitud guarda el bloque, satisface la solicitud y
libera al CPU [5].
4. Si la mquina solicitante no tiene espacio libre en su
cach para contener el bloque recibido, entonces
toma al azar un bloque oculto y lo enva a su origen,
con lo que libera un espacio de cach. Los bloques
cuyo bit origen estn activados nunca se eligen, pues
se encuentran en su origen [5][6].

4
B. Escritura.
1. Si el bloque contiene la palabra por escribir est
presente y es la nica copia en el sistema, (el bit
exclusivo est activado) la palabra solo se escribe de
manera local [6][7].
2. Si est presente el bloque, pero no es la nica copia,
se enva primero un paquete de invalidacin por el
anillo para que las otras mquinas desechen sus
copias del bloque por escribir. Cuando el paquete de
invalidacin regresa al solicitante, el bit exclusivo se
activa para ese bloque y se procede a la escritura
local [7].
3. Si el bloque no est presente, se enva un paquete que
combina una solicitud de lectura y una de
invalidacin. La primera mquina que tenga el
bloque lo copia en el paquete y desecha su copia.
Todas las mquinas posteriores solo desechan el
bloque de sus cachs. Cuando el paquete regresa al
emisor, ste lo guarda y escribe en l [6][8].

XI. MEMORIA COMPARTIDA BASADO EN OBJETOS


Una alternativa al uso de pginas es tomar el objeto como
base de la transferencia de memoria. Aunque el control de la
memoria resulta ms complejo, el resultado es al mismo
tiempo modular y flexible, y la sincronizacin y el acceso se
pueden integrar limpiamente.
Puesto que en muchos lenguajes de programacin 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
manipulacin el objeto y no las pginas 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 38 lineal de
direcciones. El sistema es responsable de la ubicacin y
administracin de estos objetos compartidos. Un proceso
puede invocar mtodos de un objeto compartido,
independientemente de la ubicacin del proceso y del objeto .

X. DIFERENCIA REAL MULTIPROCESADORES VS DSM


En todos los multiprocesadores, la respuesta es s. En los
sistemas DSM es no ya que se necesita siempre la
intervencin del software. De manera anloga, la existencia de
memoria global sin enlaces, es decir, una memoria no asociada
con un CPU en particular, es posible en los multiprocesadores
pero no en los sistemas DSM [1].
A. Multiprocesadores,
Cuando se detecta un acceso remoto, se enva un
mensaje a la memoria remota mediante un controlador
de cach o MMU. El medio utilizado en este caso es un
bus de alta velocidad (o conjunto de buses).
B. Sistemas DSM
se enva por medio del sistema operativo o el sistema
de tiempo de ejecucin. El medio utilizado es
generalmente una LAN convencional (aunque a veces la
diferencia entre un "bus" y una "red" es discutible,
principalmente en lo relativo a la cantidad de cables).

Fig.5.Estructura Memoria Compartida Basado en Objetos [5].

XIII.

REFERENCIAS

[1] Alvaro E. Campos and Federico Meza. Modelos de Consistencia y


Migracion de Threads en un Sistema de MCD. Technical Report RT-PUCDCC-99-01, Departamento de Ciencia de la Computacion,
P. Universidad Catolica de Chile, Santiago, Chile, Junio 1999.
[2] Kai Li. Shared Virtual Memory on Loosely Coupled Multiprocessors. PhD
thesis, Yale University, October 1986.

[3] J.P. Singh, W.D. Weber, and A. Gupta. SPLASH: Stanford Parallel
Applications for Shared-Memory. Technical Report CSL-TR-91-469,
Stanford University, 1991.

[4] Ayal Itzkovitz, Assaf Schuster, and Lea Shalev. Thread Migration and its
Applications in Distributed Shared Memory Systems. Journal of Systems and
Software, 42(1):7187, 1998.
[5] Peter Keleher. The CVM Manual. Technical report, Department of
Computer Science, University of Maryland, 1996.

[6] Peter Keleher. TreadMarks: Shared Memory Computing on Networks of


Workstations. IEEE Computer,29(2):1828, February 1996

Fig.4.Diferencia Multiprocesadores vs DSM [4].

5
[7]Lucas M. Bietti, " Memorias compartidas, conversacin de familia e
interaccin ", Discurso & Sociedad. Vol. 5(4), 2011, 749-784
[8]Florentino Eduardo Gargollo Acebr_as, Pablo Lorenzo Fern_andez,
Alejandro Alonso Pajares y Andr_es Fern_andez Bermejo, "Sistemas
Multiprocesador de Memoria Compartida Comerciales", Escuela Politecnia de
Ingenieria de Gijon, Campus de Viesques, Universidad de Oviedo,Asturias,
Espaa.
[9] Urrea Cardozo, Alba Eugenia; Gmez, Rafael , Un modelo de memoria
virtual compartida distribuida para Mapan, Ingeniera y Competitividad, vol.
7, nm. 1, 2005, pp. 33-43 Universidad del Valle Cali, Colombia .
[10] Jose luis Gutierez Temio, M.Jose Gil Larrea, Simulacion de la memoria
Cache y la memoria virtual, Universidad de Deusto.
[11] Alvaro E. Campos, Federico Meza, DSM-PEPE: Un Sistema de
Memoria Compartida Distribuida para Multiprocesadores de Bajo Costo,
Departamento de Ciencias de la Computacin, Universidad Catlica de Chile.

También podría gustarte