conumicação
Carlos Ferraz cagf@cin.ufpe.br Tópicos
! Elementos básicos de comunicação
" Transmissão de dados
" Endereçamento
" Sincronismo
" Enfileiramento (Bufferização)
" Confiabilidade
! Sockets
! RPC: Remote Procedure Call
! Comunicação de objetos distribuídos
© 2003 Carlos A. G. Ferraz
2
Camadas
Aplicações e serviços
RMI e RPC
Protocolo Request-Reply
Marshalling e eXternal Data Representation
middleware
TCP e UDP (sockets)
© 2003 Carlos A. G. Ferraz
3
Transmissão de dados
! Dados em programas são estruturados enquanto que mensagens carregam informação sequencial:
" » Linearização/Restauração de dados
! Heterogeneidade na representação de dados em computadores: " » Uso de um formato externo comum
" » Inclusão de uma identificação de arquitetura na mensagem © 2003 Carlos A. G. Ferraz
4
Marshalling/Unmarshalling
! Marshalling:
" Linearização de uma coleção de itens de dados estruturados " Tradução dos dados em formato externo (ex: XDR)
! Unmarshalling:
" Tradução do formato externo para o local
" Restauração dos itens de dados de acordo com sua estrutura © 2003 Carlos A. G. Ferraz
5
Endereçamento
! Esquemas:
" Endereçamento máquina.processo
" Descoberta de endereço via broadcasting (difusão)
" Descoberta de endereço via um servidor de nomes
! Problemas potenciais: transparência de localização, sobrecarga, escalabilidade
© 2003 Carlos A. G. Ferraz
6
Comunicação síncrona
! Primitiva send é bloqueante: processo cliente aguarda enquanto o núcleo envia a mensagem para o processo servidor
! Primitiva receive é bloqueante: processo servidor aguarda até que o núcleo receba uma mensagem endereçada para aquele processo
© 2003 Carlos A. G. Ferraz
7
Comunicação assíncrona
! Primitiva send não é bloqueante: o processo cliente aguarda somente enquanto a mensagem é copiada para o buffer do núcleo
! Primitiva receive pode ser:
" bloqueante: o processo