Comunicação Inter-Processos Conceitos Iniciais

Propaganda
Prof. Adriano Fiorese
Comunicação Inter-Processos
Conceitos Iniciais
1
Características para Comunicação Inter-Processos
Prof. Adriano Fiorese
. Passagem de Mensagem pode ser suportada
por duas operações de comunicação (send e
receive)
. A comunicação se dá pelo envio da mensagem
(seqüência de bytes) do emissor para o
receptor
. Essa troca de mensagem pode envolver a
sincronização dos processos envolvidos
2
Comunicação Síncrona e Assíncrona
Prof. Adriano Fiorese
. Síncrona: Ambos, emissor e receptor sincronizam-se a
cada mensagem. Assim tanto o send como o receive são
operações bloqueantes.
. Assíncrona: Após o send o processo pode continuar
executando. A operação receive pode ser bloqueante ou
não.
. Destinos das mensagens:
Mensagens são enviadas para endereços Internet e
portas. Uma porta tem exatamente um receptor.
Servidores geralmente publicam seus números de porta
aos clientes.
3
Prof. Adriano Fiorese
Sockets
Source: Coulouris et al. 4th Edition
4
Sockets
. Abstração que
comunicação.
Prof. Adriano Fiorese
.
disponibiliza
um
ponto
final
para
A comunicação inter-processos se dá através da
transmissão de mensagem entre um socket em um
processo e outro socket em outro processo.
. Para o processo receptor o socket deve estar ligado ao
endereço internet local e a uma porta local, no computador
onde ele executa.
. Cada socket está associado com um protocolo particular
(TCP e UDP)
. Processos podem usar o mesmo socket para envio e
recepção de mensagens.
5
Comunicação Inter-Processos
Prof. Adriano Fiorese
RMI
RPC
TCP
UDP (Abstração de passagem de
mensagem)
6
Comunicação UDP - características
. Tamanho da Mensagem:
Prof. Adriano Fiorese
O receptor deve especificar um array de bytes de tamanho
particular onde deverá ser colocada a mensagem recebida.
A maioria das implementações limita o tamanho a 8kb.
Qualquer mensagem maior que o tamanho do array deverá
ser truncada pela aplicação, apesar de o protocolo IP
disponibilizar pacotes com tamanho de até 216 bytes.
7
Comunicação UDP - características
Prof. Adriano Fiorese
. Bloqueamento:
A operação send não é bloqueante. Na chegada, se não
houver socket ligada à porta destino a mensagem será
descartada. O receive bloqueia até que o datagrama seja
recebido a menos que um timeout seja configurado. Pode-se
usar
threads
para
executar
o
processamento
das
mensagens, ao mesmo tempo que outra thread aguarda o
recebimento de outras mensagens.
8
Comunicação UDP – características
Prof. Adriano Fiorese
. Timeouts:
Nem sempre o bloqueio indefinido no recebimento de
mensagens é adequado. Assim, timeouts podem ser
atribuídos às sockets.
Um timeout deve ser longo o bastante para ser maior que o
tempo que uma mensagem demoraria para chegar.
9
Comunicação UDP – características
Prof. Adriano Fiorese
. Recepção de qualquer cliente:
O método receive não especifica uma origem para as
mensagens. Assim, o método receive retorna o endereço
Internet (IP) e a porta local do emissor permitindo a
verificação de onde a mensagem veio.
10
Comunicação com Datagramas UDP
Prof. Adriano Fiorese
Sockets usados para comunicação UDP em *nix SOs
Source: Coulouris et al. 4th Edition
11
Comunicação com Datagramas UDP
. Mensagem enviada sem reconhecimento nem réplicas.
Prof. Adriano Fiorese
. Um servidor deve ligar sua socket receptora a uma porta
servidora que deve ser conhecida ou ficar conhecida
pelos clientes.
. Um cliente pode ligar sua socket a uma porta local livre.
. Na recepção a operação receive retorna o endereço
internet e a porta do emissor.
12
Modelo de Falhas na comunicação UDP
. Sofre de falhas de omissão de comunicação
Prof. Adriano Fiorese
. Falhas de ordenação
Para algumas aplicações é aceitável porque a comunicação
via UDP não sofre de overheads associados com as
garantias de entrega de mensagens. As principais fontes
de overhead são:
1. Necessidade de armazenar informações de estado na
fonte e destino.
2. A transmissão de mensagens extra
3. A latência no emissor.
13
Próximos Passos
Prof. Adriano Fiorese
. Ver exemplos de código para a arquitetura cliente/servidor
utilizando UDP
14
Código em Java - multiplataforma
Servidor
Prof. Adriano Fiorese
Cliente
Source: Coulouris et al. 4th Edition
15
Próximos Passos
Prof. Adriano Fiorese
. Trabalho prático
16
Download