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

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

Sistemas Distribuídos

Apresentações semelhantes


Apresentação em tema: "Sistemas Distribuídos"— Transcrição da apresentação:

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

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 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 RPC – Chamada de Procedimento Remoto
Primeiros Problemas... Arquiteturas de duas máquinas podem ser diferentes. Espaço de endereçamento diversos. Passagem de parâmetros. O que fazer quando uma das máquinas falha. 4

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 RPC – Chamada de Procedimento Remoto
Entendendo o funcionamento... 6

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

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 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 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 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 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 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 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 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 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 RPC – Chamada de Procedimento Remoto
Apêndices 17

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 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 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 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 RPC – Chamada de Procedimento Remoto
Passagem de Parâmetros por Valor 22

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 RPC – Chamada de Procedimento Remoto
Passagem de Parâmetros por Valor 24

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 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 RPC – Chamada de Procedimento Remoto
Passagem de Parâmetros por Valor Problemas: Mensagem original no Pentium Mensagem após recebimento na SPARC Mensagem após inversão 27

28 RPC – Chamada de Procedimento Remoto
Passagem de Parâmetros por Valor Ou temos JILL e (5 x 224) 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 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 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 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 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: Copiar o vetor para a mensagem e enviar ao servidor. Stub do servidor, chama o servidor com um ponteiro para este vetor. Modificação feita pelo servidor e armazenada diretamente no vetor que esta no stub. Ao enviar o vetor de volta ao stub do cliente, o vetor é copiado de volta ao cliente. 32

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 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 Fonte: Tanenbaum, Andrew S. e Steen, Marteen Van. Sistemas Distribuídos, São Paulo: Prentice Hall, 2008. Copyright © 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.


Carregar ppt "Sistemas Distribuídos"

Apresentações semelhantes


Anúncios Google