Sunteți pe pagina 1din 18

Unidad 4: Memoria Compartida Distribuida

Los sistemas de Memoria Compartida Distribuida (MCD), son sistemas que, mediante software,
emulan semntica de memoria compartida sobre hardware que ofrece soporte solo para
comunicacin mediante paso de mensajes. Este modelo permite utilizar una red de estaciones de
trabajo de bajo costo como una maquina paralela con grandes capacidades de procesamiento y
amplia escalabilidad, siendo a la vez fcil de programar.
El objetivo principal de estos sistemas es permitir que un multicomputador pueda ejecutar
programas escritos para un multiprocesador con memoria compartida
Cada uno de los nodos en un sistema de MCD aporta una parte de su memoria local para construir
un espacio global de direcciones virtuales que ser empleado por los procesos paralelos 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.

4.1 Configuraciones de memoria compartida


distribuida.
COMPUTACIN PARALELA
Un computador paralelo es un conjunto de procesadores capaces de cooperar en la solucin de un
problema. El problema se divide en partes. Cada parte se compone de un conjunto de
instrucciones. Las instrucciones de cada parte se ejecutan simultneamente en diferentes CPUs.
Tcnicas computacionales que descomponen un problema en sus tareas y pistas que pueden ser
computadas en diferentes mquinas o elementos de proceso al mismo tiempo.
Por qu utilizar computacin paralela?

Reducir el tiempo de procesamiento

Resolver problemas de gran embergadura.

Proveer concurrencia.

Utilizar recursos remotos de cmputo cuando los locales son escasos.

Reduccin de costos usando mltiples recursos "baratos" en lugar de costosas


supercomputadoras.

Ampliar los lmites de memoria para resolver problemas grandes.

El mayor problema de la computacin paralela radica en la complejidad de sincronizar unas tareas


con otras, ya sea mediante secciones crticas, semforos o paso de mensajes, para garantizar la
exclusin mutua en las zonas del cdigo en las que sea necesario.
La computacin paralela est penetrando en todos los niveles de la computacin, desde
computadoras masivamente paralelas usados en las ciencias de larga escala computacional, hasta
servidores mltiples procesadores que soportan procesamiento de transacciones. Los principales
problemas originados en cada uno de las reas bsicas de la informtica (por ejemplo, algoritmos,
sistemas, lenguajes, arquitecturas, etc.) se vuelven an ms complejos dentro del contexto de
computacin paralela.

DE CIRCUITOS, BASADOS EN BUS, ANILLO O CON CONMUTADOR


Existen varias formas de implantar fsicamente memoria compartida distribuida, a continuacin se
describen cada una de ellas.

Memoria basada en circuitos: Existe una nica rea de memoria y cada micro tiene su
propio bus de datos y direcciones (en caso de no tenerlo se vuelve un esquema centralizado)

MCD basada en bus: En este esquema los micros comparten un bus de datos y
direcciones por lo que es ms barato de implementar, se necesita tener una memoria cach
grande y sumamente rpida.

Multiprocesadores tipo bus.

Conexin entre CPU y memoria se hace a travs de cables paralelos:


o Algunos transmiten las direcciones y datos que el CPU quiere leer o escribir

o Otros envan o reciben datos


o El resto para controlar las transferencias.

Dicha coleccin de cables se conoce con el nombre de bus.

Buses pueden ser parte del chip, pero en la mayora de los sistemas los buses son
externos y son usados para conectar circuitos impresos.

CPU.

Una forma simple de construir multiprocesadores es conectarlos en un bus con ms de un

MCD basada en anillos: Es ms tolerante a fallos, no hay coordinador central y se privilegia


el uso de la memoria ms cercana.

Multiprocesadores basados en anillo.

Ejemplo Memnet: un espacio de direcciones se divide en una parte privada y otra compartida.
La parte privada:
o se divide en regiones cada mquina cuenta con memoria para su pila, datos y cdigos no
compartidos.
Parte compartida:
o comn a todas las mquinas y se guarda de forma consistente mediante un protocolo de
hardware parecido a los de bus se divide en bloques de 32 bytes, (unidad transferencia)

MCD basada en conmutador: Varios micros se conectan entre s en forma de bus formando un
grupo, los grupos estn interconectados entre s a travs de un conmutador. Cuando se realiza una
operacin de memoria se intenta realizar dentro del grupo, de lo contrario pasa al conmutador para
que lo redirecciones a otro grupo.

Multiprocesadores con conmutador.


En anillo o bus, el hecho de aadir un CPU satura el ancho de banda del bus o anillo

Dos mtodos para solucionar el problema:


o 1. Reducir la cantidad de comunicacin
o 2. Incrementar la capacidad de comunicacin

Una forma de reducir la cantidad de comunicacin es el ocultamiento trabajo adicional en esta


rea:
o mejorar protocolo de ocultamiento
o optimizar el tamao del bloque
o incrementar la localidad de las referencias a memoria.

Sin embargo siempre se querr aadir ms CPUs y no habr ms ancho de banda en el bus.

4.2 Modelos de consistencia.


Un modelo de consistencia de memoria especifica las garantas de consistencia que un sistema
MCD realiza sobre los valores que los procesos leen desde los objetos, dado que en realidad
acceden sobre una rplica de cada objeto y que mltiples procesos pueden actualizar los objetos.
La duplicidad de los bloques compartidos aumenta el rendimiento, pero produce un problema de
consistencia entre las diferentes copias de la pgina en caso de una escritura.
Si cada escritura es necesario actualizar todas las copias el envi de las paginas por red provoca
que el tiempo de espera aumente demasiado convirtiendo el mtodo en impracticable.

CARACTERISTICAS DE CONSISTENCIA

Mantener consistencia no es algo simple.

Un simple acceso a memoria puede requerir un gran nmero de paquetes a ser enviados.

ESTRICTA, CASUAL, SECUENCIAL, DEBIL, DE LIBERACION Y DE ENTRADA


CONSISTENCIA ESTRICTA: El modelo de consistencia ms restrictivo es llamado consistencia
estricta y es definido por la siguiente condicin cualquier lectura sobre un tem de dato X retorna un
valor correspondiente con la ms reciente escritura sobre X.
CONSISTENCIA CASUAL: Es un debilitamiento de la consistencia secuencial. Se hace una
diferenciacin entre eventos que estn potencialmente relacionados en forma casual y aquellos
que no.
La condicin a cumplir para que unos datos sean casualmente consistentes es:
Escrituras que estn potencialmente relacionados en forma casual deben ser vistas por todos los
procesos en el mismo orden.
Esta secuencia es permitida con un almacenamiento casualmente consistente o con un
almacenamiento consistente en forma estricta.
La condicin a cumplir para que unos datos sean causalmente consistentes es:Escrituras que
estn potencialmente relacionadas en forma causal deben ser vistas por todos los procesos en el
mismo orden.
Escrituras concurrentes pueden ser vistas en un orden diferente sobre diferentes mquinas.
Esta secuencia es permitida con un almacenamiento causalmente consistente, pero no con un
almacenamiento secuencialmente consistente o con un almacenamiento consistente en forma
estricta.

CONSISTENCIA SECUENCIAL: La consistencia secuencial es una forma ligeramente ms dbil de


la consistencia estricta. Satisface la siguiente condicin:
El resultado de una ejecucin es el mismo si las operaciones (lectura y escritura) de todos los
procesos sobre el dato fueron ejecutadas en algn orden secuencial y las operaciones de cada
proceso individual aparecen en esta operaciones de cada proceso individual aparecen en esta
secuencia en el orden especificado por su programa
a) Un dato almacenado secuencialmente consistente.
b) Un dato almacenado que no es secuencialmente consistente.
CONSISTENCIA DBIL: Los accesos a variables de sincronizacin asociadas con los datos
almacenados son secuencialmente consistentes.
Propiedades:
No se permite operacin sobre una variable de sincronizacin hasta que todas las escrituras
previas de hayan completado. No se permiten operaciones de escritura o lectura sobre tems de
datos hasta que no se hayan completado operaciones previas sobre variables de sincronizacin.
CONSISTENCIA LIBERACIN (RELEASE): El modelo de consistencia release, RC, se basa en el
supuesto de que los accesos a variables compartidas se protegen en secciones crticas empleando
primitivas de sincronizacin, como por ejemplo locks. En tal caso, todo acceso esta precedido por
una operacin adquiere y seguido por una operacin release. Es responsabilidad del programador
que esta propiedad se cumpla en todos los programas.
Puesto que ningn otro proceso, ni local ni remoto, puede acceder a las variables que han sido
modificadas mientras se encuentren protegidas en la seccin critica, la actualizacin de cualquier
modificacin puede postergarse hasta el momento en que se lleva a cabo la operacin relase.
Propagacin de Actualizaciones bajo RC y LRC de cdigo sin proteger. En consecuencia obtuvo
un valor inconsistente para la variable leda.

4.3 MCD en base de pginas.

Cada CPU cuenta con su propia memoria y no pueden referenciar memoria remota
directamente.

Cuando direccin CPU se encuentra en una pgina que reside en una mquina remota:
1.

Se notifica al sistema operativo

2.

Sistema solicita dicha pgina con un mensaje.

Tanto ubicacin como acceso son realizados a nivel software.


Ejemplos: IVY y Mirage
El esquema de MCD propone un espacio de direcciones de memoria virtual que integre la memoria
de todas las computadoras del sistema, y su uso mediante paginacin. Las pginas quedan
restringidas a estar necesariamente en un nico ordenador. Cuando un programa intenta acceder a
una posicin virtual de memoria, se comprueba si esa pgina se encuentra de forma local. Si no se
encuentra, se provoca un fallo de pgina, y el sistema operativo solicita la pgina al resto de
computadoras.
El sistema funciona de forma anloga al sistema de memoria virtual tradicional, pero en este caso
los fallos de pgina se propagan al resto de ordenadores, hasta que la peticin llega al ordenador

que tiene la pgina virtual solicitada en su memoria local. A primera vista este sistema parece ms
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 trfico de pginas excesivo.
Una mejora dirigida a mejorar el rendimiento sugiere dividir el espacio de direcciones en una zona
local y privada y una zona de memoria compartida, que se usar nicamente por procesos que
necesiten compartir datos. Esta abstraccin se acerca a la idea de programacin mediante la
declaracin explcita de datos pblicos y privados, y minimiza el envo de informacin, ya que slo
se enviarn los datos que realmente vayan a compartirse.

DISEO REPLICA GRANULARIDAD CONSISTENCIA


Hay dos razones principales para la replicacin de datos:

Confiabilidad

Continuidad de trabajo ante cada de la rplica, mayor cantidad de copias mejor proteccin
contra la corrupcin de datos.

Rendimiento
El SD escala en nmero
Escala en rea geogrfica (disminuye el tiempo de acceso al dato) Consulta simultnea de los
mismos datos.
GRANULARIDAD.
Se refiere a la especificidad a la que se define un nivel de detalle en una tabla, es decir, si
hablamos de una jerarqua la granularidad empieza por la parte ms alta de la jerarqua, siendo la
granularidad mnima, el nivel ms bajo.
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.
Los modelos de consistencia se presentan divididos en dos conjuntos:

Modelos de consistencia centrados en los datos.

Modelos de consistencia centrados en el cliente.

4.4 MCD en base a variable.

Munin:
1.

Consistencia de liberacin.

2.

Protocolos mltiples.

3.

Directorios.

4.

Sincronizacin.

Midway:
1.

Consistencia de entrada.

2.

Implementacin.

La comparticin falsa se produce cuando dos procesos se pelean el acceso a la misma pgina de
memoria, ya que contiene variables que requieren los dos, pero estas no son las mismas. Esto
pasa por un mal diseo del tamao de las pginas y por la poca relacin existente entre variables
de la misma pgina.
En los MCD basados en variables se busca evitar la comparticin 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 pginas o en la
misma pgina muchas variables del mismo tipo, en este protocolo es muy importante declarar las
variables compartidas.
En los MCD basados en objetos se busca el acceso a datos por medio de la encapsulacin de la
informacin. Y repartida a travs de la red, estos objetos sern definidos por el Programador y las
CPUs cambiaran los estados segn procedan con los accesos.

MCD BASADA EN VARIABLES COMPARTIDAS


El problema del false sharing puede eliminarse si se utiliza una granularidad ms tan fin tan fina,
como las entidades que usualmente se comparten en los programas paralelos:
Las variables. De ser as, el problema ahora consiste en cmo mantener registro de las variables
replicadas. Adems, es probable que sea ms conveniente utilizar una poltica de actualizacin y
no de invalidacin, puesto que en la implementacin debe ser posible identificar escrituras a
variables individuales.

4.5 MCD en base a objetos.


Nace como respuesta a la creciente popularizacin de los lenguajes orientados por objetos.
Los datos se organizan y son transportados en unidades de objetos, no unidades de pginas.
Es un modelo de programacin de DSM de alto nivel.
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. Otra de las restricciones de
este modelo es que todos los accesos a los objetos compartidos han de realizarse mediante
llamadas a los mtodos de los objetos, con lo que no se admiten programas no modulares y se
consideran incompatibles.
Un ejemplo de un sistema de MCD que utiliza una granularidad a nivel de variable compartida es
Munin, una de las primeras implementaciones de MCD. Munin permite la ubicacin de variables
individuales en pginas diferentes, de modo que se pueda utilizar el hardware de paginacin para
identificar los accesos a las variables compartidas.

UNIDAD 4. Memoria Compartida Distribuida.


Los sistemas de Memoria Compartida Distribuida (MCD) [50], [51] son sistemas que, mediantesoftware,
emulan semntica de memoria compartida sobre hardware que ofrece soporte solo para comunicacin
mediante paso de mensajes. Este modelo permite utilizar una red de estaciones de trabajo de bajo costo como
una maquina paralela con grandes capacidades de procesamiento y amplia escalabilidad, siendo a la vez fcil
de programar. El objetivo principal de estos sistemas es permitir que un multicomputador pueda ejecutar
programas escritos para un multiprocesador con memoria compartida
Cada uno de los nodos en un sistema de MCD aporta una parte de su memoria local para construir
unespacio global de direcciones virtuales que sera empleado por los procesos paralelos 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 travs de la red, con el consecuente overhead que
esto conlleva. Por esta razn los sistemas de MCD tienen un comportamiento no uniforme respecto a los
accesos a memoria. Sin embargo, a diferencia de los sistemas NUMA, en este caso los procesadores no tienen
acceso a memoria remota en forma directa. Es necesario que medie un componente de software para permitir
los accesos que no son locales.

4.1 Configuraciones Memoria Compartida Distribuida


Los sistemas de memoria compartida distribuida (DSM) representan la creacin hibrida de dos tipos de
computacin paralelos: la memoria distribuida en sistemas multiprocesador y los sistemas distribuidos. Ellos
proveen la abstraccin de memoria compartida en sistemas con memorias distribuidas fsicamente y
consecuentemente combinan las mejores caractersticas de ambos enfoques. Debido a esto, el concepto de
memoria compartida distribuida es reconocido como uno de los enfoques mas atractivos para la creacin de
sistemas escalables, de alto rendimiento de sistemas multiprocesador
4.1.1 De Circuitos Basados en Bus, anillo o con conmutador
Multiprocesadores basados en un bus.
Para evitar que dos o ms CPUs intenten el acceso a la memoria al mismo tiempo, se necesita algn tipo de
arbitraje del bus. El CPU debe pedir permiso para conseguir el bus. La concesin puede hacerse de forma
centralizada, utilizando un dispositivo de arbitraje de bus, o de forma descentralizada, donde el primer CPU
que realice una solicitud en el bus ganar cualquier conflicto.
La desventaja es la sobrecarga del bus.
Una solucin sera equipar a cada CPU con un cach husmeador.
Un protocolo en particular comn es el de escritura a travs del cach. Cuando un CPU lee por primera vez

una palabra de memoria, esa palabra es llevada por el bus y guardada en el cach del CPU solicitante.
Puede suceder que una palabra en particular se oculte en dos o ms CPU al mismo tiempo.

Operacin de lectura.

Si la palabra no esta en el cach, entonces buscarla en la memoria y copiarla a su


cach.

Si la palabra esta en el cach, tomar el dato de ah.

Operacin de escritura

Si ningn CPU tiene la palabra en su cach, entonces la palabra es actualizada en


memoria, como si el ocultamiento no hubiera sido utilizado.

Si el CPU (que realiza la escritura) tiene la nica copia de la palabra, se actualiza su


cach y tambin la memoria mediante el bus.

Si dos o ms CPU tienen la palabra, entonces se actualiza la palabra en el cach y en la


memoria, y se invalidan las entradas de esa palabra en los cahs de los otros CPU. As la
palabra slo la tendr la memoria y un colo cach.Una alternativa a invalidar otras entradas
de cach es actualizarlas todas, pero esto puede resultar ms lento.

Una ventaja de este protocolo es que es fcil de entender e implantar, la desventaja es


quetodas las escrituras utilizan el bus.

Existe otro tipo de protocolos como el protocolo de membresa. Una versin de este
protocolo plantea lo siguiente. Se manejan bloques de cach, cada uno de los cuales puede
estar en uno de los siguientes estados:
1. INVALIDO: Este bloque de cach no contiene datos vlidos.
2. LIMPIO: La memoria est actualizada, el bloque puede estar en otros cachs.
3. SUCIO: La memoria es incorrecta; ningn otro cach puede contener al bloque.
La palabra permanece el estado SUCIO hasta que se elimine del cach donde se encuentra en
la actualidad por razones de espacio. En este momento, desaparece de todos los cachs y se escribe en la
memoria. Este protocolo tiene tres propiedades importantes:
1. La consistencia se logra haciendo que todos los cachs husmeen el bus.
2. El protocolo se integra dentro de la unidad de administracin de memoria.
3. Todo el algoritmo se realiza en un ciclo de memoria.

La desventaja es que no funciona para multiprocesadores de mayor tamao y nada es vlido para la memoria
compartida distribuida.

Multiprocesadores basados en un anillo

Ejemplo: Memnet
En Memnet, un espacio de direcciones se divide en una parte privada y una compartida. La parte compartida
se divide en bloques de 32 bytes, unidad mediante la cual se realizan las transferencias entre las mquinas.
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. 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:

1. VALIDO: El bloque esta presente en el cach y est actualizado.


2. EXCLUSIVO: La copia local es la nica.
3. ORIGEN: Se activa si sta es la mquina origen del bloque.
4. INTERRUPCION: Se utiliza para forzar interrupciones.
5. POSICION: Indica la localizacin del bloque en el cach si esta presente y es vlido.
6. Protocolo Memnet.
7. Lectura.

Cuando un CPU desea leer una palabra de la 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, coloca 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.
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.
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.
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.

4.2 Modelos De Consistencia

El alto trfico de pginas por la red que puede provocar un sistema de MCD obliga a la utilizacin de
memoria local en cada nodo para almacenar copias de pginas frecuentemente usadas, en la misma forma en
que un cach ayuda a mejorar el desempeo de un sistema multiprocesador fuertemente acoplado. Sin
embargo, la incorporacin de estos cachs introduce un problema de coherencia para las mltiples copias que
pueden existir de cada pgina.
La actualizacin de las pginas modificadas puede llevarse a cabo de distintas maneras. En primer lugar,
puede emplearse un protocolo de actualizacin: Se enva las pginas actualizadas a todos los nodos que
mantienen copias. Otra opcin es simplemente enviar mensajes de invalidacin para las copias, de modo que
la actualizacin se lleve a cabo por demanda. Finalmente, puede enviarse diffs que codifiquen los cambios a
las pginas y que permitan construir la versin actualizada a partir de una pgina original y mltiples
modificaciones. Esta ltima opcin es la que se emplea en los protocolos que soportan mltiples escritores
simultneos sobre una pgina, con el objetivo de reducir el problema de false sharing. Sea cual sea el caso
aqu se emplea simplemente el trmino actualizacin.
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 actualizacin es vista en forma instantnea por todos los nodos en el sistema.
Aunque ste sera el ideal para cualquier programador, en la prctica es imposible de implementar y mucho
menos en una red de computadores.
Los primeros sistemas de MCD empleaban protocolos rgidos que implementaban un modelo casi estricto, el
modelo de consistencia secuencial, SC. 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 podra 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 actualizacin, provocando una alta tasa de comunicacin por la red y por consiguiente un
desempeo muy pobre del sistema en general.
Con el objetivo de mejorar el rendimiento, disminuyendo la cantidad de mensajes de consistencia que es
necesario enviar, se ha propuesto modelos de consistencia ms relajados, en el sentido de que son menos
rigurosos en la actualizacin de la memoria compartida. Los programadores deben tener conciencia de esto y
programar de acuerdo al modelo establecido. Las restricciones seran mayores conforme se relaje el modelo,
pero a la vez se disminuir la cantidad de comunicacin necesaria para mantener la memoria consistente.
Cabe resaltar que, por lo general, estas restricciones no representan un gran obstculo, dadas las tcnicas de
programacin normalmente aplicadas.

El modelo Release Consistency, RC, se basa en el supuesto de que los accesos a variables compartidas se
protegen en secciones crticas empleando primitivas de sincronizacin, como locks.
En este caso, todo acceso est precedido por una operacin adquiere y seguido por una operacin release.
Puesto que ningn otro proceso, ni local ni remoto, puede acceder a las variables modificadas protegidas en la
seccin crtica hasta tener control del lock, la actualizacin de cualquier modificacin puede postergarse hasta
el momento en que se lleva a cabo la operacin release. El release no se completa hasta que la actualizacin se
haya llevado a cabo en todos los nodos donde haya copias.
El modelo Lazy Release Consistency, LRC, es una modificacin del anterior, que intenta no hacer trabajo
innecesario, evitando actualizar copias que no seran utilizadas posteriormente.
En este caso, la actualizacin se retarda en cada nodo hasta que algn proceso ejecute un acquire, que es el
momento en que verdaderamente se requieren en ese nodo los datos actualizados.
El modelo Scope Consistency, ScC, se basa en la definicin de mbitos de consistencia, o simplemente
scopes. Un scope es el entorno respecto al cual se llevan a cabo referencias a memoria.

Es decir, nicamente se garantiza que las modificaciones realizadas dentro de un scope sern visibles dentro
de ese scope. Puede visualizarse un scope como todas las secciones crticas que se encuentran protegidas por
un mismo lock. El intervalo en el cual un scope est abierto en un proceso dado se denomina una sesin. Por
ejemplo, cuando un proceso se est ejecutando en su seccin crtica.
Cualquier modificacin llevada a cabo dentro de una sesin del scope se hace visible a otros procesos que
activen sesiones en ese scope. No se garantiza que sean visibles las actualizaciones hechas fuera de la sesin.
El modelo Causal Consistency, CC, determina las actualizaciones que deben propagarse de acuerdo a una
relacin de causalidad entre los accesos a memoria. Dos escrituras a la memoria estn causalmente
relacionadas si el producto de una de ellas puede depender del producto de la otra, a travs de una lectura. De
acuerdo a este modelo, las escrituras que estn causalmente relacionadas deben verse en el mismo orden en
todos los nodos. El resto de las actualizaciones no tienen restriccin en su propagacin.
Existe gran cantidad de modelos de consistencia que no han sido mencionados aqu. La eleccin de los
modelos descritos se bas en la probada aplicabilidad que han tenido en implementaciones reales de sistemas
de MCD. Cabe mencionar Ivy, TreadMarks, y Brazos.
4.2.1 Estricta Causal Secuencial Dbil, de liberacin y de entrada
Estricta Causal Secuencial Dbil
Consistencia Estricta
El modelo de consistencia ms restrictivo es llamado consistencia estricta y es definido por la siguiente
condicin: Cualquier lectura sobre un tem de dato x retorna un valor correspondiente con la ms reciente
escritura sobre x:
a)
Un almacenamiento estrictamente consistente.
b)
Un almacenamiento que no es estrictamente consistente.
Consistencia Causal
El modelo de consistencia causal (Hutto and Ahamad, 1990) es un debilitamiento de la consistencia
secuencial. Se hace una diferenciacin entre eventos que estn potencialmente relacionados en forma causal y
aquellos que no. Las operaciones que no estn causalmente relacionadas se dicen concurrentes.
Consistencia secuencial
La consistencia secuencial es una forma ligeramente ms dbil de la consistencia estricta. Satisface la
siguiente condicin:
El resultado de una ejecucin es el mismo si las operaciones (lectura y escritura) de todos los procesos sobre
el dato fueron ejecutadas en algn orden secuencial y las operaciones de cada proceso individual aparecen en
esta operaciones de cada proceso individual aparecen en esta secuencia en el orden especificado por su
programa.
Consistencia Dbil
Los accesos a variables de sincronizacin asociadas con los datos almacenados son secuencialmente
consistentes.
4.3 MCD En Base A Paginas
El esquema de MCD propone un espacio de direcciones de memoria virtual que integre la memoria de todas
las computadoras del sistema, y su uso mediante paginacin. Las pginas quedan restringidas a estar
necesariamente en un nico ordenador. Cuando un programa intenta acceder a una posicin virtual de
memoria, se comprueba si esa pgina se encuentra de forma local. Si no se encuentra, se provoca un fallo de
pgina, y el sistema operativo solicita la pgina al resto de computadoras.
El sistema funciona de forma anloga al sistema de memoria virtual tradicional, pero en este caso los fallos de
pgina se propagan al resto de ordenadores, hasta que la peticin llega al ordenador que tiene la pgina virtual
solicitada en su memoria local. A primera vista este sistema parece ms 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 trfico de pginas excesivo.
Una mejora dirigida a mejorar el rendimiento sugiere dividir el espacio de direcciones en una zona local y
privada y una zona de memoria compartida, que se usar nicamente por procesos que necesiten compartir
datos. Esta abstraccin se acerca a la idea de programacin mediante la declaracin explcita de datos

pblicos y privados, y minimiza el envo de informacin, ya que slo se enviarn los datos que realmente
vayan a compartirse.

4.3.1 Diseo, Replica, Granularidad Y Consistencia


Diseo bsico.
La idea DSM es sencilla: intentar emular la cache de un multiprocesador mediante MMU y el software de
sistema operativo. En una DSM el espacio de direcciones se separa en pedazos los cuales estn dispersos en
todos los procesadores del sistema. Cuando un procesador hace referencia a una direccin que no es local,
ocurre un sealamiento y el software DSMtrae el pedazo que contiene la direccin y reinicia la instruccin
suspendida, que puede entonces concluir con xito.
Replica.
Una mejora al sistema bsico, que ayuda al desempeo en gran medida, consiste en duplicarlos pedazos
exclusivos para la lectura. Otra posibilidad es duplicar los pedazos exclusivos lectura y uno para lectura y
escritura. Sin embargo si un pedazo duplicado sbitamente se modifica, hay que realizar una accin especial
para evitar la existencia de varias copias inconsistentes.
Granularidad.
La primera implementacin de un sistema de MCD basado en pginas fue Ivy. Otras posibilidades son los
sistemas basados en variables compartidas y los basados en objetos. En los sistemas basados en pginas la
granularidad de la memoria se delinea al nivel de pgina de memoria. Esto quiere decir que la mnima unidad
reverenciable por el sistema de MCD es la pgina, no pudiendo hacer distincin entre variables distintas
almacenadas en la misma pgina. A pesar de que el uso de una granularidad a nivel de pagina puede
introducir problemas como el false sharing, tambin permite mantener el overhead producido por la
administracin de la memoria distribuida dentro de parmetros razonables. Esto se debe a que es posible hacer
uso de las caractersticas del hardware para el manejo de la memoria virtual, disponibles en la mayora de los
computadores.

Consistencia.
En Informtica, en 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 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.
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.
Tipos de Consistencia:
Consistencia secuencial
Consistencia de causalidad
Consistencia liberada
Consistencia eventual
Consistencia delta
Consistencia PRAM (tambin conocido como consistencia FIFO)
Consistencia dbil
Consistencia vector campo

4.4 Mcd En Base a Variables


La comparticion falsa se produce cuando dos procesos se pelean el acceso a la misma pagina de memoria, ya
que contiene variables que requieren los dos, pero estas no son las mismas. Esto pasa por un mal diseo del
tamao de las paginas y por la poca relacin existente entre variables de la misma pagina.
En los MCD basados en variables se busca evitar la comparticion 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 paginas o en la misma pagina muchas variables del mismo
tipo, en este protocolo es muy importante declarar las variables comparitdas.

4.5 Mcd En Base a 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. Otra de las restricciones de este modelo es que
todos los accesos a los objetos compartidos han de realizarse mediante llamadas a los mtodos de los objetos,
con lo que no se admiten programas no modulares y se consideran incompatibles.

S-ar putea să vă placă și