Sistemas Distribuídos Capítulo 4 - Aula 5



Documentos relacionados
Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Capítulo 6 - Threads

Sistemas Distribuídos: Conceitos e Projeto RPC e RMI

BC1424 Algoritmos e Estruturas de Dados I Aula 02: Ponteiros, estruturas e alocação de memória

2) Em relação aos algoritmos de sincronização de relógios:

Sistema Operacional. Implementação de Processo e Threads. Prof. Dr. Márcio Andrey Teixeira Sistemas Operacionais

Fundamentos de Arquitetura e Organização de Computadores

Arquitetura de Computadores EL66C 1a. Prova - Gabarito 26/04/10

6 CONCEPÇÃO BÁSICA DO SISTEMA DE APOIO À DECISÃO

RPC e RMI. Sistemas Distribuídos. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento de Informática Campus Monte Castelo

Prof. Adilson Gonzaga. Interface com Displays

Montadores e Compiladores

Arquitetura de Computadores - Módulos de E/S. por Helcio Wagner da Silva

Arquitetura e Organização de Computadores

Arquiteturas para Sistemas Distribuídos I

Gerenciamento de Memória Minix 3.1.7

3. COMPILAÇÃO E ESTRUTURA BÁSICA DE UM PROGRAMA EM C

O Sistema de Computação

Programação de Computadores I. Linguagem C Função

1.1. Definição do Problema

- Campus Salto. Disciplina: Sistemas de Arquivos Docente: Fernando Santorsula

O AMBIENTE DELPHI. Programação de Computadores.

Avaliação e Desempenho Aula 1 - Simulação

Conceitos básicos de programação

Oganização e Arquitetura de Computadores

Conceitos c++ Prof. Demétrios Coutinho INFORMÁTICA BÁSICA

Introdução a Banco de Dados. INTRODUÇÃO

Interface com Displays de 7 Segmentos. Interface com Displays

INTEGRAÇÃO JAVA COM ARDUINO

Guia para instalação da Loja demonstração

CONFIGURANDO SERVIDOR SAT SS-1000

Arquitetura de Computadores - Operação da Unidade de Controle. por Helcio Wagner da Silva

Arquitetura TCP/IP. Apresentado por: Ricardo Quintão

Sistemas Distribuídos

Manual do Usuário SISCOLE - Sistema de Cadastro de Organismos e Laboratórios Estrangeiros

Processo de Desenvolvimento de Software

Proporcionar a modelagem de sistemas utilizando todos os conceitos da orientação a objeto;

Sistemas Operacionais. Entrada e Saída. Edeyson Andrade Gomes.

Do alto-nível ao assembly

Nota Fiscal Alagoana. Manual para Envio de Arquivo de Cupons Fiscais via Webservice

DESVENDADO O TCP/IP. Prof. Me. Hélio Esperidião

Sistemas de Objetos DistribuídosRevisão Java e Java ORBs p.1/26

Manual Escrituração Fiscal Digital

Informática Aplicada

EMENTA. Curso de Projetos Microcontrolados utilizando Linguagem C.

Algoritmos APRENDENDO A PROGRAMAR COM C#

Aula 05 Instalação e Uso do Arcabouço. Alessandro Garcia Alexander Chávez LES/DI/PUC-Rio Março 2016

Sistemas Distribuídos Capítulo 8 - Aula 14

Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras - PURO

Organização e Arquitetura de Computadores I

Impressora em Cores Xerox 800/1000 Impressão de divisórias

Sistemas Distribuídos e Redes de Sensores

Roteiro... Sistemas Distribuídos Aula 4. Troca de mensagens. Comunicação entre processos. Conceitos de SD, vantagens e desvantagens

Invocação Remota. Prof. Leonardo Barreto Campos. 1/29

Microcontroladores e Microprocessadores. Conversão de Bases Prof. Samuel Cavalcante

INE 5323 Banco de Dados I

Conteúdo Programático

OBSERVAÇÕES: EXERCÍCIOS

TUTORIAL DO SISTEMA CE MERCANTE

Geração de Nota Fiscal Eletrônica de Serviço (06085)

Capítulo VI Circuitos Aritméticos

TUTORIAL MATLAB Victor Breder 2016

Referências. Programação de Computadores II. Cap. 7 Cadeias de Caracteres. Caracteres. Tópicos

Introdução. Software Básico Aula 3. Prof. Dr. Rogério Vargas.

Algoritmos e Estruturas de Dados I. Variáveis Indexadas. Pedro O.S. Vaz de Melo

PROGRAMAÇÃO ORIENTADA A OBJETO INTRODUÇÃO

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C. Exercícios: Structs

Guia de instalação. Página 1 de 14

Nota de Aplicação. Migração Altivar 58(F) para Altivar 71 com rede Profibus. Suporte Técnico Brasil. Versão: 1.0

OpenPDV: Sistema aberto para gerenciamento de restaurantes

Sistemas Distribuídos

Caminho de Dados e Controle. Prof. Leonardo Barreto Campos 1

Utilizar série 8 sempre que for gerar dados para o Converge.NET.

PROGRAMA TERRITÓRIOS DA CIDADANIA. # Manual Operacional # Matriz de Ações 2013

SISTEMA OPERACIONAL - ios

Orientação a Objetos

UTILIZAÇÃO DE ARQUITETURA EM CAMADAS BASEADA NO MODEL VIEW CONTROLLER, EM APLICAÇÕES WEB

Elementos básico de uma rede Samba - Local Master Browser

TOKEN RING & TOKEN BUS

PROGRAMA DE VALORIZAÇÃO DO PROFISSIONAL DA ATENÇÃO BÁSICA TUTORIAL PARA O COORDENADOR PLANO DE TRABALHO PROVAB 2014

PROVA DE NOÇÕES DE INFORMÁTICA

Comunicação. Carlos A. G. Ferraz 25/6/2003. Sistemas Distribuídos 1. Tópicos. Camadas. Transmissão de dados. Marshalling/Unmarshalling.

Algoritmos e Programação : Conceitos e estruturas básicas. Hudson Victoria Diniz

2. Tipos Abstratos de Dados

Direto. ao Ponto. Comunicação Ethernet tipo TCP/IP com robô (CR-750/751D) N o. DAP-RBT-01. Rev. A

Histórico e Evolução da Computação

Programação Linear - Parte 4

Transcrição:

Sistemas Distribuídos Capítulo 4 - Aula 5 Aula Passada Clusters de Servidores Migração de Código Comunicação (Cap. 4) Aula de hoje Chamada de Procedimento Remoto - RPC Fundamentos 1

Chamada de Procedimento Remoto Birrell and Nelson (1984) Permite a processos chamar procedimentos localizados em outras máquinas Desenvolvedor não precisa se preocupar mais com detalhes de implementação de rede (sockets nunca mais!) Conceitualmente simples, mas...

Chamada de Procedimento Remoto - RPC Problemas Arquiteturas de duas máquinas podem ser diferentes Espaço de endereçamento diversos Passagem de parâmetros

Chamada de Procedimento Remoto - RPC A idéia fundamental é fazer com que uma chamada de procedimento remoto pareça com uma chamada local Transparência

Chamada de Procedimento Remoto - Modelo Similar ao modelo de chamadas locais de procedimentos Rotina que invoca o procedimento coloca os argumentos em uma área de memória bem conhecida e transfere o controle para o procedimento em execução, que lê os argumentos e os processa. Em algum momento, a rotina retoma o controle, extraindo o resultado da execução de uma área bem conhecida da memória. Após isso, a rotina prossegue com a execução normal.

Chamada de Procedimento Remoto - Modelo Thread é responsável pelo controle de dois processos: invocador e servidor. O processo invocador primeiro manda uma mensagem para o processo servidor e aguarda (bloqueia) uma mensagem de resposta. A mensagem de invocação contém os parâmetros do procedimento e a mensagem de resposta contém o resultado da execução do procedimento. Uma vez que a mensagem de resposta é recebida, os resultados da execução do procedimento são coletados e a execução do invocador prossegue.

Chamada de Procedimento Remoto - Modelo Do lado do servidor, um processo permanece em espera até a chegada de uma mensagem de invocação. Quando uma mensagem de invocação é recebida, o servidor extrai os parâmetros, processa-os e produz os resultados, que são enviados na mensagem de resposta. O servidor, então, volta a esperar por uma nova mensagem de invocação.

Chamada de Procedimento Remoto - Modelo

Chamada de Procedimento Remoto - Modelo Uma chamada remota de procedimento difere das chamadas locais em alguns pontos: Tratamento de erros: falhas do servidor ou da rede devem ser tratadas. Variáveis globais e efeitos colaterais: Uma vez que o servidor não possui acesso ao espaço de endereços do cliente, argumentos protegidos não podem ser passados como variáveis globais ou retornados. Desempenho: chamadas remotas geralmente operam a velocidades inferiores em uma ou mais ordens de grandeza em relação às chamadas locais. Autenticação: uma vez que chamadas remotas de procedimento podem ser transportadas em redes sem segurança, autenticação pode ser necessário.

Operação Básica de RPC Chamada de procedimento convencional fd buf lidos nbytes count = read (fd, buf, nbytes) descritor de um arquivo vetor para o qual os caracteres serão quantos bytes serão lidos

Operação Básica de RPC Chamada de procedimento convencional Em C, parâmetros podem ser chamados por valor ou chamados por referência Em RPCs A diferença entre chamadas por valor e por referência é importante Outro mecanismo de passagem de parâmetros é o copiar/restaurar: chamador copia a variável para a pilha e ao copiá-la de volta, sobreescreve o valor original semelhante a chamada por referência

Operação Básica de RPC Consideremos a chamada da função read Em um sistema tradicional, a função read é um tipo de interface entre o código de usuário e o sistema operacional local Usando RPC, é possível conseguir transparência na execução da função read Por ser um procedimento remoto, uma versão diferente da função read, denominada apêndice de cliente é colocada na biblioteca Ela não pede por dados ao SO local. Empacota os parâmetros em uma mensagem e a envia ao servidor

Operação Básica de RPC Usando RPC, é possível conseguir transparência na execução da função read Apêndice de cliente chama receive, bloqueando até que a resposta volte Quando a mensagem chega ao servidor, o SO do servidor a passa para um apêndice do servidor O apêndice de servidor desempacota os parâmetros da mensagem e chama o procedimento do servidor da maneira usual

Operação Básica de RPC Usando RPC, é possível conseguir transparência na execução da função read Do ponto de vista do servidor, é como se ele fosse chamado diretamente pelo cliente No caso de read o servidor colocará os dados no buffer, interno ao apêndice de servidor Ao final, empacota o buffer em uma mensagem e retorna o resultado ao cliente Ao chegar no cliente, o SO reconhece que a msg está direcionada ao processo cliente Msg é copiada para o buffer e o processo cliente é desbloqueado

Operação Básica de RPC

Operação Básica de RPC Transparência conseguida com o uso de stubs (apêndices) Stub do cliente responsável por empacotar os parâmetros em uma msg e enviar a msg 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

Operação Básica de RPC Máquina Cliente Máquina Servidora Cliente Chamada Retorno Empacota Parâmetros Desempacota Resultado Desempacota Parâmetros Empacota Resultado Chamada Retorno Servidor Stub do Cliente SO Stub do Servidor SO Transporte de mensagens na rede

Passos seguidos por um RPC 1. Procedimento do cliente chama stub cliente de modo usual 2. Stub do cliente constrói uma msg e chama o SO 3. SO envia msg para SO remoto 4. SO remoto repassa msg para stub do servidor 5. Stub do servidor desempacota parâmetros e chama procedimento servidor 6. Procedimento servidor executa e retorna o resultado 7. Stub do servidor empacota resultado em uma msg e chama SO 8. SO remoto envia msg para SO da máquina cliente 9. SO do cliente passa msg para stub cliente 10. Stub cliente desempacota resultado, repassando-o para o cliente

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)?

Passagem de Parâmetros por valor

Passagem de parâmetros por valor A chamada do procedimento remoto add somente funcionará se as máquinas do cliente e do servidor forem idênticas Problemas: Representação diferentes para caracteres Ordenação de bytes

Passagem de parâmetros por valor

Passagem de parâmetros por valor Solução: Cliente diz seu tipo. Conversão feita pelo servidor se tipos forem diferentes.

Passagem de parâmetros por referência Como são passados ponteiros ou, em geral, referências? Um ponteiro somente é significativo dentro do espaço de endereço do processo no qual está sendo usado!

Passagem de parâmetros por referência Consideremos a função 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/restaurar: 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 é armazenada diretamente no vetor que está no stub Ao enviar o vetor de volta ao stub do cliente, o vetor é copiado de volta ao cliente

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

Possíveis falhas em RPCs O cliente não consegue localizar o servidor A mensagem de requisição do cliente para o servidor é perdida A mensagem de resposta do servidor para o cliente é perdida O servidor falha depois de receber uma requisição O cliente falha depois de fazer uma requisição

Possíveis falhas em RPCs O cliente não consegue localizar o servidor Causas: Servidor Desligado Versão desatualizada da interface Soluções Retornar o código indicando erro Ativar exceção: destroir a transparência

Possíveis falhas em RPCs A mensagem de requisição do cliente para o servidor é perdida Soluções Kernel do cliente inicializa um timer assim que a mensagem é enviada Se o timer expirar antes da resposta, o cliente re-envia a mensagem

Possíveis falhas em RPCs A mensagem de resposta do servidor para o cliente é perdida

RPC Assíncrona Chamadas de procedimentos convencionais cliente bloqueia até que uma resposta seja retornada RPCs podem implementar facilidades pelas quais um cliente continua imediatamente após emitir a requisição RPC RPCs assíncronas

RPC Assíncrona