SlideShare uma empresa Scribd logo
1 de 31
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)

Mais conteúdo relacionado

Mais procurados

Padroes De Projeto
Padroes De ProjetoPadroes De Projeto
Padroes De Projeto
ejdn1
 
Gerência de Configuração
Gerência de ConfiguraçãoGerência de Configuração
Gerência de Configuração
Wagner Zaparoli
 
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Sérgio Souza Costa
 

Mais procurados (20)

Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
Base De Datos Activas Pro
Base De Datos Activas ProBase De Datos Activas Pro
Base De Datos Activas Pro
 
Memória Compartilhada Distribuída Conceitos e Algoritmos
Memória Compartilhada Distribuída Conceitos e AlgoritmosMemória Compartilhada Distribuída Conceitos e Algoritmos
Memória Compartilhada Distribuída Conceitos e Algoritmos
 
Java básico - Módulo 04: Estruturas de controle
Java   básico - Módulo 04:  Estruturas de controleJava   básico - Módulo 04:  Estruturas de controle
Java básico - Módulo 04: Estruturas de controle
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
Arquitetura Cliente-Servidor
Arquitetura Cliente-ServidorArquitetura Cliente-Servidor
Arquitetura Cliente-Servidor
 
Programação em Banco de Dados - Aula 16/08/2018
Programação em Banco de Dados - Aula 16/08/2018Programação em Banco de Dados - Aula 16/08/2018
Programação em Banco de Dados - Aula 16/08/2018
 
Padroes De Projeto
Padroes De ProjetoPadroes De Projeto
Padroes De Projeto
 
1.Introdução Banco de Dados
1.Introdução Banco de Dados1.Introdução Banco de Dados
1.Introdução Banco de Dados
 
Algoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso CompletoAlgoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso Completo
 
Gerência de Configuração
Gerência de ConfiguraçãoGerência de Configuração
Gerência de Configuração
 
apresentação base de dados
apresentação base de dadosapresentação base de dados
apresentação base de dados
 
Principais protocolos de rede
Principais protocolos de redePrincipais protocolos de rede
Principais protocolos de rede
 
Sistemas Distribuídos - Aula 07 - Servicos Web
Sistemas Distribuídos - Aula 07 - Servicos WebSistemas Distribuídos - Aula 07 - Servicos Web
Sistemas Distribuídos - Aula 07 - Servicos Web
 
Arquitetura cliente servidor
Arquitetura cliente servidorArquitetura cliente servidor
Arquitetura cliente servidor
 
Sistemas Operacionais - Aula 01 (Conceitos básicos de so)
Sistemas Operacionais - Aula 01 (Conceitos básicos de so)Sistemas Operacionais - Aula 01 (Conceitos básicos de so)
Sistemas Operacionais - Aula 01 (Conceitos básicos de so)
 
Padrões de Projeto
Padrões de ProjetoPadrões de Projeto
Padrões de Projeto
 
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
 
Utilizando views, stored procedures e triggers
Utilizando views, stored procedures e triggersUtilizando views, stored procedures e triggers
Utilizando views, stored procedures e triggers
 
Frameworks de desenvolvimento web
Frameworks de desenvolvimento webFrameworks de desenvolvimento web
Frameworks de desenvolvimento web
 

Destaque

Destaque (20)

Curso de Java - Antonio Alves - Aula 03
Curso de Java - Antonio Alves - Aula 03Curso de Java - Antonio Alves - Aula 03
Curso de Java - Antonio Alves - Aula 03
 
DQguru
DQguruDQguru
DQguru
 
Editor de Video Sony Vegas PRO
Editor de Video Sony Vegas PROEditor de Video Sony Vegas PRO
Editor de Video Sony Vegas PRO
 
FEBRL
FEBRLFEBRL
FEBRL
 
Design de Interação - Capítulo 8 - Design, Prototipação e Construção -
Design de Interação - Capítulo 8 - Design, Prototipação e Construção - Design de Interação - Capítulo 8 - Design, Prototipação e Construção -
Design de Interação - Capítulo 8 - Design, Prototipação e Construção -
 
Análise Comparativa: MP3 e AAC
Análise Comparativa: MP3 e AACAnálise Comparativa: MP3 e AAC
Análise Comparativa: MP3 e AAC
 
cARdapp - cardápio em realidade aumentada
cARdapp - cardápio em realidade aumentadacARdapp - cardápio em realidade aumentada
cARdapp - cardápio em realidade aumentada
 
Modelos de Cor
Modelos de CorModelos de Cor
Modelos de Cor
 
BitTorrent
BitTorrentBitTorrent
BitTorrent
 
Managing Innovation - 3rd edition – Capítulos 10 e 11
Managing Innovation - 3rd edition – Capítulos 10 e 11Managing Innovation - 3rd edition – Capítulos 10 e 11
Managing Innovation - 3rd edition – Capítulos 10 e 11
 
Curso de Java - Antonio Alves - Aula 01
Curso de Java - Antonio Alves - Aula 01Curso de Java - Antonio Alves - Aula 01
Curso de Java - Antonio Alves - Aula 01
 
Efeitos Visuais
Efeitos VisuaisEfeitos Visuais
Efeitos Visuais
 
Trabalhando com Chromakey
Trabalhando com ChromakeyTrabalhando com Chromakey
Trabalhando com Chromakey
 
Sistema gerenciadores de bancos de dados
Sistema gerenciadores de bancos de dadosSistema gerenciadores de bancos de dados
Sistema gerenciadores de bancos de dados
 
Edición de Video - Sony Vegas Pro
Edición de Video - Sony Vegas Pro Edición de Video - Sony Vegas Pro
Edición de Video - Sony Vegas Pro
 
Lógica de programação em java
Lógica de programação em javaLógica de programação em java
Lógica de programação em java
 
Modelos de Cor
Modelos de Cor Modelos de Cor
Modelos de Cor
 
Curso de java - Antonio Alves - aula 04
Curso de java - Antonio Alves -  aula 04Curso de java - Antonio Alves -  aula 04
Curso de java - Antonio Alves - aula 04
 
Escopo de variaveis
Escopo de variaveisEscopo de variaveis
Escopo de variaveis
 
Bluetooth Low Energy
Bluetooth Low EnergyBluetooth Low Energy
Bluetooth Low Energy
 

Semelhante a Memória Compartilhada Distribuída (DSM)

Banco de Dados Distribuídos
Banco de Dados DistribuídosBanco de Dados Distribuídos
Banco de Dados Distribuídos
Adail Viana Neto
 
Amostra Resolucao da Prova Sefaz 2007 Prof Jaime
Amostra   Resolucao da Prova Sefaz 2007   Prof JaimeAmostra   Resolucao da Prova Sefaz 2007   Prof Jaime
Amostra Resolucao da Prova Sefaz 2007 Prof Jaime
Walter Cunha
 

Semelhante a Memória Compartilhada Distribuída (DSM) (20)

Web Scale Data Management
Web Scale Data ManagementWeb Scale Data Management
Web Scale Data Management
 
Cap-6-Multiplrocessadores.pdf
Cap-6-Multiplrocessadores.pdfCap-6-Multiplrocessadores.pdf
Cap-6-Multiplrocessadores.pdf
 
Gfs slides
Gfs slidesGfs slides
Gfs slides
 
Apresentação PGDAY - Replicação Nativa - PostgreSQL
Apresentação PGDAY - Replicação Nativa - PostgreSQLApresentação PGDAY - Replicação Nativa - PostgreSQL
Apresentação PGDAY - Replicação Nativa - PostgreSQL
 
No sql std
No sql stdNo sql std
No sql std
 
Banco de Dados Distribuídos
Banco de Dados DistribuídosBanco de Dados Distribuídos
Banco de Dados Distribuídos
 
Alta Concorrência com Postgres
Alta Concorrência com PostgresAlta Concorrência com Postgres
Alta Concorrência com Postgres
 
Boas práticas na configuração de jobs no Kubernetes
Boas práticas na configuração de jobs no KubernetesBoas práticas na configuração de jobs no Kubernetes
Boas práticas na configuração de jobs no Kubernetes
 
Amostra Resolucao da Prova Sefaz 2007 Prof Jaime
Amostra   Resolucao da Prova Sefaz 2007   Prof JaimeAmostra   Resolucao da Prova Sefaz 2007   Prof Jaime
Amostra Resolucao da Prova Sefaz 2007 Prof Jaime
 
Google File System
Google File SystemGoogle File System
Google File System
 
Sistemas Distribuídos - Replicação de Banco de Dados
Sistemas Distribuídos - Replicação de Banco de DadosSistemas Distribuídos - Replicação de Banco de Dados
Sistemas Distribuídos - Replicação de Banco de Dados
 
Alta disponibilidade em ambiente GNU/Linux
Alta disponibilidade em ambiente GNU/LinuxAlta disponibilidade em ambiente GNU/Linux
Alta disponibilidade em ambiente GNU/Linux
 
MapReduce
MapReduceMapReduce
MapReduce
 
Escalabilidade horizontal com PostgreSQL e Pgpool II
Escalabilidade horizontal com PostgreSQL e Pgpool IIEscalabilidade horizontal com PostgreSQL e Pgpool II
Escalabilidade horizontal com PostgreSQL e Pgpool II
 
Conceitoseaplicaes
ConceitoseaplicaesConceitoseaplicaes
Conceitoseaplicaes
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
 
Processos e threads cap 02 (i unidade)
Processos e threads   cap 02 (i unidade)Processos e threads   cap 02 (i unidade)
Processos e threads cap 02 (i unidade)
 
Distribuição de Dados em Escala Global com Cassandra
Distribuição de Dados em Escala Global com CassandraDistribuição de Dados em Escala Global com Cassandra
Distribuição de Dados em Escala Global com Cassandra
 
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariaisRuby on Rails: um estudo de viabilidade em ambientes empresariais
Ruby on Rails: um estudo de viabilidade em ambientes empresariais
 
Gerência de Transações Distribuídas de Consultas
Gerência de Transações Distribuídas de ConsultasGerência de Transações Distribuídas de Consultas
Gerência de Transações Distribuídas de Consultas
 

Mais de Pedro de Vasconcellos

Mais de Pedro de Vasconcellos (6)

Gestão da Inovação - Produção acadêmica no Brasil
Gestão da Inovação - Produção acadêmica no BrasilGestão da Inovação - Produção acadêmica no Brasil
Gestão da Inovação - Produção acadêmica no Brasil
 
Redes Sociais
Redes SociaisRedes Sociais
Redes Sociais
 
Créditos de Carbono e MDL
Créditos de Carbono e MDLCréditos de Carbono e MDL
Créditos de Carbono e MDL
 
MapReduce
MapReduceMapReduce
MapReduce
 
Inteligência de enxames - Cardume (PSO + AFSA)
Inteligência de enxames - Cardume (PSO + AFSA)Inteligência de enxames - Cardume (PSO + AFSA)
Inteligência de enxames - Cardume (PSO + AFSA)
 
O computador e a contracultura
O computador e a contraculturaO computador e a contracultura
O computador e a contracultura
 

Memória Compartilhada Distribuída (DSM)

  • 1. Eduardo Elael Pedro de Vasconcellos
  • 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)