Você está na página 1de 22

Comunicao

interprocessos
Sistemas distribudos
Comunicao interprocessos
Contextualizao
Comunicao interprocessos
Introduo

Sistemas distribudos implicam em comunicao entre processos:


Compartilhamento de memria (sistema realmente distribudo)
Troca de mensagens
Cpia de dados de um espao de memria a outro.
Passagem de mensagem
Conjunto de primitivas para comunicao entre processos baseada em
um protocolo de troca de mensagens.
Esconde detalhes de protocolos de comunicao
Tratamento de heterogeneidade
Exemplos: sockets, java RMI, etc...
Comunicao interprocessos
Caractersticas desejveis:

Simplicidade e clareza de uso.


Semntica uniforme
processos locais e remotos utilizam a mesma interface de
comunicao.
Eficincia
Baixo custo de processamento
Minimizar custo de estabelecimento/manuteno de conexo
Uso de piggybacking para eliminar mensagens adicionais.
Confiabilidade
Garantir entrega das mensagens em presena de falhas.
Eliminar(tratar) replicao de mensagens.
Ordenamento de mensagens
Comunicao interprocessos
Caractersticas desejveis: (continuao)

Correo
atomicidade: todos ou nenhum recebem.
Entrega ordenada:
mensagens chegam na mesma ordem a todos os processos.
Garantia de entrega.
Flexibilidade
Nem todas as aplicaes tem as mesmas necessidades.
Segurana:
Autenticao dos pares
Codificao das mensagens
Portabilidade
Aplicaes e das bibliotecas (heterogeneidade)
Comunicao interprocessos
Modelos de comunicao:

Duas primitivas bsicas :Send e Receive


Duas semnticas: Bloqueante e no bloqueante
Envio de mensagens: (send)
Incluso de mensagem em uma fila remota
Recepo da mensagem: (receive)
Retirada da mensagem de uma fila local.
Comunicao interprocessos
Comunicao sncrona vs. Assncrona

Comunicao:
Sncrona: Processos usam verso bloqueante da primitiva.
Assncrona: Processos usam verses no bloqueantes da
primitiva.
Desvantagens da comunicao sncrona.
Limitao da concorrncia
Possibilidade de deadlock.
Vantagens da comunicao sncrona.
Programao simples.
Vantagens e desvantagens da Assncrona so dual da
sncrona.
Comunicao interprocessos
Semntica de sincronicao send/receive

Semntica do send:
Bloqueante: O processo do send espera a execuo do receive
correspondente.
No bloqueante: O processo fonte prossegue com a execuo
to logo a mensagem seja recebida (bufferizada).
Semntica do receive
Bloqueante: processo destino bloqueado at que a mensagem
seja recebida.
No bloqueante
Processo de destino retorna da chamada to logo seja reservada
uma rea de memria para recepo da mensagem.
Necessidade de saber se a mensagem chegou
Pooling: primitiva do tipo teste
Interrupo (signal)
Comunicao interprocessos
Estudo de caso: Protocolos Internet e API Socket

TCP e UDP usam a abstrao de socket.


Define um ponto de comunicao (ip e porta)
Uma porta no pode ser compartilhada por vrios processos.
Vrios processos podem enviar para uma mesma porta
Comunicao interprocessos
Comunicao por datagrama UDP

Baseada em uma unidade de transmisso: datagrama


Transmitido do remetente ao destino sem confirmao
ou tentativa de reenvio.
Mensagens podem no chegar.
Aspectos a serem considerados.
Tamanho da mensagem.
Bloqueio
Time-out
Recepo annima
Comunicao interprocessos
Aspectos da comunicao UDP:

Tamanho da mensagem:
Necessidade de especificar o tamanho da rea de recepo.
Se menor que o necessrio mensagem truncada
Bloqueio
Geralmente Send no bloqueante e Receive bloqueante.
Recomendvel uso de threads.
Time-out
Limitar tempo de espera do receive
Problema: dimensionar o time-out
Recepo annima
Receive no especifica uma origem, porem possvel identificar
a fonte.
Comunicao interprocessos
Modelo de falhas UDP.

Comunicao confivel implica em duas Propriedades:


Validade: Qualquer mensagem entregue a seu destino.
Integridades: Mensagens no podem ser corrompidas nem
duplicadas.
Datagramas UDP falham por:
Falhas por omisso: Mensagens podem ser perdidas ou
descartadas
Ordenamento:Mensagens podem ser entregues fora de ordem.
Responsabilidade dos aplicativos tratarem com as falhas
Comunicao interprocessos
Comunicao por fluxo TCP

Define a abstrao de fluxo (stream)


Dados podem ser lidos e escritos.
Caractersticas de um fluxo TCP
No 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 no duplicao dos dandos.
Define a abstrao de conexo como identificadores de
processo origem e destino.
Comunicao interprocessos
Comunicao por fluxo TCP

Define a abstrao de fluxo (stream)


Dados podem ser lidos e escritos.
Caractersticas de um fluxo TCP
No 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 no duplicao dos dandos.
Define a abstrao de conexo como identificadores de
processo origem e destino.
Comunicao interprocessos
Aspectos na comunicao TCP

Correspondncia entre itens de dados


Processos devem concordar quanto ao contedo dos dados
transmitidos.
Se um enviar n bytes como sendo inteiro o outro deve concordar
Bloqueio
Dados enviados em um fluxo so mantidos at serem lidos.
Processo destino bloqueado se tentar ler dados no disponveis.
Processo remetente bloqueado pelo fluxo TCP se no h espao
disponvel no destinatrio para recepo.
Threads
Recomendvel para simplificar programao sem bloqueio (
vrias threads = vrios fluxos = maiores buffers)
Comunicao interprocessos
Modelo de falhas do TCP

Funcionamento do TCP:
Validade: Usa timeout e retransmisses para tratar
perda de mensagens.
Integridade: Uso de checksum e nmero de
seqncia para garantir mensagens no corrompidas
nem duplicadas.
No totalmente confiveis:
Conexes TCP podem ser desfeitas:
Processo no distinguem entre falha de rede e falha de
processo
Processos no sabem identificar ser mensagens enviadas
recentemente foram recebidas ou no
Comunicao interprocessos
Representao externa de dados:

Informao (dados) representada em uma estrutura de


dados.
Na comunicao informao igual a uma seqncia de bytes.
Necessidade de converso estrutura de dados <> seqncia de
bytes.
Problema:
Diferentes sistemas = diferentes estruturas de dados.
Ex. Cod ASC versus Unicode, pontos flutuantes, etc...
Soluo:
Converso para um formato de dados acordado (external data
representation)
Enviar no formato do emissor e incluir informao sobre o
formato empregado.
Comunicao interprocessos
Princpio da representao externa de dados:
Comunicao interprocessos
Marshalling:

Processo de converter uma coleo de dados e


organiz-los em um formato prprio para transmisso.
Unmarshalling o processo contrrio.
Idia que seja feito sem envolvimento explicito da
aplicao.
Responsabilidade do midleware.
Duas tcnicas bsicas
Converso de dados para um formato binrio
Converso de dados para um formato texto (ASCII)
Exemplos: Corba, serializao Java e XML
Comunicao interprocessos
Corba:

Define 15 tipos bsicos de dados e 6 construtores para


os tipos mais complexos.
Bsicos: short, long, unsigned, float, double, etc..
Complexos: string, array, struct, etc...
Dados so escritos atrves dos tipos e o midlleware
executa o (un)marshalling via sua IDL (Interface
definition language)
Baseado na representao para um formato binrio.
Comunicao interprocessos
Serializao de objetos java

Transformao de um objeto em uma seqncia de


bytes.
Comunicao de objetos via socket (RMI)
Armazenamento em disco
Como disponibilizado ao usurio.
ObjectOutputStream e ObjectInputStream + mtodos
writeObject / readObject.
Classe do objeto implementa a interface serializable
Mtodos DefaultWriteObject e DefaultReadObject.
Formato binrio
Nome da classe
Assinatura da classe
Instncia das variveis.
Comunicao interprocessos
eXtensible Markup Language (XML)

Codificao textual para descrever estrutura e


aparncia
Baseada em marcas tag
Descrevem a estrutura lgica dos dados
Associao por atributo-valor

Você também pode gostar