Comunicação entre Processos...Comunicação entre Processos Essa atividade envolve a comunicação...

29
Comunicação entre Processos Prof. Leonardo Barreto Campos http://sites.google.com/sitew/leonardobcampos 1/29

Transcript of Comunicação entre Processos...Comunicação entre Processos Essa atividade envolve a comunicação...

Page 1: Comunicação entre Processos...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

Comunicação entre Processos

Prof. Leonardo Barreto Campos

http://sites.google.com/sitew/leonardobcampos 1/29

Page 2: Comunicação entre Processos...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

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

Page 3: Comunicação entre Processos...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

Introdução

De onde viemos:

http://sites.google.com/sitew/leonardobcampos 3/40

Page 4: Comunicação entre Processos...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

Introdução

Conceitos gerais de Sistemas Distribuídos:

http://sites.google.com/sitew/leonardobcampos 4/40

Page 5: Comunicação entre Processos...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

Introdução

Revisão das Redes de Computadores:

UDP: datagramas

TCP: fluxo (stream)

http://sites.google.com/sitew/leonardobcampos 5/40

Page 6: Comunicação entre Processos...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

Introdução

Revisão das Redes de Computadores:

UDP: datagramas

TCP: fluxo (stream)

http://sites.google.com/sitew/leonardobcampos 6/40

Page 7: Comunicação entre Processos...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

Introdução

Revisão das Redes de Computadores:

UDP: datagramas

TCP: fluxo (stream)

http://sites.google.com/sitew/leonardobcampos 7/40

Page 8: Comunicação entre Processos...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

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

Page 9: Comunicação entre Processos...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

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;

Page 10: Comunicação entre Processos...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

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;

Page 11: Comunicação entre Processos...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

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

Page 12: Comunicação entre Processos...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

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

Page 13: Comunicação entre Processos...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

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

Page 14: Comunicação entre Processos...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

Socket Cliente UDP

Cliente UDP:

◦ Declaração das variáveis:

http://sites.google.com/sitew/leonardobcampos 14/40

Page 15: Comunicação entre Processos...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

Socket Cliente UDP

Cliente UDP:

◦ Envio das mensagens, até que a palavra “fim” seja digitada

http://sites.google.com/sitew/leonardobcampos 15/40

Page 16: Comunicação entre Processos...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

Socket Servidor UDP

Servidor UDP:

http://sites.google.com/sitew/leonardobcampos 16/40

Page 17: Comunicação entre Processos...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

Socket Servidor UDP

Servidor UDP:

http://sites.google.com/sitew/leonardobcampos 17/40

Page 18: Comunicação entre Processos...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

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

Page 19: Comunicação entre Processos...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

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

Page 20: Comunicação entre Processos...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

Representação externa de dados e

empacotamento Problemas:

◦ Diferentes forma para representar caracteres (ASCII e

Unicode);

http://sites.google.com/sitew/leonardobcampos 20/40

Page 21: Comunicação entre Processos...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

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

Page 22: Comunicação entre Processos...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

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;

Page 23: Comunicação entre Processos...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

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

Page 24: Comunicação entre Processos...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

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

Page 25: Comunicação entre Processos...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

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

Page 26: Comunicação entre Processos...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

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

Page 27: Comunicação entre Processos...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

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

Page 29: Comunicação entre Processos...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

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