O documento discute memória compartilhada distribuída (DSM), comparando-a com troca de mensagens. Apresenta modelos de programação, algoritmos, consistência de dados e desafios de cada abordagem.
2. • Introdução
• DSM x Troca de Mensagens
• Arquitetura
• Algoritmos
• Modelos de Consistência
• Bibliografia
3. • Distribuited Shared Memory (DSM)
• “Abstração usada para o compartilhamento de dados
entre computadores que não compartilham memória
física.” - Colouris, Dollimore & Kindberg
4. • Memória compartilhada
▫ memória física global de um sistema igualmente acessível
por todos processadores
• Memória distribuída
▫ cada processador tem sua própria memória privada;
comunicação por mensagens
5. • Memória compartilhada distribuída
▫ as memórias são distribuídas fisicamente em cada nó, mas
todos os processadores podem endereçar essa memória
6. • Modelo de Programação
▫ Dados compartilhados diretamente por processos
▫ Não há encapsulamento de variáveis
▫ DSM
write(endereço, dados)
var d = read(endereço)
▫ Troca de Mensagens
send(destinatário, dados)
receive(dados)
▫ No DSM torna-se necessário mecanismos de controle de
concorrência
7. • Eficiência
▫ Experiências: programas paralelos para DSM podem ser
executados tão bem quanto equivalentes escritos com o
paradigma de troca de mensagens para um número
específico de computadores
▫ Não há generalização (resultado depende de muitos fatores)
8. • Persistência
▫ DSM
Um processo pode deixar dados em uma posição de memória
específica (esperada), para que outro processo examine o
conteúdo a ser executado, gerando persistência.
▫ Troca de Mensagens
Processos são executados ao mesmo tempo.
9. • Simplicidade
▫ DSM
Programação mais simples
Programador não se preocupa com comunicação entre
processos
Comunicação: processo escreve dados na memória, a serem
lidos por outros processos
Sincronização: seções críticas, semáforos, monitores.
▫ Troca de Mensagens
Várias dificuldades:
Controle de Fluxo
Mensagens perdidas
Bloqueio
10.
11. • Algoritmos:
▫ Algoritmo do Servidor Central
▫ Algoritmo da Migração
▫ Algoritmo da Replicação para Leitura
▫ Algoritmo da Replicação Total
• Problemas:
▫ Consistência dos dados
▫ Velocidade de resposta
▫ Coerência dos dados
12. • Nó central
▫ Administra todos os dados
• Primitivas de comunicação:
▫ Read
▫ Write
• Proibir a replicação e migração dos dados.
• O servidor é fator crítico na performance dos sistema.
• Possibilidade de mais de um servidor.
13. • Leitura simples/ Escrita simples
• Armazenamento local
▫ Redução da latência.
• Bloqueio acontece no nível de página.
▫ Reduzir o tamanho da tabela de lock.
• Localização de páginas:
▫ Servidor central
▫ Broadcasting
▫ Servidor distribuído fixo
gerente do bloco
▫ Servidor distribuído dinâmico
probable owner
14. • Leitura múltipla/ Escrita simples
• Somente um processador possui permissão para
atualizar uma cópia replicada em um dado momento
• Localização de páginas necessário.
• Invalidação das outras cópias:
▫ Write Invalidate
▫ Write Update (alternativa)
• Write Invalidate x Write Update:
▫ Write Update: Uso intenso da rede.
▫ Write Invalidade: Necessidade de busca do bloco na hora
do uso.
15. • Leitura múltipla/ Escrita múltipla
• Semelhante ao de replicação para leitura.
• Um novo elemento chamado de seqüenciador.
• Seqüenciador:
▫ Atribuir um número a cada alteração feita em um dado
replicado
▫ Atualizar todas as cópias na ordem que as alterações foram
executadas
16. • Manter a coerência a partir de limitações
• Exemplo:
▫ a e b são variáveis armazenadas na DSM
▫ Limitação: sempre a = b
▫ Dois ou mais processos executando o seguinte código
a = a+1
b = b+1
▫ Execução imprópria
a = b = 0
Processo 1:
a = a + 1 = 1
Processo 2 interrompe:
a = a + 1 = 2
b = b + 1 = 1
▫ Limitação quebrada
• Solução: seção crítica; semáforos; monitores
17. • Problema de réplicas e atualizações
▫ Dado é lido a partir de réplicas locais (> eficiência), mas as
atualizações devem ser propagadas a todos os gestores de
réplicas
• Exemplo:
▫ Variáveis a e b acessíveis por dois ou mais processos; ar e
br variáveis locais
▫ Processo 1:
br = b
ar = a
If (ar>=br) then print (“OK”)
▫ Processo 2:
a = a+1
b = b+1
18. • Exemplo (cont):
▫ a = b = 0
▫ Processo 1 deveria ler uma dessas:
ar = br = 0
ar = 1 e br = 0
ar = br = 1
Todas satisfazendo (ar>=br)
▫ Uma implementação DSM pode entregar as atualizações de
a e b fora de ordem para o gestor de réplicas durante o
processo 1
ar = 0 e br=1 pode ocorrer
19. • Modelos fortes aumentam a latência de acesso à
memória e a banda requerida, mas facilitam a
programação
• Modelos “relaxados” permitem reordenação, pipelining e
sobreposição, que aumentam a performance, mas
exigem alto envolvimento do programador na
sincronização de acesso a dados compartilhados
20. • Consistência Sequencial
▫ Garante que todos os nós recebam as alterações na mesma
ordem
▫ O efeito de cada acesso à memória deve ser executado
globalmente antes que o próximo acesso tenha permissão
para executar
▫ Dispendioso pois requer controle de concorrência e
ordenação de mensagens
21. • Consistência Sequencial
▫ No exemplo passado, a combinação ar=0 e br=1 não
ocorreria, pois o processo 1 estaria lendo valores
conflitantes com a ordem de programa do processo 2
22. • Consistência Sequencial
▫ Exemplo 1:
W(x)a -> escrita pelo processo para o item de dados x com o
valor a
R(x)b ->leitura pelo processo do item de dados x retornando
o valor b
P1 executa uma escrita para o item de dados x, modificando
o seu valor para a. Operação feita localmente e depois
propagada para os outros processos.
Mais tarde, P2 lê o valor NIL e, pouco tempo, depois lê a.
Existe um retardo para propagar a atualização de x para P2.
23. • Consistência Sequencial
▫ Exemplo 2:
P1 executa uma escrita para o item de dados x, modificando
o seu valor para a.
Depois, P2 realiza outra escrita, substituindo x por b.
P3 e P4 primeiro lêem o valor b e, mais tarde, o valor a
Operação de escrita do processo P2 ocorreu antes à do
processo P1
O modelo (a) é sequencialmente consistente
O modelo (b) não é sequencialmente consistente, pois nem
todos os processos vêem a mesma intercalação de operações
de escrita (acaba em resultados finais diferentes)
24. • Consistência Causal
▫ Distinção entre eventos potencialmente relacionados por
causalidade e os que não são
▫ Se o evento b é causado ou influenciado por um evento
anterior a, a causalidade requer que todos vejam primeiro
a, para depois ver b
▫ Operações não relacionadas por causalidade são
concorrentes
▫ Escritas potencialmente relacionadas por causalidade
devem ser vistas por todos os processos na mesma ordem;
escritas concorrentes podem ser vistas em ordem diferente
25. • Consistência Causal
▫ Exemplo 1:
Sequência de eventos permitida na consistência por
causalidade, mas proibida na sequencial
Escritas W2(x)b e W1(x)c são concorrentes -> não exige que
todos os processos as vejam na mesma ordem
26. • Consistência Causal
▫ Exemplo 2:
Em (a), W2(x)b potencialmente dependente de W1(x)a
porque b pode ser resultado de um cálculo que envolva o
valor lido por R2(x)a. As duas escritas são relacionadas por
causalidade, portanto temos uma violação na ordenação das
operações
27. • Consistência Causal
▫ Exemplo 2:
Em (b), a leitura R(x)a foi removida, e W(x)b e W(x)a
agora são escritas concorrentes. Assim, há uma sequência
correta de eventos em um depósito consistente por
causalidade
28. • Consistência Causal
▫ Exemplo 2:
Em (b), a leitura R(x)a foi removida, e W(x)b e W(x)a
agora são escritas concorrentes. Assim, há uma sequência
correta de eventos em um depósito consistente por
causalidade
29. • Consistência Causal
▫ Exemplo 2:
Em (b), a leitura R(x)a foi removida, e W(x)b e W(x)a
agora são escritas concorrentes. Assim, há uma sequência
correta de eventos em um depósito consistente por
causalidade
30. • Weak Consistency
▫ Nem toda operação de escrita precisa ser vista pelos outros
processos
▫ acesso a variável de sincronização (S) diz quando
sincronizar valores - aumenta trabalho de programadores
31. Bibliografia
• Colouris, Dollimore, Kindberg. Distribuited Systems: Concepts and Design, Third Edition
• http://www.fisiocomp.ufjf.br/anapaula/SD/SD_aula_16.pdf (último acesso em 21/05/2012)
• http://web.fe.up.pt/~pfs/aulas/sd2009/at/20cons.pdf (último acesso em 21/05/2012)
• http://www.tlc-networks.polito.it/oldsite/anapaula/Aula_Cap07a.pdf (último acesso em
21/05/2012)
• http://www.adonaimedrado.pro.br/principal/index.php?
option=com_content&view=article&id=57&Itemid=92 (último acesso em 21/05/2012)
• http://www.inf.ufrgs.br/gppd/disc/cmp134/trabs/T1/991/DSM/DSM-Hardware.
html#_Toc455993147 (último acesso em 21/05/2012)
• http://www.ic.unicamp.br/~ranido/mc704/DSM.pdf (último acesso em 21/05/2012)
• http://www.inf.ufsc.br/~frank/INE5418/2.5.DSM-Folhetos.pdf (último acesso em 21/05/2012)
• http://www.inf.pucrs.br/~fldotti/sod/dsm.PDF (último acesso em 21/05/2012)