Comunicação interprocessos
Download
Report
Transcript Comunicação interprocessos
Comunicação
interprocessos
Sistemas distribuídos
Prof. Diovani Milhorim
Comunicação interprocessos
Contextualização
Comunicação interprocessos
Introdução
Sistemas distribuídos implicam em comunicação entre processos:
Compartilhamento de memória (sistema realmente distribuído)
Troca de mensagens
Cópia de dados de um espaço de memória a outro.
Passagem de mensagem
Conjunto de primitivas para comunicação entre processos baseada em
um protocolo de troca de mensagens.
Esconde detalhes de protocolos de comunicação
Tratamento de heterogeneidade
Exemplos: sockets, java RMI, etc...
Comunicação interprocessos
Características desejáveis:
Simplicidade e clareza de uso.
Semântica uniforme
processos locais e remotos utilizam a mesma interface de
comunicação.
Eficiência
Baixo custo de processamento
Minimizar custo de estabelecimento/manutenção de conexão
Uso de piggybacking para eliminar mensagens adicionais.
Confiabilidade
Garantir entrega das mensagens em presença de falhas.
Eliminar(tratar) replicação de mensagens.
Ordenamento de mensagens
Comunicação interprocessos
Características desejáveis: (continuação)
Correção
atomicidade: todos ou nenhum recebem.
Entrega ordenada:
Nem todas as aplicações tem as mesmas necessidades.
Segurança:
Garantia de entrega.
Flexibilidade
mensagens chegam na mesma ordem a todos os processos.
Autenticação dos pares
Codificação das mensagens
Portabilidade
Aplicações e das bibliotecas (heterogeneidade)
Comunicação interprocessos
Modelos de comunicação:
Duas primitivas básicas :Send e Receive
Envio de mensagens: (send)
Duas semânticas: Bloqueante e não bloqueante
Inclusão de mensagem em uma fila remota
Recepção da mensagem: (receive)
Retirada da mensagem de uma fila local.
Comunicação interprocessos
Comunicação síncrona vs. Assíncrona
Comunicação:
Desvantagens da comunicação síncrona.
Limitação da concorrência
Possibilidade de deadlock.
Vantagens da comunicação síncrona.
Síncrona: Processos usam versão bloqueante da primitiva.
Assíncrona: Processos usam versões não bloqueantes da
primitiva.
Programação simples.
Vantagens e desvantagens da Assíncrona são “dual” da
síncrona.
Comunicação interprocessos
Semântica de sincronicação send/receive
Semântica do send:
Bloqueante: O processo do send espera a execução do receive
correspondente.
Não bloqueante: O processo fonte prossegue com a execução
tão logo a mensagem seja recebida (bufferizada).
Semântica do receive
Bloqueante: processo destino é bloqueado até que a mensagem
seja recebida.
Não bloqueante
Processo de destino retorna da chamada tão logo seja reservada
uma área de memória para recepção da mensagem.
Necessidade de saber se a mensagem chegou
Pooling: primitiva do tipo teste
Interrupção (signal)
Comunicação interprocessos
Estudo de caso: Protocolos Internet e API Socket
TCP e UDP usam a abstração de socket.
Define um ponto de comunicação (ip e porta)
Uma porta não pode ser compartilhada por vários processos.
Vários processos podem enviar para uma mesma porta
Comunicação interprocessos
Comunicação por datagrama UDP
Baseada em uma unidade de transmissão: datagrama
Transmitido do remetente ao destino sem confirmação
ou tentativa de reenvio.
Mensagens podem não chegar.
Aspectos a serem considerados.
Tamanho da mensagem.
Bloqueio
Time-out
Recepção anônima
Comunicação interprocessos
Aspectos da comunicação UDP:
Tamanho da mensagem:
Necessidade de especificar o tamanho da área de recepção.
Bloqueio
Geralmente Send é não bloqueante e Receive é bloqueante.
Recomendável uso de threads.
Time-out
Se menor que o necessário – mensagem truncada
Limitar tempo de espera do receive
Problema: dimensionar o time-out
Recepção anônima
Receive não especifica uma origem, porem é possível identificar
a fonte.
Comunicação interprocessos
Modelo de falhas UDP.
Comunicação confiável implica em duas Propriedades:
Datagramas UDP falham por:
Validade: Qualquer mensagem é entregue a seu destino.
Integridades: Mensagens não podem ser corrompidas nem
duplicadas.
Falhas por omissão: Mensagens podem ser perdidas ou
descartadas
Ordenamento:Mensagens podem ser entregues fora de ordem.
Responsabilidade dos aplicativos tratarem com as falhas
Comunicação interprocessos
Comunicação por fluxo TCP
Define a abstração de fluxo (stream)
Dados podem ser lidos e escritos.
Características de um fluxo TCP
Não define limite de tamanho para mensagens.
Efetua controle de erro.
Regula controle de fluxo (regula a taxa de leitura e escrita no
fluxo para prevenir overflow)
Garante entrega ordenada e não duplicação dos dandos.
Define a abstração de conexão como identificadores de
processo origem e destino.
Comunicação interprocessos
Comunicação por fluxo TCP
Define a abstração de fluxo (stream)
Dados podem ser lidos e escritos.
Características de um fluxo TCP
Não define limite de tamanho para mensagens.
Efetua controle de erro.
Regula controle de fluxo (regula a taxa de leitura e escrita no
fluxo para prevenir overflow)
Garante entrega ordenada e não duplicação dos dandos.
Define a abstração de conexão como identificadores de
processo origem e destino.
Comunicação interprocessos
Aspectos na comunicação TCP
Correspondência entre itens de dados
Processos devem concordar quanto ao conteúdo dos dados
transmitidos.
Bloqueio
Dados enviados em um fluxo são mantidos até serem lidos.
Se um enviar n bytes como sendo inteiro o outro deve concordar
Processo destino é bloqueado se tentar ler dados não disponíveis.
Processo remetente é bloqueado pelo fluxo TCP se não há espaço
disponível no destinatário para recepção.
Threads
Recomendável para simplificar programação sem bloqueio (
várias threads = vários fluxos = maiores buffers)
Comunicação interprocessos
Modelo de falhas do TCP
Funcionamento do TCP:
Validade:
Usa timeout e retransmissões para tratar
perda de mensagens.
Integridade: Uso de checksum e número de
seqüência para garantir mensagens não corrompidas
nem duplicadas.
Não totalmente confiáveis:
Conexões TCP podem ser desfeitas:
Processo não distinguem entre falha de rede e falha de
processo
Processos não sabem identificar ser mensagens enviadas
recentemente foram recebidas ou não
Comunicação interprocessos
Representação externa de dados:
Informação (dados) é representada em uma estrutura de
dados.
Na comunicação informação é igual a uma seqüência de bytes.
Problema:
Necessidade de conversão estrutura de dados <> seqüência de
bytes.
Diferentes sistemas = diferentes estruturas de dados.
Ex. Cod ASC versus Unicode, pontos flutuantes, etc...
Solução:
Conversão para um formato de dados acordado (external data
representation)
Enviar no formato do emissor e incluir informação sobre o
formato empregado.
Comunicação interprocessos
Princípio da representação externa de dados:
Comunicação interprocessos
Marshalling:
Processo de converter uma coleção de dados e
organizá-los em um formato próprio para transmissão.
Idéia é que seja feito sem envolvimento explicito da
aplicação.
Responsabilidade do midleware.
Duas técnicas básicas
Unmarshalling é o processo contrário.
Conversão de dados para um formato binário
Conversão de dados para um formato texto (ASCII)
Exemplos: Corba, serialização Java e XML
Comunicação interprocessos
Corba:
Define 15 tipos básicos de dados e 6 construtores para
os tipos mais complexos.
Básicos: short, long, unsigned, float, double, etc..
Complexos: string, array, struct, etc...
Dados são escritos atráves dos tipos e o midlleware
executa o (un)marshalling via sua IDL (Interface
definition language)
Baseado na representação para um formato binário.
Comunicação interprocessos
Serialização de objetos java
Transformação de um objeto em uma seqüência de
bytes.
Comunicação de objetos via socket (RMI)
Armazenamento em disco
Como é disponibilizado ao usuário.
ObjectOutputStream e ObjectInputStream + métodos
writeObject / readObject.
Classe do objeto implementa a interface serializable
Métodos DefaultWriteObject e DefaultReadObject.
Formato binário
Nome da classe
Assinatura da classe
Instância das variáveis.
Comunicação interprocessos
eXtensible Markup Language (XML)
Codificação textual para descrever estrutura e
aparência
Baseada em marcas tag
Descrevem a estrutura lógica
Associação por atributo-valor
dos dados
Comunicação interprocessos
Leitura recomendada:
Coulouris – capitulo 4