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 http://sites.google.com/sitew/leonardobcampos 2/29
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; 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; http://sites.google.com/sitew/leonardobcampos 9/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 assíncrona: o uso da operação send é não bloqueante. 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; http://sites.google.com/sitew/leonardobcampos 10/40
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 processo cujo soquete esteja associado a esse endereço IP e a esse número de porta; Um processo pode usar o mesmo soquete para enviar e receber mensagens; Cada computador tem 2 16 números de portas disponíveis para serem usados pelos processos; Qualquer processo pode fazer uso de várias portas para receber mensagens, mas um processo não pode compartilhar portas com outros processos no mesmo computador; Cada soquete é associado a um protocolo em particular (UDP ou 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 Problemas: empacotamento 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 Problemas: empacotamento Diferentes forma para representar caracteres (ASCII e Unicode); http://sites.google.com/sitew/leonardobcampos 20/40
Representação externa de dados e Soluções: empacotamento 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; Para suportar a RPC (Remote Procedure Call chamada remota de procedimento) ou RMI (Remote Method Invocation Invocação Remota de Métodos) os dados devem ser simplificado, e os valores de dados primitivos individuais, representados em um formato comum; http://sites.google.com/sitew/leonardobcampos 22/40
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 Exemplo: CORBA 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