• Nenhum resultado encontrado

TM X SM. Replicação de Variáveis Compartilhadas. Protocolo de Atualização Síncrono ORCA

N/A
N/A
Protected

Academic year: 2021

Share "TM X SM. Replicação de Variáveis Compartilhadas. Protocolo de Atualização Síncrono ORCA"

Copied!
54
0
0

Texto

(1)

Replicação

Replicação

Programação Distribuída com

Programação Distribuída com

Variáveis Compartilhadas

Variáveis Compartilhadas

TM X SM

Replicação de Variáveis Compartilhadas

Protocolo de Atualização Síncrono

(2)

Autores Autores

Autores

�Rodrigo Gasparoni Santos �C. Geyer (revisões)

Local

�Instituto de Informática, UFRGS �disciplinas:

� Sistemas Operacionais II

� Programação Distribuída e Paralela

Versão

(3)

Súmula Súmula

Súmula

�Conceitos de replicação

�Troca de mensagens X Memória Distribuída Compartilhada �Replicação de Variáveis

�Modelo ORCA

(4)

Bibliografia Bibliografia

Bibliografia

�Distributed Programming With Shared Data”. Bal, Henri E. & Tanenbaum, Andrew S. Computer Languages, volume 16, nº. 2, 1991, pág. 129-146.

�Tanenbaum, A. S. “Distributed Operating Systems”. 1995.

� capítulo sobre DSM – Distributed Shared Data

�Couloris. “Sistemas Distribuídos – Conceitos e Projeto”. 4ª ed. Bookman.

(5)

Replicação – conceitos

�Replicação de dados

� Manutenção de cópias dos dados em vários computadores � Motivação: fornecer (mais)

� Melhor desempenho � Alta disponibilidade � Tolerância a falhas

Replicação Replicação

(6)

Replicação – conceitos

�Replicação de dados

� Exemplos

� Armazenamento de recursos de servidores em � Cache dos navegadores

� Servidores proxies web

� Servidores de nomes como o DNS

� Cópias dos mapeamentos de nomes e atributos de

computadores

Replicação Replicação

(7)

Replicação – vantagens

�Melhoria de desempenho

� Em replicação de recursos web de servidores

� Carga dos clientes é distribuída entre os servidores

� Ao realizar consulta em um servidor DNS, cliente recebe

� Uma opção de cópia entre uma lista com diversas opções

de servidores idênticos

� Escolha pode ser por rodízio ou o menos carregado no

momento ou ...

Replicação Replicação

(8)

Replicação – vantagens

�Melhoria de desempenho

� Quando os dados são (quase) imutáveis o custo de

manutenção das cópias é muito baixo

� Quando os dados são frequentemente alterados, é necessário

atualizar as cópias

� Então deve-se comparar o ganho da distribuição da carga

contra a perda pela atualização das cópias

Replicação Replicação

(9)

Replicação – vantagens

�Maior disponibilidade

� Índice de disponibilidade: ID

� Percentagem do tempo que o serviço está disponível e

com tempo de resposta razoável (mínimo)

� Fatores que prejudicam a disponibilidade � Falha do servidor � Crash � Manutenção de sw � Queda de energia � ... Replicação Replicação

(10)

Replicação – vantagens

�Maior disponibilidade

� Havendo falha em um servidor o cliente automaticamente

acessa um servidor alternativo com cópia dos recursos

� Cache x replicação de servidores

� Cache usualmente contém cópia parcial de dados � Cache nem sempre melhora disponibilidade

� Exemplo de índice com replicação

� Cada servidor tem probabilidade de falha de 5% � Havendo dois servidores

� ID: 1 – 0,052 = 1 – 0,0025 = 99,75 (%)

Replicação Replicação

(11)

Replicação – vantagens

�Maior disponibilidade

� Sem conexão � Motivos

� Usuário se desconecta para reduzir gastos � Usuário móvel é desconectado por atingir

localização sem sinal (rede)

� Falha de rede � Solução

� Trabalho desconectado

Cliente (usuário) faz cópia de dados (parcial)

Replicação Replicação

(12)

Replicação – vantagens

�Maior disponibilidade

� Sem conexão

� Possível problema:

� durante uso desconectado outro cliente pode alterar

a cópia principal (original)

� Caso: agenda para reservas de horários

� Deve ser possível resolver conflitos posteriormente

Replicação Replicação

(13)

Replicação – vantagens

�Tolerância a falhas

� Dados com alta disponibilidade podem estar incorretos � Por exemplo:

� não foram atualizados

� Cópias não estão consistentes (mesmo valor) � Sistema deve garantir em certas aplicações um

comportamento único, rigoroso, mesmo em casos de falhas

� Sistemas com TF baseada em replicação exigem algoritmos

distribuídos mais complexos

Por exemplo, na atualização das cópias

Replicação Replicação

(14)

Replicação – requisitos

�Transparência da replicação

� Usuário (cliente) não percebe a replicação

� Operações são chamadas sobre um objeto com identificador

único abstrato

� Operações retornam um único valor

� Mesmo que sejam executadas sobre mais de uma cópia

�Consistência dos dados

� Operações devem retornar valores corretos conforme

especificação

Replicação Replicação

(15)

Programação x Replicação Programação x Replicação

Programação x Replicação

�Paradigmas usuais de programação:

� Uso de variáveis compartilhadas para sistemas com memória

compartilhada (fortemente acoplados)

� Uso de troca de mensagens para sistemas sem memória

compartilhada (fracamente acoplados) � Abordagem alternativa:

� uso de variáveis compartilhadas para sistemas fracamente

acoplados (redes, SD com memória fisicamente distribuída)

� Frequentemente implica o uso de replicação das variáveis

(16)

Motivação Motivação

Comparação entre Variáveis Compartilhadas e Troca de

Mensagens

�motivação para modelo com variáveis compartilhadas

� Exemplo: caso ORCA

�Variáveis Compartilhadas: VC �Troca de Mensagens: TM

(17)

Comparação SM X TM Comparação SM X TM

Semântica

�VC

� semântica mais próxima de linguagens funcionais, lógicas, e

orientadas a objetos

� Semântica dos pacotes de threads � Posix threads

� Java e C# threads

�TM

� mais antigo (para programação distribuída), eficiente e

(18)

Comparação SM X TM Comparação SM X TM

Atualização de valores

�VC: imediata

� Em memória (fisicamente) compartilhada

�TM:

� latência � banda

(19)

Comparação SM X TM Comparação SM X TM

Participantes em 1 comunicação

�VC: 1 para N (broadcast)

� Todos podem acessar em leitura o novo valor escrito

�TM: 1 para 1 (ponto-a-ponto; usualmente)

Programação segura

�VC: menos segura (correção ou ausência de bugs)

n processos podem escrever na mesma variável

�TM: protegida

(20)

Comparação SM X TM Comparação SM X TM

Estruturas complexas

�VC: natural; por exemplo, grafos �TM

� requer operações para empacotamento e desempacotamento

de estruturas complexas

� Pode ser transparente ao programadores nas linguagens OO � Exemplo: Java RMI

Sincronização

�VC

(21)

Abordagens Abordagens

Abordagens Intermediárias

�buscam combinar as vantagens de cada modelo, mas em geral trazem novas desvantagens

�exemplos:

� Portas de Comunicação:

� filas compartilhadas; bloqueante na recepção;

implementado com troca de mensagens

� Variáveis ADA:

� mecanismo de rendez-vous; replicação de variáveis;

semântica confusa

(22)

Abordagens Abordagens

Abordagens Intermediárias

�exemplos:

� Memória Compartilhada Orientada a Problemas:

� ajustada às necessidades de cada aplicação; semântica

relaxada

� Modelo “Agora” de Memória Compartilhada:

� permite comunicação entre arquiteturas e linguagens

distintas

(23)

Abordagens Abordagens

Abordagens Intermediárias

�exemplos:

� Espaço de Tuplas (Linda):

� estruturas similares a registros; poucas primitivas

atômicas; dados imutáveis

� Reimplementada em objetos � Java Spaces (Sun)

(24)

Abordagens Abordagens

Abordagens Intermediárias

�Memória Virtual Compartilhada:

� similar a memória virtual tradicional

� garante que cada leitura obtém última escrita

� baixo desempenho em caso de escritas muito freqüentes

�Variáveis Lógicas Compartilhadas:

� propriedade da “atribuição única”:

� variáveis não podem mudar de valor depois de terem sido

(25)

Abordagens Abordagens

Abordagens Intermediárias

�estas técnicas diferem amplamente em termos de semântica, endereçamento e mecanismos de sincronização

�um ponto-chave na implementação de qualquer uma delas, entretanto, é o conceito de replicação

� ou seja, a existência de diversas cópias do mesmo dado em

máquinas distintas

�nesse contexto, replicação é utilizada para diminuir o tempo de acesso aos dados

� e não como um recurso de tolerância a falhas

�a replicação traz consigo o problema de manter consistentes as diversas cópias de cada variável

(26)

Variáveis Compartilhadas Variáveis Compartilhadas

Modelo Orca de Variáveis Compartilhadas

�criado por Henri Bal e Andrew Tanenbaum

�dados compartilhados são encapsulados em objetos passivos

� sendo acessíveis somente através de um conjunto de

operações associadas ao tipo do objeto

�o paralelismo advém da criação dinâmica de processos seqüenciais

� podendo o processo criador passar qualquer um de seus

objetos para os filhos

�o objeto compartilhado é visível para todos estes processos

(27)

Variáveis Compartilhadas Variáveis Compartilhadas

Modelo de Dados-Objetos Compartilhados

�vantagens sobre o modelo usual (em memória) da variáveis compartilhadas:

� Encapsulamento dos dados e operações

� todas as operações de acesso aos dados são indivisíveis � invocações simultâneas de diversas operações sobre o

mesmo dado são automaticamente serializadas

� mecanismo simples e seguro

� Obs.:

� Essa semântica pode ser implementada em memória

(28)

Variáveis Compartilhadas Variáveis Compartilhadas

Modelo de Dados-Objetos Compartilhados

�Relembrando diferenças de tempos de acesso

� Latência, banda, ... � RAM: 10 a 150 nanosegundos => 100 ns � SRAM: 10 ns � DRAM: 50 a 150 ns � Disco � 9 a 15 milisegundos (ms) � ou 10.000 ns

(29)

Variáveis Compartilhadas Variáveis Compartilhadas

Modelo de Dados-Objetos Compartilhados

�Relembrando diferenças de tempos de acesso

� Rede

� Round-trip time: ping, tempo de ida e volta � 50 a 500 ms

� Depende se cabo, DSL, satélite, rede local, ... � Casos especiais: 25 ms

� Média (?): 100.000 ns � Diferença entre RAM e rede

� 100.000 ns / 50 ns

(30)

Variáveis Compartilhadas Variáveis Compartilhadas

Modelo de Dados-Objetos Compartilhados

�Implementações possíveis:

� Monitor Centralizado

� responsável tanto por operações de leitura quanto de

escrita

� 100 a 1000 vezes mais lento do que acesso local � Cópias Primárias e Secundárias

� operações de leitura são feitas na cópia local � Tempo usual de memória compartilhada

� operações de escrita devem ser propagadas pela rede � Maior custo que escrita em memória compartilhada

(31)

Cópias Primárias

Cópias Primárias -- SecundáriasSecundárias

Cópias Primárias & Secundárias

�cada dado: 1 cópia primária, k-1 cópias secundárias

k-1: até n, quantidade de processos (computadores) que

acessam a variável

� k: dinamicamente calculada

�compilador distingue operações de leitura e escrita sobre dados compartilhados

�sistema de run-time mantém estatísticas sobre a utilização de cada variável por cada processo

� manter estatísticas apresenta custo desprezível � objetivo: minimizar troca de mensagens pela rede

(32)

Cópias Primárias

Cópias Primárias -- SecundáriasSecundárias

Cópias Primárias & Secundárias

�o processo que escreve com maior freqüência num certo dado deve ser escolhido para conter a cópia primária do mesmo

(33)

Cópias Primárias

Cópias Primárias -- SecundáriasSecundárias

Cópias Primárias & Secundárias

�é necessário um protocolo de propagação das escritas:

� invalidação:

� cada write atualiza cópia local e invalida todas as outras � Mensagem curta

� próximo read busca valor na cópia válida � Se ocorrer

� custo: 3 mensagens por cópia � atualização:

� sobrescrever todas as cópias

(34)

Protocolo de Atualização Protocolo de Atualização

Protocolo de Atualização de Réplicas

�descrito usando a linguagem Orca, criada pelos autores do artigo �deve manter consistência das diversas cópias

�deve ser independente das velocidades relativas dos processos e dos links de comunicação

�considerar links ponto-a-ponto entre cada par de processos, com entrega confiável e garantia de recepção na mesma ordem do envio

(35)

Protocolo de Atualização de Réplicas

X, Y: shared object; # inicializados em 0

Process P1: for i := 1 todo write(X, i); Process P3: repeat y := read(Y); x := read(X); assert x � y;

Programa aplicação exemplo (para teste do algoritmo):

Process P2: repeat y := read(Y); x := read(X); if x > y then write(Y, x); Protocolo de Atualização Protocolo de Atualização

(36)

Protocolo de Atualização Protocolo de Atualização

Protocolo de Atualização de Réplicas

�programa exemplo

� X e Y são dados compartilhados, visíveis para os três

processos

� com cópia primária de X em P1 � cópia primária de Y em P2

� processo P1 incrementa X continuamente � processo P2 atualiza Y conforme X

� garante que X não ultrapasse Y

� processo P3 aborta indicando erro se, em algum momento, � verificar que Y possui valor maior do que X

(37)

Protocolo de Atualização de Réplicas

Primeira tentativa de protocolo de propagação (incorreto):

#Cópia primária de X

receive (X,novoX) from

CSx;

set write-lock on X;

X:=novoX;

let S = conjunto de

processos com cópia secundária de X forall i � S – [CSx] do send i(X,novoX); for j:=1 to |S| - 1 do #Cópia secundária de X que inicia escrita

send CPx(X,novoX); #Outras cópias secundárias de X receive (X,novoX) from CPx; set write-lock on X; X:=novoX; send CPx(ACK); unlock X; Protocolo de Atualização Protocolo de Atualização

(38)

Protocolo de Atualização Protocolo de Atualização

Protocolo de Atualização de Réplicas

�Os locks têm semântica local

� Só bloqueiam outros processos tentando acessar a cópia local

(39)

Protocolo de Atualização de Réplicas

Seqüência de eventos que gera erro:

X=1 P1 X=1 Y=1 P2 X=0 Y=1 P3

write(X,1) • Todas as cópias inicializadas em

zero

• P1 atualiza X e envia

mensagens para P2 e P3

• P2 tem X=1, atualiza Y e envia mensagem para P3

• P3 recebe mensagem de P2

Protocolo de Atualização Protocolo de Atualização

(40)

Protocolo de Atualização Protocolo de Atualização

Protocolo de Atualização de Réplicas

�problema:

� tempo arbitrário que as mensagens levam para chegar ao

destino

� P3 observa as mudanças em X e Y na ordem incorreta

�é necessário um protocolo de duas fases:

� lock’s das cópias locais só devem ser liberados após cópia

primária ter certeza de que todos foram atualizados

garante: se um processo i ler novo valor de X, todos os outros

terão o novo valor de X

� no exemplo:

(41)

Protocolo de Atualização de Réplicas

Versão corrigida (cópias primárias multithreaded):

#Cópia primária de X

receive (X,novoX) from

CSx; fork udpate(X,novoX, CSx); process update(X, novoX, CSx) begin set write-lock on X; X:=novoX; let S = conjunto de #fase 1 forall P S do send P(X,novoX, update-and-lock); for i:=1 to |S| do receive ACK; #fase 2 forall P S do send P(X,unlock); unlock X; send CSx(ACK); end; #Cópias secundárias de X receive (X,novoX, update-and-lock) from CPx; set write-lock on X; X:=novoX; send CPx(ACK); receive (X, unlock) from CPx; unlock X; Protocolo de Atualização Protocolo de Atualização

(42)

Protocolo de Atualização de Réplicas

X=1 P1 X=1 Y=0 P2 X=0 Y=0 P3 update-and-lock (X,1)

• Todas as cópias inicializadas em zero

• P1 atualiza X e envia

mensagens para P2 e P3

• P2 tem X=1, mas não atualiza Y enquanto não receber o unlock de P1, o que só ocorrerá depois que P3 confirmar recebimento � falha

ACK

Protocolo de Atualização Protocolo de Atualização

(43)

Protocolo de Atualização Protocolo de Atualização

Protocolo de Atualização de Réplicas

�protocolo em 2 fases garante que nenhuma cópia secundária lerá valor antigo de um dado X qualquer se outras cópias secundárias já estão lendo o novo valor de X

com n cópias secundárias, são necessárias 3n mensagens para atualizar todas as cópias

� e 3 passos

�protocolo denominado de protocolo de 2 fases

� atualização

� confirmação ou commit

�para objetos pequenos (como inteiros) que são atualizados com freqüência, protocolo de invalidação pode ser mais eficiente, se

(44)

Resumo

�Conceitos de replicação

� Vantagens

�Programação distribuída: modelo VC x modelo TM

� Algumas vantagens no modelo VC

�Modelo Orca

� Processos distribuídos mais opção de variáveis explicitamente

compartilhadas

� Para agilizar leitura: réplicas distribuídas das variáveis

(valores)

� Somente quando há mais leituras que escritas

Resumo Resumo

(45)

Revisão Revisão

Revisão

�temas? �comparação SM X TM? � semântica, modelo � tempo da atualização � participantes de 1 comunicação � programação segura � estruturas complexas � sincronização

(46)

Revisão Revisão

Revisão

�abordagens intermediárias � exemplos? � diferenças? � semelhanças?

� tolerância a falhas x desempenho?

� qual a conseqüência direta da replicação em termos de

(47)

Revisão Revisão

Revisão

�modelo Orca (autores)

� dados?

� processos?

� compartilhamento?

� semântica do compartilhamento?

�possíveis abordagens gerais de implementação?

(48)

Revisão Revisão

Revisão

�cópias primária - secundárias

� quantas?

� quem tem a primária? � quem tem a secundária? � como o compilador ajuda?

� para que servem as estatísticas? custo? � tipos de protocolos de atualização?

(49)

Revisão Revisão

Revisão

�princípios do protocolo Orca? �exemplo para testes?

� varíáveis? � processos?

� ordem das leituras? � quem é CP? e CS?

(50)

Revisão Revisão

Revisão

�1o protocolo?

� ack é necessário?

� contra-prova com exemplo?

(51)

Revisão Revisão

Revisão

�2o protocolo � tipos de mensagens? � descrição na CP? � descrição na CS?

� os locks locais são necessários? CP? CS?explique � explique a idéia abstrata da solução? o que garante? � qual a complexidade de uma leitura?

(52)

Exercícios Exercícios

Exercícios

�A) O algoritmo funciona corretamente se o protocolo de comunicação (implementação) não garante a ordem das mensagens entre 2 processos? Explique.

�B) O algoritmo pode ser otimizado havendo um protocolo de comunicação de multicast com ordenação causal? Explique.

� multicast com ordenação causal

� diferentes receptores recebem mensagens na mesma

ordem desde que haja uma dependência entre as mensagens

(53)

Replicação – vantagens

�Melhoria de desempenho

� Em replicação de recursos web de servidores

� Carga dos clientes é distribuída entre os servidores

� Ao realizar consulta em um servidor DNS, cliente recebe

� Uma opção de cópia entre uma lista com diversas opções

de servidores idênticos

� Escolha pode ser por rodízio ou o menos carregado no

momento ou ...

� Quando os dados são (quase) imutáveis o custo de

manutenção das cópias é muito baixo

� Quando os dados são frequentemente alterados, é necessário

Replicação Replicação

(54)

���������������������������������������������������������������������������

��������������������������������������������������������������������������������� �����������������������������������������������������

Referências

Documentos relacionados

[r]

A ação visa propiciar o desenvolvimento de um trabalho dinâmico e diferente para colaborar com o processo de alfabetização e letramento dos alunos das séries iniciais que

O valor de outorga fixa mensal por relógio deverá ser pago pela Concessionária ao Poder Concedente, a contar da instalação e operação de cada equipamento, no valor de R$ 248,55,

No entanto, esses sistemas possuem características muito peculiares que ratifica a necessidade de estudos sistemáticos nas áreas indígenas Guarani do MS, a fim de

As consequências diretas e indiretas da solvatação nos espectros de absorção dos clusters Au 13 L 8 3+ são ilustradas na Figura 4.18.. O red-shift da banda c pode ser

• No haga funcionar este equipo si está dañado, presenta cambios en su patrón de trabajo, tiene daños en cables y conductores de electricidad (cable roto, agrietado, pelado, etc.)