Memorias compartidas distribuidas


La memoria compartida distribuida es una abstracción que simula, en un ambiente multicomputador, la gestión de memoria de los sistemas multiprocesadores. Los factores mas significativos en el desempeño de un sistema de memoria compartida distribuida son: el modelo de consistencia, la granularidad, el tipo de implantación y el protocolo. Los sistemas implementados hasta ahora han combinado estos factores según una calidad de servicio especifica: desempeño o versatilidad. Este trabajo propone un sistema que conjuga estas dos características mediante la combinación de varios tipos de granularidad con un modelo de consistencia de entrada y con un protocolo de varios lectores y varios escritores completamente distribuido.



La versatilidad es lograda a través de varios niveles de interfaz de granularidad de tamaño variable. Un desempeño eficiente se obtiene mediante un modelo de consistencia de entrada y un protocolo de múltiples lectores y múltiples escritores. Este sistema implanta la ilusión de que cada proceso vea la porción compartida de manera coherente; es decir, si un dato compartido es modificado por algún proceso, el sistema garantiza que los demás procesos observaran la modificación de forma consistente.



Read Users' Comments ( 20 )

Modelos de consistencias de la memoria


En las memorias compartidas distribuidas es importante tener presente un modelo de consistencia, puesto que están relacionados entre sí formando un conjunto sólido, donde dicho modelo establece la forma en que se hacen visibles a los distintos nodos del sistema las actualizaciones hechas a la memoria compartida mediante la estructura de todos los modelos, los cuales son cruzados entre sí para revisar la consistencia de los mismos para una especificación balanceada o equilibrada, con el objetivo de mejorar el rendimiento y la seguridad especificando las garantías de consistencia que un sistema MCD realiza sobre los valores que los procesos leen desde los objetos, dado que en realidad acceden sobre una réplica de cada objeto y que múltiples procesos pueden actualizar los objetos.

Los modelos de memoria compartida se fundamentan en:
- Especifica las restricciones en el orden en el que las operaciones de memoria deben hacerse visibles a los procesadores.
- Los programadores se basan en el modelo de consistencia para razonar acerca de los posibles resultados (corrección de los programas).
- Para el diseñador del compilador o del hardware el modelo impone limitaciones a posibles reordenaciones (optimizaciones).

Los modelos que estudiaremos son:
Consistencia estricta
Consistencia secuencial
Consistencia causal
PRAM
Consistencia débil
Consistencia relajada

CONSISTENCIA ESTRICTA
Cualquier lectura a la localidad de memoria x retorna el valor almacenado por la última operación de escritura (antes de la lectura).
Supone la existencia de un tiempo global. Determinar cuál fue la escritura más reciente no siempre es posible.
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 este será el ideal para cualquier programador, en la práctica es imposible de implementar y mucho menos en una red de computadores.

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á 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.
Por otra parte, cuando se ejecutan procesos en paralelo sobre diferentes máquinas, cualquier mezcla de ejecución es un resultado aceptable, no obstante todos los procesos deben ver la misma secuencia de referencias a memoria y se respeta el orden de los programas.

CONSISTENCIA CAUSAL
Determina las actualizaciones que deben propagarse de acuerdo a una relación de causalidad entre los accesos a memoria. Dos escrituras a la memoria están causalmente relacionadas si el producto de una de ellas puede depender del producto de la otra, a través de una lectura. De acuerdo a este modelo, las escrituras que están causalmente relacionadas deben verse en el mismo orden en todos los nodos. El resto de las actualizaciones no tienen restricción en su propagación.
Por ejemplo; Si un evento B es causado o influenciado por un evento A, la causalidad requiere que todo el mundo vea primero el evento A y luego el B.
Cuando encontramos una lectura seguida por una escritura, los dos eventos están potencialmente relacionados en forma causal.

CONSISTENCIA PRAM (PIPELINED RAM)
Las escrituras realizadas por un proceso, son recibidas por el resto en el orden en el cual éstas fueron ejecutadas, no obstante, las escrituras realizadas por diferentes procesos pueden ser vistas en órdenes diferentes por todos ellos.

CONSISTENCIA DÉBIL
Aprovecha el conocimiento de las operaciones de sincronización para relajar la consistencia de memoria, mientras se muestra al programador para implementar una consistencia secuencial.
Se introduce un nuevo tipo de variable: variables de sincronización.
Los accesos a las variables de sincronización son secuencialmente consistentes. Todos los procesos ven todos los accesos a las variables de sincronización en el mismo orden.
No se permite el acceso a ninguna variable de sincronización hasta que todas las escrituras previas se hayan completado: Hacer una sincronización después de operaciones de escritura obliga a que los nuevos valores se propaguen a todas las memorias.
El hacer una operación de sincronización antes de leer los datos, le garantiza a un proceso que leerá los últimos valores.
Operación de sincronización: garantiza que las escrituras locales sean propagadas a todas las otras máquinas y se actualiza la memoria actual con escrituras hechas remotamente.

CONSISTENCIA RELAJADA
Se basa en el supuesto de que los accesos a variables compartidas se protegen en secciones críticas empleando primitivas de sincronización, como locks. En este caso, todo acceso esta precedido por una operación acquire y seguido por una operación release. Puesto que ningún otro proceso, ni local ni remoto, puede acceder a las variables modificadas protegidas en la sección crítica hasta tener control del lock, la actualización de cualquier modificación puede postergarse hasta el momento en que se lleva a cabo la operación release. El release no se completa hasta que la actualización se haya llevado a cabo en todos los nodos donde haya copias.
Acquire: la memoria se asegura que todas las copias locales de las variables protegidas se actualizan con las variables remotas.
Release: con esta operación se propagan los cambios realizados a las variables protegidas al resto de las máquinas.
Por ultimo es importante resaltar que la duplicidad de los bloques compartidos aumenta el rendimiento, pero produce un problema de consistencia entre las diferentes copias de la página en caso de una escritura. Si con cada escritura es necesario actualizar todas las copias, el envío de las páginas por la red provoca que el tiempo de espera aumente demasiado, convirtiendo este método en impracticable. Para solucionar este problema se proponen acudir a los modelos antes expuestos, ya que los mismos, permiten establecer un nivel aceptable de acercamiento tanto a la consistencia como al rendimiento.



Read Users' Comments ( 4 )

Memoria compartida basada en páginas


     El esquema de DSM propone un espacio de direcciones de memoria virtual que integra la memoria de todas las computadoras del sistema, y su uso se realiza mediante paginación. Las páginas quedan restringidas a estar necesariamente en un único nodo. Cuando un programa intenta acceder a una posición virtual de memoria, se comprueba si esa página se encuentra de forma local. Si no se encuentra, se provoca un fallo de página, y el sistema operativo solicita la página al resto de nodos.

     El sistema funciona de forma análoga al sistema de memoria virtual tradicional, pero en este caso los fallos de página se propagan al resto de ordenadores, hasta que la petición llega al nodo que tiene la página virtual solicitada en su memoria local. A primera vista este sistema parece más eficiente que el acceso a la memoria virtual en disco, pero en la realidad ha mostrado ser un sistema demasiado lento en ciertas aplicaciones, ya que provoca un tráfico de páginas excesivo.

Diseño Básico:
1.Réplica
2.Granularidad
3.Obtención de la Consistencia Secuencial
•Búsqueda del Propietario
•Búsqueda de las Copias
4.Reemplazo de Páginas
5.Sincronización


Read Users' Comments ( 0 )

Memoria compartida basada en variables

     Aquí las comunicaciones entre los diferentes procesadores se realizan a través de accesos a un espacio compartido de direcciones. Entre sus principales ventajas se encuentra la facilidad de programación. Esta memoria define:


Munin:
-Consistencia de liberación.
-Protocolos múltiples.
-Directorios.
-Sincronización.



Munin: Se basa en objetos del software (usa MMU).
a) Variables ordinarias.
b) Variables de datos compartidos.
c) Variables de sincronización.


Operación básica con variables ordinarias:
a. No se comparten.
b. Solo son accedidas por el proceso que las creo.



Operación básica con variables de datos compartidos: Son declaradas como tales.



Operación básica con variables de sincronización:
-Son accedidas mediante procedimientos de acceso proporcionados por el sistema.
-Cerraduras: lock y unlock.
-Barreras: increment y wait.

Midway:
-Consistencia de entrada.
-Implantación.



Read Users' Comments ( 0 )

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.

     Puesto que en muchos lenguajes de programación 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 manipulación el objeto y no las paginas 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 ubicación y administración de estos objetos compartidos. Un proceso puede invocar métodos de un objeto compartido, independientemente de la ubicación del proceso y del objeto.


Las Memorias Compartidas basadas en Objetos:

-Nace como respuesta a la creciente popularización de los lenguajes orientados por objetos.

-Los datos se organizan y son transportados en unidades de objetos, no unidades de -páginas.

-Es un modelo de programación de DSM de alto nivel.



Read Users' Comments ( 0 )

Casos de Estudio

     Un caso de estudio es un método particular de investigación cualitativa. Se usa en grandes muestras, siguiendo un rígido protocolo para examinar un número limitado de variables. Los casos de estudio incluyen la profundización y examen longitudinal de un caso o evento específicos. Consisten en una forma sistemática de observar los eventos, coleccionando datos, analizando información y presentando resultados.

     Los casos de estudio son una herramienta de relaciones públicas que consiste en ejemplos reales en los que se presenta una historia positiva sobre los beneficios que un producto o servicio les han significado a determinados usuarios.

     Se pueden presentar a través de una nota de prensa, folletos o un anuncio; También es un recurso que se utiliza en publicidad.

     En un banco donde se realizan gran cantidad de transacciones se hace necesario el uso de una memoria con gran capacidad de almacenamiento es por ello que se emplea memorias compartidas basadas en paginas donde la memoria de todos los cómputos son administrados por un nodo central, formando una sola memoria que va hacer dividida en páginas. Cuando una transacción hace un llamado a una página en específico y esta no se encuentra en la memoria de la maquina principal, se provoca un fallo de página, y el sistema operativo solicita la página al resto de nodos.

     Es importante resaltar que el uso de esta de memoria basada en páginas trae como ventaja el mejor aprovechamiento de la memoria, puesto que las transacciones se realizan de forma rápida, óptima y eficaz, ofreciendo un servicio de calidad a todos sus clientes.


Read Users' Comments ( 2 )