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
Download

Comunicação interprocessos