Title: Memoria Compartida Distribuida
1 Memoria Compartida Distribuida
Universidad Simón BolÃvar Departamento de
Computación y T.I Sistemas de operación
III CI-4822
Prof. Yudith Cardinale Sept - Dic 2010
2Introducción TaxonomÃa de Computadores
Paralelos y Distribuidos
Fuertemente acoplados
Débilmente acoplados
3Introducción TaxonomÃa de Computadores
Paralelos y Distribuidos
- Multiprocesadores
- Tienen memoria compartida
- Son sistemas altamente acoplados cuando se envÃa
un mensaje el retardo es corto y la tasa es alta.
Comunes en sistemas paralelos.
- Multicomputadores
- Cada procesador tiene su memoria privada.
- Sistemas débilmente acoplados el retardo es
notable y la tasa es baja. Son más comunes en
sistemas distribuidos.
Bus es una sola red, cable o cualquier otro
medio que conecta todas las máquinas. Switch
puede haber conexiones de máquina a máquina (en
distintas organizaciones).
4Introducción
- Sistemas con Memoria Compartida
- Soporte de Software
- Resuelven problenas de secciones crÃticas
- Primitivas de sincronización semáforos,
contadores, secuenciadores, monitores. - Comunicación por espacios de memoria compartidos
- Soporte de Hardaware
- Limitado en la escalabilidad
- DifÃcil de construir
- El acceso a la memoria es un cuello de botella
- ( Es difÃcil diseñar una máquina donde varios
procesadores utilicen la misma memoria. Si la
arquitectura está basada en bus, no es escalable.
Con switches se obtiene una mayor escalabilidad
pero son costosos, lentos, complejos)
5Introducción
- Sistemas con Memoria Distribuida
- Soporte de Software
- Pase de mensajes trae complicaciones adicionales
como pérdida de mensajes, pérdida de orden, etc. - RPC
- RMI
- Protocolos de comunicación Buffering, bloqueo
... - Soporte de Hardware
- Fácil de construir
- No está limitada la escalabilidad
6Sistemas de Memoria Compartida Distribuida
- Toma las ventajas de los enfoques anteriores
software de los sistemas de memoria compartida y
el hardware de los sistemas de memoria
distribuida - Colección de estaciones de trabajo conectadas por
una red, compartiendo un único espacio de memoria
virtual paginado - La ubicación de los datos, su movimiento, etc, lo
maneja el sistema de memoria compartida
distribuida. - Implementado sobre pase de mensajes
7Introducción Sistemas de Memoria Compartida
Distribuida
- Soporte por Hardware Paginación
- Li, 1986 y Li and Hudak, 1989 fueron los
primeros en proponer el paradigma de Memoria
Compartida Distribuida - Paginación en el modelo más simple, una página
reside sólo en un procesador. Una referencia a
una página causa una falla de página que atrapa
el SOP. Este último envÃa un mensaje a la máquina
remota, para solicitar la página. - Es un sistema fácil de programar y fácil de
construir pero el desempeño es pobre. Puede
causar mucho tráfico de red - Impone restricciones al programador
8Introducción Sistemas de Memoria Compartida
Distribuida
- Soporte por Software
- Compartiendo estructuras de datos
- No se comparte toda la memoria sólo se comparten
algunas estructuras a un nivel de abstracción más
alto - Se puede hacer por replicación pero se debe
resolver los problemas de consistencia - Se puede hacer por compartimiento pero hay
problemas de comunicación y cuello de botella
9Introducción Sistemas de Memoria Compartida
Distribuida
- Soporte por Software (cont.)
- Compartiendo objetos encapsulados
- Los datos no se acceden directamente, existen
métodos para realizar las lecturas y
actualizaciones - El compartimiento puede ser a un nivel de
abstracción muy alto.
10Arquitecturas de Memoria Compartida
- Los multiprocesadores de Memoria Compartida
constituyen la inspiración de los sistemas de
memoria compartida distribuida
11Arquitecturas de Memoria Compartida
- Memoria con circuitos (on-chip-memory)
Es posible pero es complicado, costoso e inusual
12Arquitecturas de Memoria Compartida
- Multiprocesadores basados en buses
13Arquitecturas de Memoria Compartida
- Protocolo de consistencia write-through cache-
opciones de implementación - Ante la escritura se invalidan los datos
replicados - Ante la escritura se actualizan todas las
réplicas - Caracterizar los bloques del cache
- Inválido no contiene datos válidos
- Limpio la memoria está actualizada, el bloque
puede estar en otros cachés - Sucio la memoria está incorrecta, ningún otro
cache puede contenerlo
14Arquitecturas de Memoria Compartida
- Protocolo de consistencia write-through cache
Invalida la entrada en su cache
15Arquitecturas de Memoria Compartida
- Protocolo de consistencia write-through cache
- En lugar de invalidar se puede actualizar las
copias ante un write, pero las actualizaciones
son más costosas porque requieren de más ciclos
de memoria - Es simple de entender e implementar
- Todas las escrituras usan el bus lo que causa
pobre desempeño - Es poco escalable en cuanto a número de CPUs.
16Arquitecturas de Memoria Compartida
- Protocolo de consistencia write-once
- Supone que una vez que un CPU se apodera de un
dato, es difÃcil que otro lo requiera - El caché es dividido en bloques que pueden estar
en uno de estos tres estados - Inválido no contiene datos válidos
- Limpio la memoria está actualizada, el bloque
puede estar en otros caches - Sucio la memoria está incorrecta, ningún otro
cache puede contenerlo - La idea es que si varios quieren leer, comparten
el dato y puede estar en varios caches. Si el
dato es de escritura sólo un cache lo puede
contener y realiza sólo actualizaciones locales
17Arquitecturas de Memoria Compartida
- Protocolo de consistencia write-once
Limpio
Limpio
18Arquitecturas de Memoria Compartida
- Protocolo de consistencia write-once (cont.)
Sucio
Inválido
Inválido
Sucio
19Arquitecturas de Memoria Compartida
- Protocolo de consistencia write-once (cont.)
Sucio
inválido
inválido
20Arquitecturas de Memoria Compartida
- Protocolo de consistencia write-once (cont.)
- La consistencia se logra haciendo que todos los
cachés husmeen el bus. - El protocolo se integra dentro de la unidad de
administración de memoria (hardware)? - Todo el algoritmo se realiza en un ciclo de
memoria - Este protocolo no es válido para memoria
compartida distribuida
21Arquitecturas de Memoria Compartida
- Multiprocesadores basados en anillo
- Memnet (1988) tiene un espacio de direcciones
que se divide en una parte privada y una
compartida - La parte privada se divide en regiones
- La parte compartida se divide en bloques de 32
bytes. - Todas las máquinas están conectadas por un
anillo donde circula un token de solicitudes - Primera arquitectura de memoria compartida
distribuida
22Arquitecturas de Memoria Compartida
Dispositivo Memnet
Home memory
Blocks table
caché
b
V
E
O
I
Posición
MMU
0
CPU
1
MEMORIA PRIVADA
n
...
23Arquitecturas de Memoria Compartida
- Protocolo de lectura
- Examina la tabla de bloques para determinar si el
bloque está presente, si está, la solicitud es
satisfecha. Si no está presente - Espera el token de solicitudes, coloca la
solicitud en el token, suspende el CPU. El
paquete de solicitud contiene la dirección
deseada y un campo vacÃo de 32 bytes - A medida que el token circula, cada CPU verifica
si contiene el dato. Si lo tiene lo coloca en el
campo vacÃo y modifica el encabezado de la
solicitud para inhibir la acción de los otros
CPUs. Si no lo contiene pasa el token. Si el bit
Exclusivo está encendido, se limpia. - Si la máquina receptora no tiene espacio libre en
el caché para alojar el nuevo dato, selecciona
uno al azar (que no sea de los que tienen el bit
de Origen encendido) y lo envÃa a su máquina
origen.
24Arquitecturas de Memoria Compartida
- Protocolo de escritura, se distinguen tres casos
- El bloque deseado está presente y el bit
Exclusivo está encendido (única copia), entonces
se actualiza localmente. - El bloque deseado está presente y el bit
Exclusivo no está encendido (existen más copias),
entonces se envÃa un paquete de invalidación para
que las otras máquinas invaliden este bloque.
Cuando el paquete de invalidación regresa, se
enciende el bit Exclusivo y se actualiza el dato. - Si el bloque no está presente, se envÃa un
paquete que combina una solicitud y una
invalidación. La primera máquina que tenga el
bloque lo pone en la solicitud e invalida su
entrada, el resto de las máquinas sólo invalidan
su entrada. Cuando el paquete retorna al emisor
inicial se realiza la actualización
25Arquitecturas de Memoria Compartida
- Multiprocesadores con conmutador (NUMA)
- Tanto los multiprocesadores basados en bus como
los basados en anillo no pueden escalar a más de
64 procesadores porque degradan el desempeño - Se puede mejorar la capacidad del bus si se
reduce la cantidad de comunicación (uso de
caché)? - Se puede mejorar la capacidad del bus si se
incrementa la capacidad de comunicación
(organizando los buses en jerarquÃa)?
26Arquitecturas de Memoria Compartida
- Multiprocesadores con conmutador-NUMA (cont)
Cluster
Bus inter clusters
Bus intra cluster
Bus inter super clusters
27Arquitecturas de Memoria Compartida
- Multiprocesadores con conmutador-NUMA (cont)
- Arquitectura DASH (Directory Architecture for
Shared Memory)? - Compuesta de 16 clusters (0 al 15)?
- Cada cluster contiene un bus, 4 CPUs, 16 MB de
memoria y dispositivos de I/O. - La cantidad de memoria total es de 256 MB,
dividida en 16 regiones de 16MB cada una. - El cluster 0 contiene las direcciones desde 0 a
16MB, el cluster 1 contiene las direcciones desde
16MB hasta 32MB y asà sucesivamente - La unidad de transferencia es un bloque de 16
bytes
28Arquitecturas de Memoria Compartida
- Arquitectura DASH (arquitectura NUMA)?
- Directorios cada cluster tiene un directorio que
contiene la información de cuáles clusters tienen
copias de sus bloques. El tamaño es de 1M de
entradas de 18 bits cada una.
0
15
0
BLOQUES
ESTADO UNCACHED La única copia está aquà CLEAN
memoria correcta, puede haber
más copias DIRTY memoria incorrecta, sólo un
caché tiene el bloque
...
1023
29Arquitecturas de Memoria Compartida
- Arquitectura DASH
- En todo momento cada bloque tiene un propietario
- Para un bloque uncached o clean el cluster de
origen del bloque es el propietario - Para un bloque dirty el cluster que contiene la
única copia es el propietario - Para escribir en un bloque clean primero hay que
encontrar e invalidar todas las copias existentes - (el cluster propietario es el que en ese momento
es el responsable del bloque y no necesariamente
es el cluster origen)?
30Arquitecturas de Memoria Compartida
- Arquitectura DASH
- Protocolo de lectura
- Chequea en su propio caché, si no está
- Pone el requerimiento en el bus local, si algún
caché local lo tiene se realiza una copia
caché-to-caché. Si el bloque está clean sólo se
realiza la copia, si el bloque está dirty se
informa al directorio de origen para que cambie
el estado a dirty and shared - Si el bloque no está presente en ningún caché del
cluster, se envÃa el requerimiento al cluster de
origen del bloque (se determina por los 4 bits
más altos de su dirección)? - El cluster origen puede ser el mismo que realizó
el requerimiento, en este caso no se envÃa
fÃsicamente el paquete de requerimiento
31Arquitecturas de Memoria Compartida
- Arquitectura DASH
- Protocolo de lectura (cont)
- El hardware del directorio del cluster de origen
examina el estado del bloque - Uncached or clean el hardware trae el bloque de
la memoria principal, lo envÃa al cluster
solicitante y marca en el directorio que tal
bloque está cached en el cluster solicitante. - Dirty el hardware del directoio busca la
identidad del cluster que lo contiene y le hace
forward del requerimiento. El cluster final que
contiene el bloque dirty envÃa el bloque al
cluster solicitante, lo marca como clean (ahora
es compartido) y envÃa un mensaje al cluster
origen para que actualice la memoria y le cambie
el estado a clean
32Arquitecturas de Memoria Compartida
- Arquitectura DASH
- Protocolo de escritura
- Si está en su caché y es dirty, la escritura
procede - Si está en su caché y es clean se envÃa un
paquete al cluster origen requiriendo que todas
las otras copias sean invalidadas - Si no está en su caché pero está en el cluster se
realiza una copia caché-to-caché o
memory-to-caché. Si el estado es clean todas las
copias deben invalidarse por el cluster origen - Si no está en el cluster, se envÃa el
requerimiento al cluster origen, se distinguen
tres casos
33Arquitecturas de Memoria Compartida
- Arquitectura DASH
- Protocolo de escritura (cont)
- Uncached se marca dirty y se envÃa al cluster
que lo requiere. - Clean se invalidan todas las copias y se sigue
el proceso de uncached - Dirty se hace forward del requerimiento al
cluster que actualmente tiene el bloque. Este
cluster invalida su propia copia y satisface el
requerimiento
34Arquitecturas de Memoria Compartida
- Otros multiprocesadores NUMA (Non Uniform Memory
Access) - Cm System
- BBN Butterfly
- Propiedades de los multiprocesadores NUMA
- Son posibles los accesos a memorias remotas
- Los accesos a las memorias remotas son más lentos
que los accesos a la memoria local - Los tiempos de acceso remoto no son escondidos
por caching. Los accesos se manejan con esquemas
de paginación (page fault), replicación (o
mapping) de páginas read-only, si son read-write
se invalidan, se usa un page-scanner.
35Comparación de los Sistemas de Memoria Compartida
Hardware-controlled caching
Software-controlled caching
Managed by language runtime system
Managed by MMU
Managed by OS
Single- bus Multi- Pro.
Switched Multi- Pro.
Page- Based DSM
Object- Based DSN
Shared- Variable DSM
Numa
Linda, Orca CORBA
Firefly
Dash
Buterfly
Ivy
Munin
Cache block
Cache block
Page
Page
Data Structure
Object
Remote access in hardware
Remote access in software
36Multiprocesadores
DSM
NUMA Pág. Var. Comp. Obj.
37DSM Aspectos de Diseño e Implementación
- Replicación
- Estructura
- Localización de los datos
- PolÃticas de escritura
- PolÃtica de reemplazo de páginas
- Modelos de consistencia
38 Replicación
- Replicar los bloques de sólo lectura
- Replicar todos los bloques en este caso se
tienen que tomar acciones para mantener la
consistencia de los datos.
0
2
1
14
3
15
Cpu1
Cpu4
39Estructura
- Orientada a bytes
- Una palabra
- Un bloque (varias palabras)?
- Una página
- Un segmento (múltiples páginas)?
- Variables compartidas
- Objetos
40Localización de los datos
- Localización del propietario posee o bien la
copia de los datos que se puede escribir, o una
de las copias de lectura y una lista con los
otros nodos que poseen copias de lectura. Es al
único que se le permite actualizar los datos. - Un propietario fijo cada pieza de datos se
asigna a un propietario fijo. A los otros
procesadores no se les da acceso directo a los
datos y deben comunicarse con el propietario cada
vez que desean hacer operaciones de escritura.
41Localización de los datos
- Propietario que varÃa dinamicamente el problema
es localizar al propietario. Se introduce el
concepto de manager, que tiene la información
sobre quién es el propietario actual de los
datos. - Centralizado el manager es un único nodo. Los
accesos a los datos se negocian con el manager.
Es un cuello de botella.
Request
Reply
Request
Reply
Request
Request
Reply
42Localización de los datos
- Distribuido la información sobre los
propietarios se distribuye entre los nodos. Cómo
se localiza al propietario de un item de datos? - Fijo hay un esquema fijo para localizar al
manager de los datos. El manager informa cuál es
el propietario, quien puede variar
dinámicamente. - Dinámico
- Broadcast se envÃa un broadcast para encontrar
quién es el propietario de los datos.
Ineficiente cuando la red subyacente no soporta
el broadcast. - Dinámico Cada procesador tiene el propietario
probable de cada item. Es una especie de pista.
Si la pista es incorrecta, al menos representa el
comienzo de una cadena de procesadores a partir
de la cual se llega hasta el propietario. Cuando
se encuentra cuál es el propietario actual, se
modifica la pista. Alternativa un broadcast
intermitente.
43Localización de los datos
- Localización de las copias
- Broadcast trabaja bien si los mensajes nunca se
pierden (broadcast confiable)? - Copysets dice qué procesadores almacenan qué
páginas. Cuando se necesita invalidar una página
el propietario o el manager envÃa un mensaje a
cada procesador que contenga la página y espera
por un Ack. La invalidación culmina cuando se han
recibido los acks.
44Localización de los Datos
45PolÃticas de Escritura
- Se debe asegurar que un procesador no lea un dato
invalido después que se ha realizado una
operación de escritura. Existen dos opciones - Escritura actualizante
- Escritura Invalidante
46PolÃticas de Escritura
- Escritura actualizante
- Las escrituras de un proceso se realizan en forma
local y se envÃan a todos los procesos que posean
una copia del dato. - Permite múltiples lectores y múltiples
escritores. - Se requieren broadcast o multidifusiones
ordenadas (en algunos casos se utiliza un ente
centralizado que garantiza el orden). De esta
forma todos los procesos ven todas las
actualizaciones en el mismo orden que se
realizan. - Orca es un sistema que implementa escritura
actualizante. Munin soporta escritura
actualizante como una opción.
47PolÃticas de Escritura
- Escritura invalidante
- Múltiples lectores/un solo escritor.
- Cuando un proceso intenta escribir un dato, se
envÃa un mensaje a quienes tienen copias para
invalidarlas y se esperan los Acks, antes que la
escritura tenga lugar. - Las actualizaciones se propagan cuando se leen
los datos y se pueden realizar varias
actualizaciones consecutivas sin necesidad de
realizar ninguna comunicación. - Se tienen que invalidar copias de sólo lectura
48PolÃticas de Reemplazo
- Mejores candidatos a vÃctima
- Una página de la que existe otra copia cuyo dueño
es otro procesador - Una página replicada de la cual se es
propietario. - Cuando no existen réplicas La página válida
usada menos recientemente (LRU). Qué se hace con
la victima? - Escribirla a disco
- Pasarla al propietario
- Estático
- Dinámico procesador que tenga mas memoria libre.
49Modelos de Consistencia de la Memoria
- Un modelo de consistencia de memoria Mosberger
1993 especifica las garantÃas de consistencia
que un sistema otorga sobre los valores que los
procesos leen de los objetos, dado que en
realidad acceden a una réplica de cada objeto y
que múltiples procesos pueden actualizar los
objetos.
50Modelos de Consistencia de la Memoria
- La principal interrogante que se plantea al
caracterizar un modelo de consistencia de memoria
es cuándo se realiza un acceso de lectura sobre
una posición de memoria, qué accesos de escritura
son candidatos para que sus valores sean
proporcionados en la lectura? - Cualquier lectura realizada antes.
- La última lectura,
- Etc.
51Modelos de Consistencia de la Memoria
- Los modelos que estudiaremos son
- Consistencia estricta
- Consistencia secuencial
- Consistencia causal
- PRAM
- Consistencia débil
- Consistencia relajada
52Consistencia 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. - En un solo procesador la consistencia estricta es
lo esperado.
A 1 A 2 print(A)?
x
2 segs
53Consistencia Estricta
- En un sistema distribuido es razonable exigir
consistencia estricta? - Notación
- P1, P2 procesos
- W(x)a A la variable x se le asigna el valor a
- R(y)b Se lee b en la variable y
- Se supone que el valor inicila de todas las
variables es 0.
P1 W(x)1
Tiempo
P2 W(x)2
54Consistencia Estricta
T1 petición de escritura desde P1 T2 Un proceso
en P2 lee valor de x T3 llega petición de
escritura de P1 T4 Un proceso en P2 lee el valor
de X
55Consistencia Estricta
- Si hay un cambio en una zona de memoria, todas
las lecturas observarán el nuevo valor sin
importar cuán pronto se está haciendo la lectura
(respecto a la escritura) o dónde están
localizados los procesos que realizan las
operaciones. - Si se hace una lectura se obtiene el valor
actual, sin importar cuán rápido se realiza la
próxima escritura.
56Consistencia Secuencial(Lamport, 1979)?
- La consistencia estricta es prácticamente
imposible de implementar en un sistema
distribuido. - La experiencia demuestra que a un programador le
bastan modelos más débiles
57Consistencia Secuencial
- 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. Se respeta el orden de
los programas.
Los dos resultados son válidos desde el punto de
vista de consistencia secuencial
Write(x)?
Read(x)? Read(x)?
58Consistencia Secuencial
Las operaciones son atómicas
c1 print(a,b)? (c)?
a1 print(b,c)? (a)?
b1 print(a,c)? (b)?
000000 y 001001 son resultados inválidos
a 1 print (b,c)? b 1 print (a,c)? c
1 print(a,b)?
a 1 c 1 print (a,b)? print (a,c)? a
1 print(b,c)?
Los tres resultados son válidos y
las aplicaciones deben funcionar bien en
presencia de cualquiera de ellos
a 1 b 1 print (a,c)? print (b,c)? c
1 print(a,b)?
Prints 001011
Prints 101011
Prints 010111
59Consistencia Secuencial
- Un sistema de consistencia secuencial se puede
implementar utilizando un único servidor que
administra los datos compartidos. Todos los
procesos envÃan sus operaciones de lectura y
escrtitura al servidor que las ordena en forma
global.
60Consistencia Causal(Hutto and Ahamad, 1990)?
- 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. - Un read está relacionado causalmente con la
escritura que provee el dato que se ha leÃdo. - P1 escribe X
- P2 lee X escribe Y (Y puede depender del
valor leÃdo de X)?
61Consistencia Causal
- Si dos procesos escriben espontáneamente y
simultáneamente una variable, estos accesos no
están relacionados causalmente. - Las operaciones que no están relacionadas
causalmente se dice que son concurrentes
62Consistencia Causal
- Las escrituras relacionadas causalmente deben ser
vistas por todos los procesos en el mismo orden.
Las escrituras concurrentes pueden ser vistas en
un orden diferente, en diferentes máquinas.
concurrentes
Hay consistencia causal pero no
consistencia secuencial o consistencia estricta
63Consistencia Causal
P1 W(x)1
P2 R(x)1 W(x)2
Violación de la Consistencia Causal
P3 R(x)2
R(x)1
P4 R(x)1
R(x)2
P1 W(x)1
Una sucesión de eventos correcta con
Consistencia Causal
P2 W(x)2
P3 R(x)2
R(x)1
P4 R(x)1
R(x)2
64Consistencia Causal
- Implementación grafo de dependencia para
determinar cuáles operaciones son dependientes de
otras y cuáles son concurrentes. Un ente
centralizado.
65Consistencia PRAM (Pipelined RAM)(Lipton and
Sandberg 1988)?
- 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
Una sucesión correcta de eventos con
Consistencia PRAM
66Consistencia PRAM (Pipelined RAM)(Lipton and
Sandberg 1988)?
P1 W(x)1 W(x) 3
P2 R(x)1 W(x)2
P3 R(x)2
R(x)1 R(x) 3
P4 R(x)1
R(x)2 R(x) 3
67Consistencia PRAM
(c)?
(a)?
(b)?
a 1 if (b 0) kill (p2)?
b 1 if (a 0) kill (p1)?
(a)?
(b)?
68Consistencia PRAM
P1 muere, P2 muere, o no muere ninguno. En el
modelo PRAM pueden morir los dos procesos
a 1 if (b 0) kill (p2)? b 1 if ....
b 1 if (a 0) kill (p1)? a 1 If ...
69Consistencia Débil(Dubois et al. 1986)?
- Los modelos anteriores se consideran aún
restrictivos porque requieren que las escrituras
de un proceso se vean en orden. - Esto no siempre es necesario. Ej. Cuando se está
en una región crÃtica no es necesario propagar
valores intermedios sino los valores finales. - Para saber que se está en una región crÃtica se
requiere que se establezcan instrucciones
explÃcitas.
70Consistencia Débil(Dubois et al. 1986)?
- 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.
71Consistencia Débil(Dubois et al. 1986)?
- 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.
72Consistencia Débil
Variables ordinarias
73Consistencia Relajada(Gharachorloo et al., 1990)?
- Se proveen dos operaciones
- 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. - El programador es el responsable de colocar estas
operaciones correctamente en su programa
74Consistencia Relajada
- Realizar un acquire no garantiza que los cambios
realizados sean propagados al resto de las
máquinas en forma inmediata. - De forma similar, el realizar un release no
garantiza que se importen cambios realizados por
otras máquinas.
75Consistencia Relajada
- Posible implementación
- Existe un administrador de sincronización.
- En un acquire se solicita un acceso sobre un lock
al manger. Si no hay competencia el manager lo
otorga. - Al llegar al release se propagan los cambios a
otras máquinas . Al recibirse el Ack de todas las
máquinas se informa al manager de la liberación
del lock
76Modelos de Consistencia
77Modelos de Consistencia
78Conclusiones
- DSM es una abstracción de memoria compartida que
sirve de alternativa a la comunicación basada en
el pase de mensajes. - Su rendimiento es comparable al rendimiento de
pase de mensajes para ciertas aplicaciones
paralelas. El rendimiento depende en gran medida
de las aplicaciones. - Entre los principales aspectos de diseño e
implementación se encuentran la estructura, los
modelos de consistencia, la utilización de
protocolos de escritura actualizante o
invalidante y la granularidad.