Você está na página 1de 23

Comunicao

interprocessos
Sistemas distribudos
Prof. Diovani Milhorim

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:

Nem todas as aplicaes tem as mesmas necessidades.

Segurana:

Garantia de entrega.

Flexibilidade

mensagens chegam na mesma ordem a todos os processos.

Autenticao dos pares


Codificao das mensagens

Portabilidade

Aplicaes e das bibliotecas (heterogeneidade)

Comunicao interprocessos
Modelos de comunicao:

Duas primitivas bsicas :Send e Receive

Envio de mensagens: (send)

Duas semnticas: Bloqueante e no bloqueante


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.

Bloqueio

Geralmente Send no bloqueante e Receive bloqueante.


Recomendvel uso de threads.

Time-out

Se menor que o necessrio mensagem truncada

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.

Bloqueio

Dados enviados em um fluxo so mantidos at serem lidos.

Se um enviar n bytes como sendo inteiro o outro deve concordar

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.

Problema:

Necessidade de converso estrutura de dados <> seqncia de


bytes.

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.

Idia que seja feito sem envolvimento explicito da


aplicao.

Unmarshalling o processo contrrio.

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
Associao por atributo-valor

dos dados

Comunicao interprocessos
Leitura recomendada:
Coulouris capitulo 4