Sistemas Distribuídos

Slides:



Advertisements
Apresentações semelhantes
IFTO ESTRUTURA DE DADOS AULA 05 Prof. Manoel Campos da Silva Filho
Advertisements

Sistemas Distribuídos Baseados em Objetos
Programação em Java Prof. Maurício Braga
Arquitetura de Computadores
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções.
14/10/09 Uma animação possui: Início; Passo; Fim; 1.
BD em.NET: Passo a passo conexão com SQL Server 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.
Técnicas de orçamento de capital
FOLHA DE CÁLCULO 1.
Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 6.
Software Básico Silvio Fernandes
Software Básico Silvio Fernandes
Excel Profa. Cristina M. Nunes.
Capítulo 1 Introdução 1.1 O que é um sistema operacional
Modelos de Comunicação em Sistemas Distribuídos
Arquiteturas de Sistemas Distribuídos: Modelos de Comunicação
Vi 1 Editando com vi. vi 2 Por que vi? l Editar arquivos de configuração l Editar scripts de shell l Disponível em todas as distribuições l Necessita.
Árvores.
Estatística Básica Utilizando o Excel
Interação Cliente Servidor
DNS Introdução.
SSC SISTEMAS OPERACIONAIS I
Capítulo 1 Introdução 1.1 O que é um sistema operacional
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Controle
Organização da Memória Principal
PROGRAMAÇÃO DISTRIBUÍDA EM JAVA Verão/2001
Arquitetura de Computadores
Sincronização e Comunicação entre Processos
Programação Distribuída Jorge Surian Programa da Disciplina.
Tratamento de Ficheiros
Programação Baseada em Objectos Desenho de TAD
Listas Encadeadas.
Classes e objetos Arrays e Sobrecarga
Classes e objetos Modelagem
Classes e objetos P. O. O. Prof. Grace.
Introdução à Programação
Aula prática 8 Ponteiros Monitoria de Introdução à Programação
Árvores binárias de pesquisa com balanceamento
Linguagem de Montagem.
Conteúdos do tutorial O que é um Slide Mestre?
1 António Arnaut Duarte. 2 Sumário: primeiros passos;primeiros passos formatar fundo;formatar fundo configurar apresentação;configurar apresentação animação.
Linguagem de Programação II Parte IX
Estruturas de Dados com Jogos
Funções Universidade Federal de Ouro Preto - UFOP
Estrutura de dados, pseudocódigo
Tópicos em redes e sistemas distribuídos Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Entendendo as definições de classe
Projeto de Banco de Dados
1 2 Observa ilustração. Cria um texto. Observa ilustração.
Computação Gráfica Aula 3 Transformações Geométricas
Capítulo 1 Introdução 1.1 O que é um sistema operacional
Vetores e Matrizes Ameliara Freire
EBSCOhost Pesquisa avançada.
FORMATANDO O TRABALHO NO WORD 2007
UML - Unified Modeling Language
Software Básico Nível ISA Capítulo 5 Mitsuo Takaki
Planilha Eletrônica - Excel
Comunicação.
Professor Esp. Diego André Sant’Ana Disciplina: Sistemas Operacionais II Sistemas de Arquivos- Tipo de arquivos – Cap
Sistemas Distribuídos Prof. Marcus Rodrigues
CES-10 INTRODUÇÃO À COMPUTAÇÃO
Modelos de Comunicação em Sistemas Distribuídos
Modelos de Comunicação em Sistemas Distribuídos
Programação Computacional Aula 8: Entrada e Saída pelo Console Prof a. Madeleine Medrano
Programação Computacional Aula 9: Meu primeiro programa em C
Sistemas de Arquivos- Cap4
Linguagem de Programação
Sistemas Distribuídos Professor Luiz José Hoffmann filho
1 Sistemas Distribuídos – Capítulo 4 - Aula 5 Aula de hoje Chamada de Procedimento Remoto - RPC Aula Passada Clusters de Servidores Migração de Código.
Transcrição da apresentação:

Sistemas Distribuídos Jorge Surian jsurian@uol.com.br Sistemas Distribuídos: Comunicação (RPC)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

RPC – Chamada de Procedimento Remoto Apêndices 17

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

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

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

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

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

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

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

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

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

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

RPC – Chamada de Procedimento Remoto Passagem de Parâmetros por Valor Ou temos JILL e 83.886.080 (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

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

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

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

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

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

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

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