Comunicação entre Processos Prof. Leonardo Barreto Campos http://sites.google.com/sitew/leonardobcampos 1/29
Comunicação entre Processos
Prof. Leonardo Barreto Campos
http://sites.google.com/sitew/leonardobcampos 1/29
Sumário
Introdução
Comunicação entre Processos:
◦ Soquetes
◦ Comunicação por datagrama UDP
◦ Comunicação por fluxo TCP
Representação externa de dados e empacotamento
Comunicação por multicast
Virtualização de redes: redes de sobreposição
2/29http://sites.google.com/sitew/leonardobcampos
Introdução
De onde viemos:
http://sites.google.com/sitew/leonardobcampos 3/40
Introdução
Conceitos gerais de Sistemas Distribuídos:
http://sites.google.com/sitew/leonardobcampos 4/40
Introdução
Revisão das Redes de Computadores:
UDP: datagramas
TCP: fluxo (stream)
http://sites.google.com/sitew/leonardobcampos 5/40
Introdução
Revisão das Redes de Computadores:
UDP: datagramas
TCP: fluxo (stream)
http://sites.google.com/sitew/leonardobcampos 6/40
Introdução
Revisão das Redes de Computadores:
UDP: datagramas
TCP: fluxo (stream)
http://sites.google.com/sitew/leonardobcampos 7/40
Comunicação entre Processos
A passagem de mensagens entre um par de
processos pode ser suportada por duas operações
de comunicação de mensagem: send e receive.
◦ Um processo envia (send) uma mensagem (sequência de
bytes) para um destino e o outro processo, no destino,
recebe (receive ) a mensagem
http://sites.google.com/sitew/leonardobcampos 8/40
Comunicação entre Processos
Essa atividade envolve a comunicação de dados do
processo remetente para o processo destino e pode
implicar na sincronização dos dois processos;
◦ Forma síncrona: os processos origem e destino são
sincronizados a cada mensagem;
http://sites.google.com/sitew/leonardobcampos 9/40
◦ send e receive são operações que
causam bloqueio
◦ Ou seja, quando um envio (send) é
feito, o processo origem (ou
thread) é bloqueado até que a
recepção (receive) correspondente
seja realizada;
Comunicação entre Processos
Essa atividade envolve a comunicação de dados do
processo remetente para o processo destino e pode
implicar na sincronização dos dois processos;
◦ Forma assíncrona: o uso da operação send é não
bloqueante.
http://sites.google.com/sitew/leonardobcampos 10/40
◦ Ou seja, processo origem pode
prosseguir assim que a mensagem
tenha sido copiada para o buffer
local, e a transmissão da
mensagem ocorre em paralelo
com o processo origem;
Soquetes
As duas formas de comunicação (UDP e TCP) usam
a abstração de soquete, um ponto de destino para a
comunicação entre processos.
◦ Para que um processo receba mensagens, seu soquete
deve estar vinculado a uma porta local e a um dos
endereços IP do computador em que é executado;
http://sites.google.com/sitew/leonardobcampos 11/40
Soquetes
Observações:◦ As mensagens enviadas para um endereço IP e um número de
porta em particular só podem ser recebidas por um processocujo soquete esteja associado a esse endereço IP e a essenúmero de porta;
◦ Um processo pode usar o mesmo soquete para enviar ereceber mensagens;
◦ Cada computador tem 216 números de portas disponíveis paraserem usados pelos processos;
◦ Qualquer processo pode fazer uso de várias portas parareceber mensagens, mas um processo não pode compartilharportas com outros processos no mesmo computador;
◦ Cada soquete é associado a um protocolo em particular (UDPou TCP).
http://sites.google.com/sitew/leonardobcampos 12/40
Comunicação por datagrama UDP
Um datagrama
enviado pelo
protocolo UDP é
transmitido de um
processo origem
para um processo
destino sem a
existência de
configurações ou
novas tentativas
de envio:
http://sites.google.com/sitew/leonardobcampos 13/40
Socket Cliente UDP
Cliente UDP:
◦ Declaração das variáveis:
http://sites.google.com/sitew/leonardobcampos 14/40
Socket Cliente UDP
Cliente UDP:
◦ Envio das mensagens, até que a palavra “fim” seja digitada
http://sites.google.com/sitew/leonardobcampos 15/40
Socket Servidor UDP
Servidor UDP:
http://sites.google.com/sitew/leonardobcampos 16/40
Socket Servidor UDP
Servidor UDP:
http://sites.google.com/sitew/leonardobcampos 17/40
Representação externa de dados e
empacotamento Independentemente da forma de comunicação
usada, os dados devem ser convertidos em bytes
antes da transmissão e reconstruídos na sua
chegada;
Problemas:
◦ Tipo de dados primitivos diferentes;
http://sites.google.com/sitew/leonardobcampos 18/40
Representação externa de dados e
empacotamento Problemas:
◦ Representação interna de números em ponto flutuante
também difere entre as arquiteturas de processadores (big
endian e little endian);
http://sites.google.com/sitew/leonardobcampos 19/40
Representação externa de dados e
empacotamento Problemas:
◦ Diferentes forma para representar caracteres (ASCII e
Unicode);
http://sites.google.com/sitew/leonardobcampos 20/40
Representação externa de dados e
empacotamento Soluções:
◦ Os valores são convertidos para um formato externo,
acordado antes da transmissão e , na recepção, convertidos
para a forma local; se for sabido que os dois computadores
são do mesmo tipo, a conversão para o formato externo
pode ser omitida;
◦ Os valores são transmitidos no formato de remetente, junto a
uma indicação do formato usado, e o destinatário converte
os valores, se necessário.
http://sites.google.com/sitew/leonardobcampos 21/40
Representação externa de dados e
empacotamento Dessa forma, os bytes em si não têm a ordem de
seus bits alterada durante a transmissão;
http://sites.google.com/sitew/leonardobcampos 22/40
◦ Para suportar a RPC(Remote ProcedureCall – chamadaremota deprocedimento) ouRMI (Remote MethodInvocation –Invocação Remotade Métodos) osdados devem sersimplificado, e osvalores de dadosprimitivos individuais,representados emum formato comum;
Representação externa de dados e
empacotamento Representação externa de dados:
◦ Um padrão aceito para a representação de estruturas de
dados e valores primitivos;
Empacotamento (marshalling)
◦ Procedimento de pegar um conjunto de itens de dados e
montá-los em uma forma conveniente para transmissão em
uma mensagem.
Desempacotamento (unmarshalling)
◦ Geração de valores primitivos a partir de sua representação
externa de dados e reconstrução das estruturas de dados;
http://sites.google.com/sitew/leonardobcampos 23/40
Representação externa de dados e
empacotamento Vejamos quatro estratégias alternativas para
representação externa de dados e empacotamento:
◦ A representação comum de dados do CORBA;
◦ Serialização de objetos da linguagem Java;
◦ XML – eXtensible Markup Language;
◦ JSON – JavaScript Object Notation;
http://sites.google.com/sitew/leonardobcampos 24/40
Representação comum de dados do
CORBA CDR do CORBA é a representação externa dos
dados definida no CORBA 2.0 e consistem em 15
tipos primitivos, como:
http://sites.google.com/sitew/leonardobcampos 25/40
Representação comum de dados do
CORBA Exemplo:
◦ Uma mensagem CDR do CORBA contendo três campos de
um struct cujos tipos respectivos são string, string e unsigned
long.
http://sites.google.com/sitew/leonardobcampos 26/40
Atividades Futuras
Divisão dos Projetos:
◦ RMI em Java
Hugo e Giltean
◦ RMI no CORBA
Romenito e Letícia
◦ JSON
Ícaro e Bruno
◦ Buffers de protocolo (Google case)
Eluzai e Daniel
http://sites.google.com/sitew/leonardobcampos 27/40
Leitura Complementar
Link:
http://sites.google.com/sitew/leonardobcampos 28/29
Bibliografia
George Coulouris, Jean Dollimore, Tim Kindberg,
Sistemas Distribuídos – Conceitos e Projeto, 5th Ed.,
Bookman, 2013.
http://sites.google.com/sitew/leonardobcampos 29/29