Eduardo Elael 
Pedro de Vasconcellos
• Introdução 
• DSM x Troca de Mensagens 
• Arquitetura 
• Algoritmos 
• Modelos de Consistência 
• Bibliografia
• 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
• 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
• 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
• 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
• 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)
• 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.
• 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
• 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
• 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.
• 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
• 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.
• 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
• 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
• 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
• 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
• 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
• 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
• 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
• 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.
• 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)
• 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
• 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
• 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
• 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
• 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
• 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
• 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
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)

Memória Compartilhada Distribuída (DSM)

  • 1.
    Eduardo Elael Pedrode Vasconcellos
  • 2.
    • Introdução •DSM x Troca de Mensagens • Arquitetura • Algoritmos • Modelos de Consistência • Bibliografia
  • 3.
    • Distribuited SharedMemory (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 compartilhadadistribuída ▫ as memórias são distribuídas fisicamente em cada nó, mas todos os processadores podem endereçar essa memória
  • 6.
    • Modelo deProgramaçã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
  • 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 acoerê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 deré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 fortesaumentam 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)