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