Sistemas Distribuídos
Prof. Marcus Rodrigues
[email protected]
Comunicação em
Sistemas Distribuídos
Capítulo 2 – Aula 7
Comunicação em Sistemas
Distribuídos
Prof. Marcus Rodrigues

Material baseado no
livro
Distributed Systems:
Principles and Paradigms
Prentice Hall
Copyright © Andrew S.
Tanembaum, Maarten van
Steen, 2001
Sistemas Distribuídos – Capítulo 2 – Chamada Remota de Procedimentos
Chamada Remota de
Procedimentos

Protocolos de comunicação
Comunicação baseada em primitivas de
comunicação (send & receive)
Prof. Marcus Rodrigues
•

Transparência?
Chamada remota de procedimentos
(RPC – Remote Procedure Call)
•
•
Permite que programas chamem procedimentos
localizados em outra máquinas
Nenhuma passagem de mensagem é visível ao
programador
Sistemas Distribuídos – Capítulo 2 – Chamada Remota de Procedimentos
Operação básica de uma RPC
Prof. Marcus Rodrigues
count = read(fd, buf, nbytes);

Passagem de parâmetro por valor x passagem de parâmetro por
referência
Sistemas Distribuídos – Capítulo 2 – Chamada Remota de Procedimentos
Stubs Cliente e Servidor
RPC entre programa cliente e servidor

RPC assemelha-se a uma chamada local.
Prof. Marcus Rodrigues

Sistemas Distribuídos – Capítulo 2 – Chamada Remota de Procedimentos
Passos de uma RPC
1.
2.
3.
Prof. Marcus Rodrigues
4.
5.
6.
7.
8.
9.
10.
Procedimento cliente chama stub cliente
Stub cliente monta uma mensagem, e faz uma chamada
local ao SO
SO do cliente envia uma mensagem ao SO remoto
SO remoto entrega a mensagem ao stub servidor
Stub servidor desempacota os parâmetros, e chama o
procedimento servidor
Servidor executa o trabalho, e retorna o resultado ao stub
Stub servidor empacota a mensagem, e chama o SO
local
SO do servidor envia a mensagem ao cliente
SO do cliente entrega a mensagem ao stub cliente
Stub desempacota o resultado, e retorna ao cliente
Sistemas Distribuídos – Capítulo 2 – Chamada Remota de Procedimentos
Passagem de parâmetros por
valor (1)
Prof. Marcus Rodrigues
2-8
Sistemas Distribuídos – Capítulo 2 – Chamada Remota de Procedimentos
Prof. Marcus Rodrigues
Passagem de parâmetros por
valor (2)
a)
b)
c)
Mensagem original no Pentium
Mensagem recebida no SPARC
Mensagem após inversão.
Sistemas Distribuídos – Capítulo 2 – Chamada Remota de Procedimentos
Doors
Uso de doors como mecânismo IPC
Prof. Marcus Rodrigues

Sistemas Distribuídos – Capítulo 2 – Chamada Remota de Procedimentos
RPC Assíncrona (1)
Prof. Marcus Rodrigues
2-12
Sistemas Distribuídos – Capítulo 2 – Chamada Remota de Procedimentos
RPC Assíncrona (2)
Prof. Marcus Rodrigues
2-13
Sistemas Distribuídos – Capítulo 2 – Chamada Remota de Procedimentos
Escrevendo um Cliente e um
Servidor
Prof. Marcus Rodrigues
2-14
Sistemas Distribuídos – Capítulo 2 – Chamada Remota de Procedimentos
Associando um Cliente a um
Servidor
Prof. Marcus Rodrigues
2-15
Sistemas Distribuídos – Capítulo 2 – Chamada Remota de Procedimentos
Sun RPC


Prof. Marcus Rodrigues



Projetado para realizar a comunicação
entre servidor e cliente no NFS
Suporta TCP e UDP
Semântica at-least-once (UDP), at-mostonce (TCP)
Utiliza uma linguagem para descrição da
interface chamada XDR
Não implementa de forma completa a
transparência total de localização
(clnt_create)
Sistemas Distribuídos – Capítulo 2 – Chamada Remota de Procedimentos
Sun RPC

XDR (External Data Representation)
• especifica um conjunto de definições de
Prof. Marcus Rodrigues
•
procedimentos e definições de tipos suportados
definição da interface
• número de programa e número de versão
• definição de procedimento
• assinatura de procedimento e número de
procedimento
• suporte a um único valor como entrada e como
•
saída (utilização de structs)
assinatura de procedimento: tipo da saída,
nome do procedimento, tipo da entrada
Sistemas Distribuídos – Capítulo 2 – Chamada Remota de Procedimentos
Sun RPC
Exemplo de XDR
Prof. Marcus Rodrigues

Sistemas Distribuídos – Capítulo 2 – Chamada Remota de Procedimentos
Prof. Marcus Rodrigues
Sun RPC

Geração dos stubs

Gera os arquivos
• rpcgen addit.x
• addit.h
• addit_clnt.c
• addit_svc.c
• addit_xdr.c
Sistemas Distribuídos – Capítulo 2 – Chamada Remota de Procedimentos
Prof. Marcus Rodrigues
Sun RPC
Sistemas Distribuídos – Capítulo 2 – Chamada Remota de Procedimentos
Prof. Marcus Rodrigues
Sistemas Distribuídos – Capítulo 2 – Chamada Remota de Procedimentos
Prof. Marcus Rodrigues
Sistemas Distribuídos – Capítulo 2 – Chamada Remota de Procedimentos
Sun RPC

Geração do cliente e servidor
• gcc add_clnt.c addit_clnt.c addit_xdr.c -o
Prof. Marcus Rodrigues
•

addit_clnt -lnsl
gcc addit_svc.c add_svc.c addit_xdr.c -o
addit_svc -lnsl
Execução
• O daemon portmap deve estar rodando!
Sistemas Distribuídos – Capítulo 2 – Chamada Remota de Procedimentos
Sun RPC

Binding
• servidor registra localmente o programa
Prof. Marcus Rodrigues
(identificador, versão, porta) utilizando o
portmapper

Autenticação
• Sem autenticação
• Autenticação UNIX (UID e GID)
• DES (Data Encryption Standard)
Sistemas Distribuídos – Capítulo 2 – Chamada Remota de Procedimentos
Download

Sistemas Distribuídos