• Nenhum resultado encontrado

DSD20092 3 Com ParteI RPC

N/A
N/A
Protected

Academic year: 2021

Share "DSD20092 3 Com ParteI RPC"

Copied!
39
0
0

Texto

(1)

Comunicação

Parte I

(2)

• A maior parte destas notas de aula são baseadas  nos slides do professor Dr. Ying Lu, da  Disciplina de Sistemas Operacionais  Distribuídos (CSCE455/855), do  Departamento de Ciência da Computação e  Engenharia, da Universidade de Nebraska­ Lincoln. • Os slides originais foram traduzidos do inglês para  porguês, com algumas modificações e  incrementos, em alguns casos.

Créditos:

(3)

Protocolos em Camadas (1)

(4)
(5)

Protcolos de Middleware

Um modelo de referência adaptado para 

comunicação em rede.

(6)

Assuma que você esteja desenvolvendo uma 

aplicação cliente­servidor:

■ Como possibilitar a comunição dos dois processos  (cliente e servidor) localizados em duas máquinas,  comunicarem­se entre si?  ◆ Programação socket: utilizando funções como  connect(sd, (struct sockaddr *)&sin, sizeof(sin)),  write(sd, buf, strlen(buf)), etc. 

Comunicação Cliente­Servidor

(7)

Chamada Remota de Procedimento (RPC)

Evitar a troca explicita de mensagens entre processosA idéia básica é permitir um processo em um  máquina chamar procedimentos em uma máquina  remota – Fazer uma chamada remota parecer uma chamda localArtigo original sobre RPC:A. Birrell, B Nelson, “Implementing Remote Procedure  Calls”, ACM Symposium on Operating System Principles,  1984

(8)

Chamada Convencional de Procedimtno

(a) Passagem de parâmetro em um procedimento local: a pilha  antes da chamada para leitura. (b) A pilha enquanto a chamada 

(9)

Stubs Cliente e Servidor

(10)

Passos de uma RPC

1. O procedimento do cliente chama o stub do cliente de  maneira normal 2. O stub do cliente constrói a mensagem e chama o SO local 3. O SO do cliente envia a mensagem para o SO remoto 4. O SO remoto repassa a mensagem para o stub do servidor 5. O stub do servidor desempacota os parâmetros e chamda o  servidor 6. O servidor realiza o trabalho e retorna o resultado ao stub 7. O stub do servidor empacota os dados em uma mensagem  e chama o SO local 8. O SO do servidor envia a mensagem para o SO do cliente 9. O SO do cliente entrega a mensagem para o stub do cliente 10. O stub desempacota o resultado e retorna para o cliente

(11)

Passando Parâmetros por Valor (1)

Passos envolvidos na computação remota através de RPC 2­8

(12)
(13)

Passando Parâmetros por Valor (3)

a) Mensagem original em um Pentium

(14)

Passando Parâmetros por Valor (3)

a) Mensagem original em um Pentium

b) Mensagem após recebida em um SPARC

c) A mensagem após ser invertida. O números pequenos nas  caixas indicam o endereço de cada byte.

(15)

Passando Parâmetros por Referência

Exemplo: call foo( int, int * ) or read(fd, buf, nbytes)Chamada por copia/restauraçãoO arcaico “problema do ponteiro”Lista lincadaGrafo complexo a b a’ b’

foo(a, &b ) Call foo(a, &b’ )

Copy value a and contents of loc b

into a’ and loc b’

Return Copy contents of loc b’

into b

(16)

Marshalling

Valores precisam passar pela rede

Os formatos de máquina diferem

Ordem de byte inteirolittle­endian ou big­endianFormato de ponto flutuanteIEEE 754 ou não

Marshalling

 − transferindo estruturas de dados  utilizadas em chamadas de procedimento remoto de um  espaço de endereçamento para outro.  Definição de um “formato de rede”, por exemplo, seguindo  o padrão XDR (eXternal Data Representation)  

(17)

RPC: o mecanismo básico

Client routines Client stub RPC runtime Network routines

Source: R. Stevens, Unix Network Programming (IPC) Vol 2, 1998 Server routines Server stub RPC runtime Network routines Process

kernel Processkernel

Client process Server process • O cliente chamda um

procedimento local no stub cliente • O stub do cliente atua como um

proxy e marshalls a chamada e os argumentos.

• O stub cliente envia os dados para o sistema remoto (via TCP/UDP) • O stub do servidor unmarshalls a

chamada e os argumentos do cliente

• O stub do servidor chama o real procedimento no servidor

• O stub do servidor marshalls a resposta e envia ela de volta para o cliente 1 2 3 4 5 6

(18)

Exemplo 1: interface do servidor de relógio

struct time { int seconds; int minutes; int hours; int day; int month; int year; char timezone[4]; }

int gettime(t); struct time *t; int settime(t); struct time *t;

(19)

Exemplo 1: stub cliente para settime

int settime(t); struct time *t; { char *p, message[32]; int stat; p = message; p = put_int(p, SETTIME); p = put_int(p, t­>seconds); p = put_int(p, t­>minutes); p = put_int(p, t­>hours); p = put_int(p, t­>day); p = put_int(p, t­>month); p = put_int(p, t­>year);  p = put_string(p, t­>timezone, 4); stat = do_operation(“time_server”, message, 32); if(stat == SUCCESS) get_int(message, &stat); return(stat); }

(20)

Exemplo 1: stub servidor (1)

void main_loop() { char *p, message[32]; int len, op_code; struct time t; for(;;) { len = receive_request(message, 32); if(len < 4) { /* error handling code */ } p = message; p = get_int(p, op_code); switch(op_code) { case SETTIME:     if (len < 32) { /* error handling code */        }     p = get_int(p, &t.seconds);  p = get_int(p, &t.minutes); p  = get_int(p, &t.hours); p = get_int(p, &t.day); p = get_int(p, &t.month); p = get_int(p, &t.year); p = get_string(p, &t.timezone,  4); len = settime(&t); put_int(message, len); len = 4;  break;   case GETTIME: /* code for unmarshalling and calling gettime */    } send_reply(message, len);   } }

(21)

Escrevendo um cliente

e um servidor (1)

Passos na escrita de um cliente e um servidor em 

DCE RPC.

(22)

Escrevendo um cliente e um servidor (2)

Três arquivos de saída pelo compilador IDL:

Um arquivo de cabeçalho (ex.:  

interface.h, em termos C)

O stub do cliente

O stub do servidor

(23)

Referenciando um cliente a um servidor (1)

O registro de um servidor torna possível ao 

cliente localizar o servidor e criar uma 

referência para ele. 

A localização do servidor é realizada em 

dois passos:

1.Localizar o nome da máquina do servidor. 2.Localizar o servidor na máquina.

(24)

Binding a Client to a Server (2)

(25)

Exemplo: escrevendo um cliente e um servidor (1)

/* interface.x */

/* Example Interface Definition */

struct square_in { long arg; }; struct square_out { long result; }; program SQUARE_PROG { version SQUARE_VERS {

square_out SQUAREPROC( square_in ) = 1; /* Procedure number = 1 */ } = 1; /* Version number = 1 */

} = 0x31230000; /* program number */

Source: R. Stevens, Unix Network Programming (IPC) Vol 2, 1998

(26)

Exemplo: escrevendo um cliente e um servidor (2)

interface.x rpcgen

interface.h Client Main interface_clnt.c

(client stub) interface_xdr.c interface_svc.c (Server stub) Server.c Runtime lib Client Server

Source: R. Stevens, Unix Network Programming (IPC) Vol 2, 1998

(27)

Exemplo: escrevendo um cliente e um servidor 

(mais em “UNIX Network Programming”)

UNIX Network Programming, Volume 2, Second 

Edition: Interprocess Communications, Prentice 

Hall, 1999, ISBN 0­13­081081­9. 

http://www.kohala.com/start/unpv22e/unpv22e.html

(28)

RPC assíncrona (1)

a) A interconexão entre um cliente e um servidor com RPC  tradicional

b) A interação utilizando RPC assíncrona 2­12

(29)

RPC assíncrona (2)

Um cliente e um servidor interagindo através de  duas RPCs assíncronas

(30)

LPC versus RPC

LPC: Local Procedure Call

RPC: Remote Procedure Call

Variáveis globais

Cliente e servidor falham independentemente

RPC: requer código para lidar com as falhas do  servidor

(31)

Quando as coisas dão errado

Semântica das chamadas remotas de procediemntosChamda local de procedimento: exatamente uma vezQuantas vezes uma chamada remota de procedimento  pode ser invocada? • Uma RPC pode ser chamada:0 vezes: o servidor para ou o processo servidor morre antes  de executar o código do servidor – 1 vez: tudo funcionou corretamente – 1 ou mais vezes: excesso de latência ou perda da responsa  do servidor e consequente retransmissão do cliente • Exatamente uma única vez pode ser difícil de atingir  com RPC

(32)

Semânticas RPC

A maioria dos sistemas RPC irá oferecer:

semântica chamada ao menos uma única vezou semântica chamada no máximo uma vez

Compreendendo a aplicação:

Ilustre algumas aplicações que são “ao menos uma  vez” adequadas? – Ilustre algumas aplicações que são “no máximo  uma vez” adequadas?

funções idempotent: podem ser executadas 

(33)

Semânticas RPC

“ao menos uma vez”

Se o cliente e o servidor estiverem funcionais, o  cliente recebe o lock – Se o cliente falhar, ele poderá ou não ter o lock (o  servidor precisa de um plano) – Se o servidor falhar, o cliente pode ter ou não o  lock • O cliente fica tentando. O servidor poderá executar o  procedimento várias vezes. – Podem haver duplicatasO controle é de responsabilidade do cliente.

(34)

Semânticas RPC

“no máximo uma vez”

Se o cliente e o servidor estiverem funcionais, o  cliente recebe o lock – Se o cliente falhar, ele poderá ou não ter o lock (o  servidor precisa de um plano) – Se o servidor falhar, o cliente pode ou não ter o  lock • O cliente irá receber uma excessãoNão há duplicatas a serem controladas

(35)

Semânticas RPC

Ilustre algumas aplicações que são “ao menos 

uma vez” adequadas?

O cliente poderá ficar tentando até obter sucesso.NFS (servidor stateless)O cliente deve saber o que está fazendo.

(36)

Semânticas RPC

Ilustre algumas aplicações que são “no 

máximo uma vez” adequadas?

Garante que múltiplas invocações da mesma RPC  não serão processadas pelo servidor. – Estas aplicações, no lado do servidor, utilizam­se  de mecanismos para detectar múltiplas invoções  de uma mesma RPC. – Exemplo de aplicação: controle de inventário.

(37)

Algumas referências

● RPC: Remote Procedure Call Protocol Specification  Version 2.  http://www.ietf.org/rfc/rfc1831.txt?number=1831 ● XDR: External Data Representation Standard.  http://www.ietf.org/rfc/rfc1832.txt?number=1832 ● Each directory holds the code for a complete RPC  system (server and client).  http://www.cs.rpi.edu/~hollingd/netprog/code/rpc/ ● Remote Procedure Calls.  http://www.linuxjournal.com/article/2204

(38)

Algumas referências

● Chamada Remota de Procedimento.  http://pt.wikipedia.org/wiki/Chamada_de_procedimento_remoto ● Events in an RPC based distributed system.  http://portal.acm.org/citation.cfm?id=1267422 ● Stub. http://pt.wikipedia.org/wiki/Stub ● Marshalling.  http://en.wikipedia.org/wiki/Marshalling_(computer_science ) ● DCE/RPC. http://en.wikipedia.org/wiki/DCE/RPC ● DCE/OpenGroup. http://www.opengroup.org/dce/

(39)

Algumas referências

● IDL.  http://en.wikipedia.org/wiki/Interface_description_language ● UNIX Network Programming, Volume 2, Second  Edition: Interprocess Communications, Prentice Hall,  1999, ISBN 0­13­081081­9.  http://www.kohala.com/start/unpv22e/unpv22e.html ● 6.824 Lecture 2: RPC and threads.  http://pdos.csail.mit.edu/6.824/notes/l02.txt

Referências

Documentos relacionados

Utilizando esta rede para compensar os efeitos não- lineares em malha fechada, cada sinal de controle calculado é multiplicado pelo ganho real e apresentado à rede, que gera o sinal

Resultados: Os subtipos mais comuns de TBEB, classificados pelas características na broncoscopia, foram tumoral e granular (em 22,2% para ambas) A baciloscopia de escarro

O luxuoso Contur design da DORMA abriga a avançada tecnologia eletromagnética do operador CS 80 MAGNEO para portas deslizantes, que opera com baixo consumo de energia..

Foram admitidas as seguintes simplificações, que podem oscilar e assim modificar um determinado valor, para mais ou para menos, e que o interessado em um caso

Potencial = Todos os produtos de mesma CT4 trabalhados pelo ABRADIMEX no canal durante o MATNOV 19;

78 Figura 3.27 Padrão de difração de pós obtido para o complexo ácido nalidíxico:Zn através (a) de síntese por solução, em comparação com os difractogramas

Composição específica da ictiofauna na Gamboa do Perequê nos meses amostrados, com as freqüências absolutas observadas em número de exemplares (Obs), porcentagens

· Indicações sobre cuidados médicos urgentes e tratamentos especiais necessários Não existe mais nenhuma informação relevante disponível.. 5 Medidas de combate