Documente Academic
Documente Profesional
Documente Cultură
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.
Proveer concurrencia.
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.
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.
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.
Sin embargo siempre se querr aadir ms CPUs y no habr ms ancho de banda en el bus.
CARACTERISTICAS DE CONSISTENCIA
Un simple acceso a memoria puede requerir un gran nmero de paquetes a ser enviados.
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.
2.
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.
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:
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.
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.
Operacin de escritura
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.
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:
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.
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.
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