Académique Documents
Professionnel Documents
Culture Documents
Comunicação
Porf Lahoz
Apoio: Prof. André Y. Kusumoto
Comunicação nos SD
Elementos básicos de comunicação em SDs
• Transmissão de dados
• Endereçamento
• Sincronismo
• Enfileiramento (Bufferização)
• Confiabilidade
• Modelo Cliente-Servidor
Transmissão de dados
Dados em programas são estruturados enquanto que mensagens
carregam informação sequencial:
» Linearização/Restauração de dados
Unmarshalling (desarranjo):
• Tradução do formato externo para o local
• Restauração dos itens de dados de acordo com sua estrutura
Transmissão de dados
Passos (retorno assimétrico)
Transmissão de dados
Função dos Stubs
Endereçamento máquina.processo
Endereçamento máquina.id-local
Descoberta de endereço via broadcasting (difusão)
Descoberta de endereço via um servidor de nomes
1) antes de ser enviada toda mensagem deve ser copiada para uma área
de armazenamento temporário interna ao núcleo do sistema. Assim,
qualquer alteração no conteúdo da variável buffer não influenciará a
comunicação em andamento. Fatores críticos para esta estratégia é a
determinação do tamanho dessa área de armazenamento temporário
e o número máximo permitido de mensagens assíncronas sendo
enviadas.
Comunicação síncrona e assíncrona
Comunicação assíncrona:
Solução:
Mensagem de acknowledgement enviada pelo servidor (no nível núcleo)
Mensagem de acknowledgement implícita na resposta do servidor
Confiabilidade
Muitas vezes o envio de uma mensagem deve ser confiável, isto é, o
processo que enviou a mensagem deve receber uma confirmação do
processo destino informando o perfeito recebimento da mensagem.
Visibilidade:
• Aberto: um processo fora do grupo consegue enviar mensagens para o
grupo todo
• Fechado: somente processos do grupo enviam mensagens para o grupo
todo
Organização:
• Peer: todos os processos tomam decisão
• Hierárquico: decisão é centralizada
Comunicação Grupal
Modificações no grupo:
Operações:
Entrada de um membro: atualizar estado
Saída de um membro: se involuntária (ex: parada), todos os membros
restantes devem notar sua saída.
Comunicação Grupal
Primitivas de comunicação:
Abordagens:
• Ordenação por tempo global
• Ordenação por tempo consistente: somente uma mensagem por vez é
difundida
Protocolos em Camadas
• Em sistemas distribuídos, toda comunicação entre os nós é baseada em
troca de mensagens. Quando uma máquina A quer se comunicar com a
máquina B, ela monta uma mensagem e a envia através da rede.
• O processo A volta à sua execução normal após ter recebido o reply
RPC
Chamadas em RPC:
Lado servidor:
• aplicativo, lado servidor, que recebe solicitação e processa
• “stub servidor”, gerado automaticamente
• “RPC runtime” do lado do servidor
2 4
1 empacota desempacota 5
0 parâmetros 6
cliente parâmetros servidor
desempacota empacota
11 resultados resultados 7
10 8
Kernel Kernel
3
transporte de mensagens
9 via rede
RPC
Operação Básica da Chamada Remota a Procedimento
• Primeiro, em C os parâmetros podem ser chamados por valor ou por
referência.
• Um parâmetro chamado por valor é pura e simplesmente copiado da
pilha.
• Um parâmetro passado por referência é um ponteiro para uma
variável, ou seja, o endereço da variável, em vez do valor da própria
variável.
• Segundo, denominado de chamada copiar/restaurar.
• Consiste em fazer uma chamador copiar a variável para a pilha, como
em chamada por valor, e então copiá-la de volta após a chamada.
Sobrescreve o valor original do chamador.
RPC
Semântica da Chamada Remota a Procedimento em Presença de Falhas
• Enquanto tanto o cliente quanto o servidor estiverem funcionando
perfeitamente, a chamada remota a procedimento faz seu trabalho de
forma admirável.
• Os problemas começam com a ocorrência eventual de erros. É aí que não
vai ser fácil mascarar as diferenças entre chamadas locais e remotas.
RPC
Problemas e Limitações
Obter com RPC mesma semântica de chamada local é difícil, por diversas
razões:
Desempenho:
overhead é substancial e diminui desempenho por fator de 10+ em relação a
mensagens
Segurança:
permitir execução de procedimentos localmente pode criar “furos” da
segurança
Classes de Falhas em RPC
Cinco classes diferentes de falhas possíveis de ocorrer nos sistemas
baseados em chamadas remotas a procedimento.
4. Quedas do Servidor
• Em primeiro lugar, chega uma requisição; a seguir, ela é executada, e
finalmente uma resposta é enviada de volta.
• Agora considere o caso onde a requisição é executada, exatamente
como no caso anterior, mas, depois disto, o servidor sai do ar antes de
enviar a resposta.
• Por fim, considere o caso aonde novamente chega uma requisição, mas
agora, o servidor para de funcionar antes de processá-la.
Classes de Falhas em RPC
Cinco classes diferentes de falhas possíveis de ocorrer nos RPCs
Semânticas de chamada: (1) pelo menos um; (2) no máximo um; (3)
exatamente um
Classes de Falhas em RPC
Cinco classes diferentes de falhas possíveis de ocorrer nos RPCs
5. Queda do Cliente
• O que acontece quando um cliente manda uma mensagem para um
servidor solicitando algum trabalho e sai do ar antes que o servidor tenha
podido responder?
• Neste caso, está sendo realizado um processamento sem que nenhum
cliente esteja esperando por ele. Tal processamento é denominado
processamento órfão, e deve ser evitado a todo custo, pois podem
ocasionar inúmeros problemas.
• No mínimo, os processamentos órfãos gastam o precioso tempo do
processador. Eles também podem bloquear arquivos, ou ocupar recursos
escassos, e portanto valiosos.
Classes de Falhas em RPC
Cinco classes diferentes de falhas possíveis de ocorrer nos RPCs