A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Sistemas Distribuídos Jorge Surian Sistemas Distribuídos: Comunicação (RPC)

Apresentações semelhantes


Apresentação em tema: "Sistemas Distribuídos Jorge Surian Sistemas Distribuídos: Comunicação (RPC)"— Transcrição da apresentação:

1 Sistemas Distribuídos Jorge Surian Sistemas Distribuídos: Comunicação (RPC)

2 2 2 RPC – Chamada de Procedimento Remoto Conceitos –Birrell e Nelson (1984), enunciaram uma ideia bastante simples (depois que alguém a teve...) que em resumo permite a processos chamarem procedimentos localizados em outras máquinas. –Assim, quando um processo na máquina A chama um procedimento na máquina B, o processo chamador é suspenso, e a execução do procedimento chamado ocorre em B. Informações podem ser transportadas do chamador para o chamado indo e voltando nos parâmetros desses procedimentos. 2

3 3 3 RPC – Chamada de Procedimento Remoto Conceitos –O desenvolvedor não precisa se preocupar mais com detalhes de implementação de rede (ou seja, pode esquecer dos sockets!). –A ideia é que tudo se passe como se tudo estivesse numa mesma máquina. E tudo transparente ao desenvolvedor. –Embora conceitualmente simples, o RPC talvez não seja o que parece... 3

4 4 4 RPC – Chamada de Procedimento Remoto Primeiros Problemas... 1.Arquiteturas de duas máquinas podem ser diferentes. 2.Espaço de endereçamento diversos. 3.Passagem de parâmetros. 4.O que fazer quando uma das máquinas falha. 4

5 5 5 RPC – Chamada de Procedimento Remoto Entendendo o funcionamento... –A idéia fundamental é fazer com que uma chamada de procedimento remoto pareça com uma chamada local. –Consideremos uma instrução local, para compreendermos o funcionamento de procedimentos... »count = read(fd, buffer, nbytes); –Ora, a função em questão lerá no arquivo associado a fd, o número de caracteres indicado por nbytes, os retornado para a string buffer. Isso ocorre de acordo com a figura apresentada a seguir: 5

6 6 6 RPC – Chamada de Procedimento Remoto Entendendo o funcionamento... 6

7 7 7 RPC – Chamada de Procedimento Remoto Entendendo o funcionamento... 7

8 8 8 RPC – Chamada de Procedimento Remoto Entendendo o funcionamento... –Para fazer a chamada, o chamador passa os parâmetros para a pilha em ordem, começando pelo último, em acordo com esquema abaixo: –Lembrar que assim printf pode sempre localizar a cadeia de formato no primeiro parâmetro que lê. 8

9 9 9 RPC – Chamada de Procedimento Remoto Entendendo o funcionamento... –Quando concluída a execução do procedimento read, este coloca o valor de retorno num registrador, remove o endereço de retorno e devolve o controle ao chamador. –Finalmente são retirados os parâmetros da pilha, devolvendo-a ao estado original que tinha antes da chamada. –Deve ser observado que parâmetros podem ser passados por valor ou por referência. 9

10 10 RPC – Chamada de Procedimento Remoto Entendendo o funcionamento... –Passagem por Valor: »Considere-se a caixa do desenho, passagem por valor é equivalente a abrir a caixa, copiar o conteúdo (valor da variável) e só dar este valor ao procedimento. Obviamente, o valor original ficará na caixa e não mudará. 10

11 11 RPC – Chamada de Procedimento Remoto Entendendo o funcionamento... –Deve ser observado que parâmetros podem ser passados por valor ou por referência. »Passagem por Referência é dar a caixa (variável) ao procedimento e o procedimento pode usar e mudar o valor na caixa. No fim, o procedimento devolve a caixa com o novo valor. 11

12 12 RPC – Chamada de Procedimento Remoto Entendendo o funcionamento... –A ideia que fundamenta a RPC é fazer com que uma chamada de procedimento remoto pareça o mais possível uma chamada local. A RPC deve ser transparente, ou seja, o procedimento de chamadas não deve estar ciente de que o procedimento chamado está executando em uma máquina diferente ou vice-versa. 12

13 13 RPC – Chamada de Procedimento Remoto Entendendo o funcionamento... –Exemplificando: »O programador coloca uma chamada para read no código para obter dados. »Num sistema tradicional, a rotina read é extraída da biblioteca pelo ligador e inserida no programa objeto. 13

14 14 RPC – Chamada de Procedimento Remoto Entendendo o funcionamento... –Exemplificando: »É um procedimento curto, que em geral é implementada chamando uma chamada de sistema read equivalente. Dessa forma, o programador não sabe o que read de fato está fazendo. »RPC consegue sua transparência de modo análogo. Se um read for um procedimento que executará na máquina do servidor de arquivo – uma versão diferente de read, denominada apêndice de cliente, é colocada na biblioteca. 14

15 15 RPC – Chamada de Procedimento Remoto Entendendo o funcionamento... –Exemplificando: »No RPC a função read não pediria ao sistema operacional que lhe dê os dados, mas empacota os parâmetros em uma mensagem seja enviada para o servidor em acordo com o esquema abaixo: 15

16 16 RPC – Chamada de Procedimento Remoto Apêndices –Transparência conseguida com o uso de stubs (apêndices) –Stub do cliente responsável por empacotar os parâmetros em uma mensagem e enviar a mensagem para a máquina do servidor. Quando resposta chega, resultado é copiado para cliente, e controle volta a ele. –Stub do servidor responsável por desempacotar parâmetros, chamar o procedimento do servidor e retornar resposta para máquina do cliente. 16

17 17 RPC – Chamada de Procedimento Remoto Apêndices 17

18 18 RPC – Chamada de Procedimento Remoto RPC em etapas: Procedimento do cliente chama stub cliente de modo usual. Stub do cliente constrói uma msg e chama o Sistema Operacional. Sistema Operacional envia msg para SO remoto. Sistema Operacional remoto repassa msg para stub do servidor. Stub do servidor desempacota parâmetros e chama procedimento servidor. 18

19 19 RPC – Chamada de Procedimento Remoto RPC em etapas: 6. Procedimento servidor executa e retorna o resultado. 7. Stub do servidor empacota resultado em uma msg e chama Sistema Operacional. 8. Sistema Operacional remoto envia msg para SO da máquina cliente. 9. Sistema Operacional do cliente passa msg para stub cliente. 10.Stub cliente desempacota resultado, repassando-o para o cliente. 19

20 20 RPC – Chamada de Procedimento Remoto Passagem de Parâmetros –Função do stub do cliente é pegar seus parâmetros, empacotá-los em uma mensagem e enviá-los ao stub do servidor (montagem de parâmetros - parameter marshaling). –Operação parece simples, mas: »Arquiteturas diferentes? »Passagem de ponteiros (diferente espaço de endereçamento)? 20

21 21 RPC – Chamada de Procedimento Remoto Passagem de Parâmetros por Valor –A chamada do procedimento remoto add(i,j), que pega dois parâmetros inteiros, i e j, e retorna sua soma aritmética como resultado. –O add mostrada na parte esquerda (cliente), é um apêndice de cliente toma seus dois parâmetros e os coloca em uma mensagem como indicado. Coloca também o nome ou o número do procedimento a ser chamado na mensagem porque o servidor poderia suportar várias chamadas diferentes e é preciso lhe dizer qual delas é requerida. 21

22 22 RPC – Chamada de Procedimento Remoto Passagem de Parâmetros por Valor 22

23 23 RPC – Chamada de Procedimento Remoto Passagem de Parâmetros por Valor –Quando a mensagem chega ao servidor, o apêndice a examina para ver qual procedimento é necessário e então faz a chamada apropriada. Se o servidor também suportar outros procedimentos remotos, o apêndice de servidor poderia conter um comando de chaveamento para selecionar o procedimento a ser chamado, dependendo do primeiro campo da mensagem. –A chamada propriamente dita do apêndice para o servidor é parecida com a chamada original do cliente, exceto que os parâmetros são variáveis inicializadas com base na mensagem que entra. 23

24 24 RPC – Chamada de Procedimento Remoto Passagem de Parâmetros por Valor 24

25 25 RPC – Chamada de Procedimento Remoto Passagem de Parâmetros por Valor –Quando o servidor terminou, o apêndice de servidor retorna novamente o controle. Ele pega o resultado devolvido pelo servidor e o empacota em uma mensagem. –A mensagem retorna ao apêndice de cliente, que a desempacota para extrair o resultado e retorna o valor para o procedimento de cliente à espera. 25

26 26 RPC – Chamada de Procedimento Remoto Passagem de Parâmetros por Valor Contanto que as máquinas do cliente e do servidor sejam idênticas e que todos os parâmetros e resultados sejam tipos escalares, como inteiros, caracteres e booleanos, tudo funcionará bem, mas... –Problemas: »Representação diferentes para caracteres (EBCDIC-mainframes IBM e ASCII-PCs IBM). »Ordenação de bytes: Intel Pentium da direita para esquerda (little endian), mas Sun SPARC da esquerda para a direita (big endian), remetendo As viagens de Gulliver na questão de como quebrar ovos... 26

27 27 RPC – Chamada de Procedimento Remoto Passagem de Parâmetros por Valor –Problemas: (a)Mensagem original no Pentium (b)Mensagem após recebimento na SPARC (c)Mensagem após inversão 27

28 28 RPC – Chamada de Procedimento Remoto Passagem de Parâmetros por Valor –Ou temos JILL e (5 x 2 24 ) como em (b) ou temos 5 e LLIJ como em (c). –Ou seja, sem informações adicionais sobre o que é uma string e o que é um número o dano será irreversível. –Solução: Cliente diz seu tipo e a conversão feita pelo servidor se tipos forem diferentes. 28

29 29 RPC – Chamada de Procedimento Remoto Passagem de Parâmetros por Referência –Como passar ponteiros? »Na verdade, o que se quis perguntar é como passar valores por referência, pois os ponteiros nada mais são do que endereços de outras variáveis quaisquer. 29

30 30 RPC – Chamada de Procedimento Remoto Passagem de Parâmetros por Referência –Problema: um ponteiro é significativo somente dentro do espaço de endereço do processo no qual está sendo usado! »Na verdade, esse nem chega a ser um problema, retomemos o exemplo da função em C. count = read(fd, buffer, nbytes); »Lembrando que há um arquivo associado a fd, que o número de caracteres é indicado por nbytes, e ainda que o valor retorna ára string buffer, vamos adotar que 1000 seja o endereço de buffer no cliente. Ora, não podemos esperar que 1000 venha a ser usado no servidor, pois esse endereço poderia estar bem no meio de um programa em execução! 30

31 31 RPC – Chamada de Procedimento Remoto Passagem de Parâmetros por Referência –Mecanismo de passagem de parâmetro copiar/restaurar. –Variável é copiada na pilha do cliente (passagem de parâmetro por valor). O apêndice cliente copia o vetor para a mensagem e o envia ao servidor. –Variável é manipulada no servidor. O apêndice de servidor pode chamar o servidor como um ponteiro para esse vetor, ainda que esse ponteiro tenha um valor numérico distinto do que consta foi fornecido pelo cliente. –Valor de retorno sobre-escreve o valor original na pilha do cliente, pelo apêndice cliente findando o processo. 31

32 32 RPC – Chamada de Procedimento Remoto Passagem de Parâmetros por Referência –No caso do read, stub do cliente sabe que o segundo parâmetro aponta para um conjunto de caracteres –Suponha que o cliente saiba o tamanho do vetor. »Solução: 1.Copiar o vetor para a mensagem e enviar ao servidor. 2.Stub do servidor, chama o servidor com um ponteiro para este vetor. 3.Modificação feita pelo servidor e armazenada diretamente no vetor que esta no stub. 4.Ao enviar o vetor de volta ao stub do cliente, o vetor é copiado de volta ao cliente. 32

33 33 RPC – Chamada de Procedimento Remoto RPC – Linguagem de Programação de Interface - IDL –Interface consiste em um conjunto de procedimentos que podem ser chamados por um cliente e que são implementados por um servidor. –Utilização de interface simplifica consideravelmente aplicações cliente-servidor baseadas em RPCs. –Gerar completamente stubs de cliente e servidor - todos os sistemas de middleware baseados em RPC oferecem uma IDL para suportar desenvolvimento de aplicação. 33

34 34 RPC – Chamada de Procedimento Remoto Em Resumo... –Permite a um cliente o acesso a um serviço remoto por meio de uma simples chamada a um procedimento local. –Possibilita que programas clientes sejam escritos de modo simples. –Pode localizar automaticamente o servidor correto. –Estabelece a comunicação entre software cliente e software servidor. 34

35 35 Copyright © 2010 Prof. Jorge Surian Todos direitos reservados. Reprodução ou divulgação total ou parcial deste documento é expressamente proíbido sem o consentimento formal, por escrito, do Professor Surian. Fonte: Tanenbaum, Andrew S. e Steen, Marteen Van. Sistemas Distribuídos, São Paulo: Prentice Hall, 2008.


Carregar ppt "Sistemas Distribuídos Jorge Surian Sistemas Distribuídos: Comunicação (RPC)"

Apresentações semelhantes


Anúncios Google