Você está na página 1de 78

Universidad Simn Bolvar

Departamento de Computacin y T.I


Sistemas de operacin III
CI-4822

Memoria Compartida Distribuida


Prof. Yudith Cardinale
Sept - Dic 2010

Introduccin:
Taxonoma de Computadores
Paralelos y Distribuidos
Comp. Paralelos y
Distribuidos
Fuertemente
Dbilmente
acoplados
acoplados
Multiprocesadores
(Mem. Compartida)

Bus

Switched

Multicomputadores
(Mem. Privada)

Bus

Switched

Introduccin:
Taxonoma de Computadores
Paralelos y Distribuidos
Multiprocesadores
Tienen memoria
compartida
Son sistemas altamente
acoplados: cuando se
enva un mensaje el
retardo es corto y la tasa
es alta. Comunes en
sistemas paralelos.

Multicomputadores
Cada procesador tiene su
memoria privada.
Sistemas dbilmente
acoplados: el retardo es
notable y la tasa es baja.
Son ms comunes en
sistemas distribuidos.

Bus: es una sola red, cable o cualquier otro medio que conecta
todas las mquinas.
Switch: puede haber conexiones de mquina a mquina (en distintas
organizaciones).

Introduccin
Sistemas con Memoria Compartida:
Soporte de Software:
Resuelven problenas de secciones crticas
Primitivas de sincronizacin: semforos, contadores,
secuenciadores, monitores.
Comunicacin por espacios de memoria compartidos

Soporte de Hardaware:
Limitado en la escalabilidad
Difcil de construir
El acceso a la memoria es un cuello de botella
( Es difcil disear una mquina 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)

Introduccin
Sistemas con Memoria Distribuida:
Soporte de Software:
Pase de mensajes: trae complicaciones adicionales como
prdida de mensajes, prdida de orden, etc.
RPC
RMI
Protocolos de comunicacin: Buffering, bloqueo ...

Soporte de Hardware:
Fcil de construir
No est limitada la escalabilidad

Sistemas 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
Coleccin de estaciones de trabajo conectadas por
una red, compartiendo un nico espacio de memoria
virtual paginado
La ubicacin de los datos, su movimiento, etc, lo
maneja el sistema de memoria compartida distribuida.
Implementado sobre pase de mensajes

Introduccin: Sistemas de Memoria


Compartida Distribuida
Soporte por Hardware: Paginacin
[Li, 1986] y [Li and Hudak, 1989] fueron los primeros
en proponer el paradigma de Memoria Compartida
Distribuida:
Paginacin: en el modelo ms simple, una pgina reside
slo en un procesador. Una referencia a una pgina causa
una falla de pgina que atrapa el SOP. Este ltimo enva
un mensaje a la mquina remota, para solicitar la pgina.
Es un sistema fcil de programar y fcil de construir pero
el desempeo es pobre. Puede causar mucho trfico de red
Impone restricciones al programador

Introduccin: Sistemas de Memoria


Compartida Distribuida
Soporte por Software:
Compartiendo estructuras de datos:
No se comparte toda la memoria slo se comparten
algunas estructuras a un nivel de abstraccin ms alto
Se puede hacer por replicacin pero se debe resolver
los problemas de consistencia
Se puede hacer por compartimiento pero hay
problemas de comunicacin y cuello de botella

Introduccin: Sistemas de Memoria


Compartida Distribuida
Soporte por Software (cont.):
Compartiendo objetos encapsulados:
Los datos no se acceden directamente, existen
mtodos para realizar las lecturas y actualizaciones
El compartimiento puede ser a un nivel de
abstraccin muy alto.

Arquitecturas de Memoria Compartida


Los multiprocesadores de
Memoria Compartida
constituyen la inspiracin de
los sistemas de memoria
compartida distribuida

Arquitecturas de Memoria Compartida


Memoria con circuitos (on-chip-memory):
CPU

CPU

Mem

CPU

Mem

Es posible pero es complicado,


costoso e inusual
CPU

CPU

Arquitecturas de Memoria Compartida


Multiprocesadores basados en buses:
Snooping cache:
Alivia la sobrecarga
del bus y aumenta
el rendimiento

Problema

con el cache: Posibilidad de


Memoria Incoherente
Solucin:
Protocolo de consistencia write-through cache
Protocolo de consistencia write-once

Arquitecturas de Memoria Compartida


Protocolo de consistencia write-through cacheopciones de implementacin:
Ante la escritura se invalidan los datos replicados
Ante la escritura se actualizan todas las rplicas
Caracterizar los bloques del cache:
Invlido: no contiene datos vlidos
Limpio: la memoria est actualizada, el bloque puede
estar en otros cachs
Sucio: la memoria est incorrecta, ningn otro cache
puede contenerlo

Arquitecturas de Memoria Compartida


Protocolo de consistencia write-through cache:
Evento

Accin del cache del CPU que


realiza el evento

Accin de otros
caches

READ Miss

Trae el dato desde Memoria y


actualiza en cache

Ninguna Accin

READ Hit

Lee localmente del cache

Ninguna Accin

WRITE Miss Actualiza en Memoria y trae el Invalida la entrada en


dato a cache
su cache
WRITE Hit

Actualiza en Memoria y en
cache

Invalida la entrada en
su cache

Arquitecturas 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 ms
costosas porque requieren de ms ciclos de memoria
Es simple de entender e implementar
Todas las escrituras usan el bus lo que causa pobre
desempeo
Es poco escalable en cuanto a nmero de CPUs.

Arquitecturas de Memoria Compartida


Protocolo de consistencia write-once:
Supone que una vez que un CPU se apodera de un dato, es
difcil que otro lo requiera
El cach es dividido en bloques que pueden estar en uno de
estos tres estados:
Invlido: no contiene datos vlidos
Limpio: la memoria est actualizada, el bloque puede estar en
otros caches
Sucio: la memoria est incorrecta, ningn 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
slo un cache lo puede contener y realiza slo
actualizaciones locales

Arquitecturas de Memoria Compartida


Protocolo de consistencia write-once:
A

W1

W1 est en memoria y en el
cach de B en estado limpio.
La memoria est correcta

W1

A lee W1 desde la memoria,


B no es afectado.
La memoria est correcta

w1
Limpio

A
w1
Limpio

B
W1
Limpio

Arquitecturas de Memoria Compartida


Protocolo de consistencia write-once (cont.):
A

W2

W1

Sucio

Sucio

W1

A escribe un valor W2, B


husmea en el bus, ve la escritura
e invalida su entrada. La copia de
A se marca como sucia.

W1

A escribe un nuevo valor. sta


y todas las escrituras posteriores
se harn localmente sin usar
el bus.

Invlido

W3

w1

Invlido

Arquitecturas de Memoria Compartida


Protocolo de consistencia write-once (cont.):
A

W3

W1

W3

invlido

invlido Sucio

W1

C lee o escribe a W3, A ve la


solicitud al husmear el bus,
proporciona el valor e invalida
su entrada. C tiene ahora la
nica copia vlida.

El cach que tiene la ltima copia es el responsable de enviar una


seal a la memoria para que no responda ante una solicitud de otro
cach.
Mientras el dato no se actualice en memoria la nica copia
permaner en estado sucia. Permanecer en este estado hasta que
deba salir de cach por razones de espacio, en ese momento se
actualiza en memoria.

Arquitecturas de Memoria Compartida


Protocolo de consistencia write-once (cont.):
La consistencia se logra haciendo que todos
los cachs husmeen el bus.
El protocolo se integra dentro de la unidad de
administracin de memoria (hardware)
Todo el algoritmo se realiza en un ciclo de
memoria
Este protocolo no es vlido para memoria
compartida distribuida

Arquitecturas 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 mquinas estn conectadas por un anillo
donde circula un token de solicitudes
Primera arquitectura de memoria compartida
distribuida

Arquitecturas de Memoria Compartida


Dispositivo
Memnet
MMU cach

Home
Blocks
memory table

CPU

b V E O I Posicin
0
1

MEMORIA
PRIVADA

...
Los bloques read-only pueden
estar en varias mquinas.
Los bloques read-write deben
estar en una sola mquina (no
necesariamente la de origen)

n
b: nmero de bloque
V: bit vlido, el bloque est en el
cach y actualizado
E: bit exclusivo, copia nica
O: bit de origen
I: bit de interrupcin

Arquitecturas 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 direccin
deseada y un campo vaco de 32 bytes
A medida que el token circula, cada CPU verifica si contiene el
dato. Si lo tiene lo coloca en el campo vaco y modifica el
encabezado de la solicitud para inhibir la accin de los otros CPUs.
Si no lo contiene pasa el token. Si el bit Exclusivo est encendido,
se limpia.
Si la mquina 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 enva a su mquina origen.

Arquitecturas 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 ms copias), entonces se enva un
paquete de invalidacin para que las otras mquinas
invaliden este bloque. Cuando el paquete de invalidacin
regresa, se enciende el bit Exclusivo y se actualiza el dato.
Si el bloque no est presente, se enva un paquete que
combina una solicitud y una invalidacin. La primera
mquina que tenga el bloque lo pone en la solicitud e
invalida su entrada, el resto de las mquinas slo invalidan
su entrada. Cuando el paquete retorna al emisor inicial se
realiza la actualizacin

Arquitecturas de Memoria Compartida


Multiprocesadores con conmutador
(NUMA):
Tanto los multiprocesadores basados en bus
como los basados en anillo no pueden escalar a
ms de 64 procesadores porque degradan el
desempeo
Se puede mejorar la capacidad del bus si se
reduce la cantidad de comunicacin (uso de
cach)
Se puede mejorar la capacidad del bus si se
incrementa la capacidad de comunicacin
(organizando los buses en jerarqua)

Arquitecturas de Memoria Compartida


Multiprocesadores con conmutador-NUMA (cont):
A B C

A B C

A B C

A B C

A B C

A B C

A B C

A B C

A B C

Bus intra
cluster

Cluster
Bus inter
clusters
Bus inter
super clusters

Arquitecturas 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

Arquitecturas de Memoria Compartida


Arquitectura DASH (arquitectura NUMA)
Directorios: cada cluster tiene un directorio que
contiene la informacin de cules clusters tienen
copias de sus bloques. El tamao es de 1M de
entradas de 18 bits cada una.
0

15

BLOQUES 0

...
1023

CLUSTERS

ESTADO:
UNCACHED: La nica copia est aqu
CLEAN: memoria correcta, puede haber
ms copias
DIRTY: memoria incorrecta, slo un cach
tiene el bloque

Arquitecturas 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)

Arquitecturas de Memoria Compartida

Arquitectura DASH
Protocolo de lectura:
Chequea en su propio cach, si no est
Pone el requerimiento en el bus local, si algn cach local
lo tiene se realiza una copia cach-to-cach. Si el bloque
est clean slo 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 ningn cach del cluster,
se enva el requerimiento al cluster de origen del bloque
(se determina por los 4 bits ms altos de su direccin)
El cluster origen puede ser el mismo que realiz el
requerimiento, en este caso no se enva fsicamente el
paquete de requerimiento

Arquitecturas 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 enva 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 enva el bloque al cluster solicitante, lo marca
como clean (ahora es compartido) y enva un mensaje al
cluster origen para que actualice la memoria y le cambie
el estado a clean

Arquitecturas 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 enva 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 enva el requerimiento al
cluster origen, se distinguen tres casos:

Arquitecturas de Memoria Compartida

Arquitectura DASH
Protocolo de escritura (cont):
Uncached: se marca dirty y se enva 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

Arquitecturas 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 ms 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 paginacin (page
fault), replicacin (o mapping) de pginas read-only, si son
read-write se invalidan, se usa un page-scanner.

Comparacin de los Sistemas de


Memoria Compartida
Hardware-controlled caching
Managed by MMU
Singlebus
MultiPro.
Firefly

Cache
block

Switched
MultiPro.

Dash

Cache
block

Software-controlled caching
Managed by language runtime
system

Managed by OS

PageBased
DSM

Numa

Buterfly

Page

Remote access in hardware

Ivy

Page

SharedVariable
DSM

Munin

Data
Structure

ObjectBased
DSN
Linda, Orca
CORBA

Object

Remote access in software

Multiprocesadores

DSM

NUMA

Pg.

Var. Comp.

Obj.

Espacio lineal de
memoria compartida

Si

Si

Si

Si

No

No

Operaciones posibles

R-W

R-W

R-W

R-W

R-W

General

El acceso remoto es
posible en Hw

Si

Si

Si

No

No

No

Es posible una memoria


no asociada a un CPU
particular

Si

Si

Si

No

No

No

Quien convierte los


accesos remotos a
memoria en mensajes

MMU

MMU

MMU

OS

Runtime
System

Runtime
System

Medio de transferencia

Bus

Bus

Bus

Red

Red

Red

La migracin la realiza

Hw

Hw

Sw

Sw

Sw

Sw

Unidad de transferencia

Bloque

Bloque

Pgina

Pgina

Var.
Compartida

Objeto

Mtodos de
encapsulamiento

No

No

No

No

No

Si

DSM: Aspectos de Diseo e


Implementacin
Replicacin
Estructura
Localizacin de los datos
Polticas de escritura
Poltica de reemplazo de pginas
Modelos de consistencia

Replicacin
Replicar los bloques de slo lectura
Replicar todos los bloques: en este caso se
tienen que tomar acciones para mantener la
consistencia de los datos.
0 1 2 3
0

14 15
13 15 5

Cpu1

Cpu4

Estructura
Orientada a bytes
Una palabra
Un bloque (varias palabras)
Una pgina
Un segmento (mltiples pginas)

Variables compartidas
Objetos

Localizacin de los datos

Localizacin 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.

Localizacin de los datos

Propietario que vara dinamicamente: el


problema es localizar al propietario. Se
introduce el concepto de manager, que tiene
la informacin sobre quin 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.

Manager
Request
Reply

Request

Owner

Reply

Manager
Request

Request

Owner
Reply

Localizacin de los datos

Distribuido: la informacin sobre los propietarios se


distribuye entre los nodos. Cmo se localiza al propietario
de un item de datos?
Fijo: hay un esquema fijo para localizar al manager de
los datos. El manager informa cul es el propietario,
quien puede variar dinmicamente.
Dinmico:

Broadcast: se enva un broadcast para encontrar quin es


el propietario de los datos. Ineficiente cuando la red
subyacente no soporta el broadcast.
Dinmico: 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 cul es el propietario
actual, se modifica la pista. Alternativa: un broadcast
intermitente.

Localizacin de los datos


Localizacin de las copias
Broadcast: trabaja bien si los mensajes nunca
se pierden (broadcast confiable)
Copysets: dice qu procesadores almacenan
qu pginas. Cuando se necesita invalidar una
pgina el propietario o el manager enva un
mensaje a cada procesador que contenga la
pgina y espera por un Ack. La invalidacin
culmina cuando se han recibido los acks.

Localizacin de los Datos


Cpu 1
3 4
2
4

Cpu 2
2 3 4
1
3
4

Cpu 3
1 2 3
5 2
4

Cpu 4
3 4
2

copyset

page

Polticas de Escritura
Se debe asegurar que un procesador no lea un
dato invalido despus que se ha realizado una
operacin de escritura. Existen dos opciones:
Escritura actualizante
Escritura Invalidante

Polticas de Escritura

Escritura actualizante:
Las escrituras de un proceso se realizan en forma local
y se envan a todos los procesos que posean una copia
del dato.
Permite mltiples lectores y mltiples 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 opcin.

Polticas de Escritura

Escritura invalidante:
Mltiples lectores/un solo escritor.
Cuando un proceso intenta escribir un dato, se enva 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
comunicacin.
Se tienen que invalidar copias de slo lectura

Polticas de Reemplazo
Mejores candidatos a vctima:
Una pgina de la que existe otra copia cuyo dueo
es otro procesador
Una pgina replicada de la cual se es propietario.
Cuando no existen rplicas: La pgina vlida usada
menos recientemente (LRU). Qu se hace con la
victima?
Escribirla a disco
Pasarla al propietario:
Esttico
Dinmico: procesador que tenga mas memoria libre.

Modelos de Consistencia de
la Memoria
Un modelo de consistencia de memoria
[Mosberger 1993] especifica las garantas
de consistencia que un sistema otorga sobre
los valores que los procesos leen de los
objetos, dado que en realidad acceden a una
rplica de cada objeto y que mltiples
procesos pueden actualizar los objetos.

Modelos de Consistencia de
la Memoria
La principal interrogante que se plantea al
caracterizar un modelo de consistencia de
memoria es: cundo se realiza un acceso de
lectura sobre una posicin 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.

Modelos de Consistencia de
la Memoria
Los modelos que estudiaremos son:
Consistencia estricta
Consistencia secuencial
Consistencia causal
PRAM
Consistencia dbil
Consistencia relajada

Consistencia Estricta
Cualquier lectura a la localidad de memoria x retorna el
valor almacenado por la ltima operacin de escritura (antes
de la lectura).
Supone la existencia de un tiempo global. Determinar cul
fue la escritura ms reciente no siempre es posible.
En un solo procesador la consistencia estricta es lo esperado.

A=1
A=2
print(A)

T3
T0
T1
T2
Write(x) Read(x)Write(x)Llega a B peticin de A para escribir X
(B)
(A)
(B)

A
2 segs

Consistencia Estricta
En un sistema distribuido es razonable exigir consistencia
estricta?
Notacin:
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
P2:

Tiempo
W(x)2

Consistencia Estricta
P1: W(x)1
P2:

R(x)0 R(x)1

P1: W(x)1
P2:
P3:

T1: peticin de escritura desde P1


T2: Un proceso en P2 lee valor de x
T3: llega peticin de escritura de P1
T4: Un proceso en P2 lee el valor de X

P1: W(x)1
W(x)2

P2:
R(x)2

P3:

W(x)2
R(x)1

Consistencia Estricta
Si hay un cambio en una zona de memoria, todas
las lecturas observarn el nuevo valor sin importar
cun pronto se est haciendo la lectura (respecto a
la escritura) o dnde estn localizados los procesos
que realizan las operaciones.
Si se hace una lectura se obtiene el valor actual,
sin importar cun rpido se realiza la prxima
escritura.

Consistencia Secuencial
(Lamport, 1979)

La consistencia estricta es prcticamente


imposible de implementar en un sistema
distribuido.
La experiencia demuestra que a un
programador le bastan modelos ms dbiles

Consistencia Secuencial
Cuando se ejecutan procesos en paralelo sobre
diferentes mquinas, cualquier mezcla de
ejecucin 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.
Write(x)

P1: W(x)1

P2:

Read(x)
Read(x)
P1: W(x)1

R(x)0 R(x)1 P2:

Los dos resultados


son vlidos
desde el punto de
vista de
consistencia
secuencial

R(x)1 R(x)1

Consistencia Secuencial
a=1
print(b,c)
(a)

a=1
print (b,c)
b=1
print (a,c)
c=1
print(a,b)

b=1
print(a,c)

c=1
print(a,b)
(c)

(b)

a=1
b=1
print (a,c)
print (b,c)
c=1
print(a,b)

a=1
c=1
print (a,b)
print (a,c)
a=1
print(b,c)

Las operaciones son


atmicas

000000 y 001001
son resultados
invlidos
Los tres resultados
son vlidos y las
aplicaciones deben funcionar
bien en presencia de cualquiera
de ellos

Prints: 001011 Prints: 101011 Prints: 010111

Consistencia Secuencial
Un sistema de consistencia secuencial se
puede implementar utilizando un nico
servidor que administra los datos
compartidos. Todos los procesos envan sus
operaciones de lectura y escrtitura al
servidor que las ordena en forma global.

Consistencia 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 estn potencialmente
relacionados en forma causal.
Un read est relacionado causalmente con la
escritura que provee el dato que se ha ledo.

P1 escribe X
P2 lee X escribe Y (Y puede depender del valor ledo de X)

Consistencia Causal
Si dos procesos escriben espontneamente y
simultneamente una variable, estos accesos
no estn relacionados causalmente.
Las operaciones que no estn relacionadas
causalmente se dice que son concurrentes

Consistencia 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
mquinas.
concurrentes

P1: W(x)1
P2:

W(x)3
R(x)1

W(x)2

P3:

R(x)1

R(x)3

P4:

R(x)1

R(x)2

Hay consistencia
causal pero no
consistencia
R(x)2
secuencial o consistencia
R(x)3
estricta

Consistencia Causal
P1: W(x)1
P2:

R(x)1 W(x)2

P3:

R(x)2 R(x)1

P4:

R(x)1 R(x)2

Violacin de la Consistencia
Causal

P1: W(x)1
P2:

Una sucesin de eventos correcta


con Consistencia Causal

W(x)2

P3:

R(x)2 R(x)1

P4:

R(x)1 R(x)2

Consistencia Causal
Implementacin: grafo de dependencia para
determinar cules operaciones son
dependientes de otras y cules son
concurrentes. Un ente centralizado.

Consistencia 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
P1: W(x)1
P2:

P3:
P4:

R(x)1 W(x)2

R(x)2 R(x)1
R(x)1 R(x)2

Una sucesin correcta de


eventos
con Consistencia PRAM

Consistencia PRAM
(Pipelined RAM)
(Lipton and Sandberg 1988)

P1: W(x)1 W(x) 3


P2:
P3:
P4:

R(x)1

W(x)2
R(x)2 R(x)1 R(x) 3
R(x)1 R(x)2 R(x) 3

Consistencia PRAM
a=1
print (b,c)
b=1
print (a,c)
c=1
print(a,b)

a=1
b=1
print (a,c)
print (b,c)
c=1
print(a,b)

(a)
a=1
if (b == 0) kill (p2)

(a)

(b)

b=1
print (a,c)
c=1
print (a,b)
a=1
print(b,c)

(c)

b=1
if (a == 0) kill (p1)

(b)

Consistencia PRAM
a=1
if (b == 0) kill (p2)

(a)

b=1
if (a == 0) kill (p1)

(b)

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 ...

Consistencia Dbil
(Dubois et al. 1986)

Los modelos anteriores se consideran an


restrictivos porque requieren que las escrituras de
un proceso se vean en orden.
Esto no siempre es necesario. Ej. Cuando se est
en una regin crtica no es necesario propagar
valores intermedios sino los valores finales.
Para saber que se est en una regin crtica se
requiere que se establezcan instrucciones
explcitas.

Consistencia Dbil
(Dubois et al. 1986)

Se introduce un nuevo tipo de variable: variables


de sincronizacin.
Los accesos a las variables de sincronizacin son
secuencialmente consistentes: todos los procesos
ven todos los accesos a las variables de
sincronizacin en el mismo orden.
No se permite el acceso a ninguna variable de
sincronizacin hasta que todas las escrituras
previas se hayan completado: Hacer una
sincronizacin despus de operaciones de escritura
obliga a que los nuevos valores se propaguen a
todas las memorias.

Consistencia Dbil
(Dubois et al. 1986)

El hacer una operacin de sincronizacin antes de


leer los datos, le garantiza a un proceso que leer
los ltimos valores.

Operacin de sincronizacin: garantiza que las


escrituras locales sean propagadas a todas las otras
mquinas y se actualiza la memoria actual con
escrituras hechas remotamente.

Consistencia Dbil
Variables ordinarias
P1: W(x)1 W(x)2 S
P2:

R(x)1 R(x)2 S

P3:

R(x)2 R(x)1 S

P1: W(x)1 W(x)2 S


P2:

S R(x)1

Consistencia 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 operacin se propagan los cambios
realizados a las variables protegidas al resto de las
mquinas.

El programador es el responsable de colocar estas


operaciones correctamente en su programa

Consistencia Relajada

Realizar un acquire no garantiza que los cambios


realizados sean propagados al resto de las
mquinas en forma inmediata.
De forma similar, el realizar un release no
garantiza que se importen cambios realizados por
otras mquinas.
P1: Acq(L) W(x)1 W(x)2 Rel(L)
P2:
P3:

Acq(L) R(x)2 Rel(L)


R(x)1

Consistencia Relajada
Posible implementacin:
Existe un administrador de sincronizacin.
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
mquinas . Al recibirse el Ack de todas las mquinas
se informa al manager de la liberacin del lock

Modelos de Consistencia
Consistencia: Modelos que
no usan operaciones de
sincronizacin

Descripcin

Estricta

Todos los accesos compartidos se observan en el


orden en el que se realizaron. Imposible de
implementar en DSM

Secuencial

Todos los procesos ven todos los accesos en el


mismo orden. Popular entre los programadores y
ampliamente usado. Desempeo pobre.

Causal

Todos los procesos ven los accesos compartidos,


relacionados causalmente, en el mismo orden

PRAM

Todos los procesos ven las escrituras de un


mismo proceso en el orden en el que se
realizaron. Las escrituras de distintos procesos no
siempre se ven en el mismo orden. Los
programadores (con estos dos ltimos modelos)
deben evitar instrucciones que slo trabajan con
consistencia secuencial

Modelos de Consistencia
Consistencia: Modelos con
Descripcin
operaciones de sincronizacin

Dbil

Relajada

Se garantiza que los datos


compartidos estn consistentes
despus de la operacin de
sincronizacin
Los datos compartidos estn
consistentes cuando se sale de la
regin crtica. Estos modelos
pueden ser ms eficientes pero
requieren ms esfuerzo del
programador

Conclusiones
DSM es una abstraccin de memoria compartida
que sirve de alternativa a la comunicacin 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 diseo e
implementacin se encuentran: la estructura, los
modelos de consistencia, la utilizacin de
protocolos de escritura actualizante o invalidante y
la granularidad.

Você também pode gostar