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 MEMORIA COMPARTIDA DISTRIBUIDA (MCD)
Son sistemas de
software que emulan semántica de memoria compartida sobre hardware que ofrece
soporte sólo para comunicación mediante paso de mensajes. Este modelo permite
utilizar una red de estaciones de trabajo de bajo costo como una máquina
paralela con grandes capacidades de procesamiento y amplia escalabilidad,
siendo a la vez fácil de programar.
Cada uno de los
nodos en un sistema de MCD aporta memoria local para construir un espacio
global de direcciones virtuales que será empleado por los procesos que se
ejecuten en el sistema. El software de MCD se encarga de interceptar las
referencias a memoria que hacen los procesos y satisfacerlas, ya sea local o
remotamente. Si los accesos a memoria hacen referencia a posiciones almacenadas
remotamente, es necesario llevar a cabo una transferencia a través de la red
con el consecuente overhead.
En los sistemas
basados en páginas la granularidad de la memoria se define a nivel de página de
memoria. Esto quiere decir que la mínima unidad referenciable por el sistema de
MCD es la página, no pudiendo distinguir entre variables distintas almacenadas
en la misma página.
A pesar de que el
uso de una granularidad a nivel de página puede introducir problemas como el
false sharing, también permite mantener el overhead producido por la
administración de la memoria distribuida dentro de parámetros razonables. Esto
se debe a que se puede hacer uso de las características de hardware para el
manejo de memoria virtual, disponibles en la mayoría de los computadores.
El alto tráfico de
páginas por la red que puede provocar un sistema de MCD obliga a la utilización
de memoria local en cada nodo para almacenar copias de páginas frecuentemente
usadas, en la misma forma en que un caché ayuda a mejorar el desempeño de un
sistema multiprocesador fuertemente acoplado. Sin embargo, la incorporación de
estos cachés introduce un problema de coherencia para las múltiples copias que
pueden existir de cada página.
La actualización de
las páginas modificadas puede llevarse a cabo de distintas maneras. En primer
lugar, puede emplearse un protocolo de actualización: Se envía las páginas
actualizadas a todos los nodos que mantienen copias. Otra opción es simplemente
enviar mensajes de invalidación para las copias, de modo que la actualización
se lleve a cabo por demanda. Finalmente, puede enviarse diffs que codifiquen
los cambios a las páginas y que permitan construir la versión actualizada a
partir de una página original y múltiples modificaciones. Esta última opción es
la que se emplea en los protocolos que soportan múltiples escritores
simultáneos sobre una página, con el objetivo de reducir el problema de false
sharing. Sea cual sea el caso aquí se emplea simplemente el término
actualización.
Por otra parte, el
modelo de consistencia establece la forma en que se hacen visibles a los
distintos 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 éste sería el ideal para
cualquier programador, en la práctica es imposible de implementar y mucho menos
en una red de computadores.
Los
primeros sistemas de MCD empleaban protocolos rígidos que implementaban un
modelo casi estricto, el modelo de consistencia secuencial. Bajo este modelo,
las actualizaciones a la memoria compartida son vistas en el mismo orden por
todos los nodos. Sin embargo, este orden puede variar en distintas ejecuciones,
en la misma forma en que podría variar bajo un modelo estricto dada la concurrencia
con que se realizan las actualizaciones. Para poder cumplir con este modelo es
necesario hacer del conocimiento de todos los nodos la ocurrencia de una
actualización, provocando una alta tasa de comunicación por la red y por
consiguiente un desempeño muy pobre del sistema en general.
También se encuentra Memoria compartida basada en objetos Una alternativa al uso de páginas es tomar el objeto como base de la transferencia de memoria. Aunque el control de la memoria resulta más complejo, el resultado es al mismo tiempo modular y flexible, y la sincronización y el acceso se pueden integrar limpiamente. Otra de las restricciones de este modelo es que todos los accesos a los objetos compartidos han de realizarse mediante llamadas a los métodos de los objetos, con lo que no se admiten programas no modulares y se consideran incompatibles.
En ese sentido 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.
No hay comentarios:
Publicar un comentario