- O documento discute RPC, RMI e CORBA, técnicas para chamadas de procedimentos remotos em sistemas distribuídos. Ele explica o conceito de RPC e fornece exemplos de seu uso em C. Também compara RPC e RMI e introduz CORBA como uma arquitetura de requisição de objetos comuns.
1. UNIVERSIDADE AGOSTINHO NETO
FACULDADE DE CIÊNCIAS
DEPARTAMENTO DE CIÊNCIAS DA COMPUTAÇÃO
TEMA:
Pesquizadores: Fernando Fortuna Bernardo de Araújo
Jeremias Kugingama Capemba
Grupo nº:
Disciplina: Tópicos Avançados
Regente: Mateus Padoca Calado, MSc.
quarta-feira, 8 de abril de 2015 1
RPC, RMI e CORBA
2. Sumário
Introdução
• Conceitos Sobre Sistemas Distribuidos
• Apoio conceitual de Tanenbaum/Van Steen
• Característica Principais
• Exemplos
Desenvolvimento
• Chamada do Procedimento Remoto (RPC-Remote Procedure Call)
• Metódo de Invocação Remota (RMI-Remote Method Invocation)
• Desvantagens entre RPC vs RMI
• CORBA
Conclusão
Bibliografia
quarta-feira, 8 de abril de 2015 2
3. Introdução
• Sistemas Distribuidos
– é uma coleção de Hardwares e Software s independentes, interconectados por uma rede a
partir de um Software projectado para produzir acções somente por envio Mensagens em
suas comunicações.
– Segundo Tanenbaum/Van Steen , 2002
“Um sistema distribuído é um conjunto de computadores independentes entre
si, que se apresenta a seus usuários como um sistema único e coerente.”
• Características Principais
– Existência de várias máquinas(Computadores/Processadores)
– Existência de Redes (Elemento de InterComunicação)
– Existência do critério de Partilhamento (Trocar Informações)
• Exemplos
– Aplicações comerciais (reservas de bilhetes,
bancos)
– Aplicações Internet (WWW)
– Aplicações de acesso a informações multimídia
(Áudio (voz) e vídeo conferência, P2P-TV)
– Groupware (trabalho cooperativo)
quarta-feira, 8 de abril de 2015 3
4. Chamada de Procedimento Remoto
(RPC-Remote Procedure Call)
• Breve resumo
– 1984, Birrel e Nelson apresentaram um conjunto de questões de métodos remotos
denominados por: “Chamada de Procedimento Remoto”, e com todas essas questões eles
pretendiam que havesse permissão nos programas para chamarem procedimentos
localizados em outras máquinas, mas que o conjunto formasse uma ou várias aplicações
compostas.
Exemplo:
Embora a ideia fora objectiva , existe problemas e tais problemas têm sido detectados
automaticamente.
Destes temos alguns principais:
Problemas no Servidor
Problemas no Cliente
Arquitecturas distintas difere nos tipos de dados
Passgens de Parametros(assinaturas distintas)
Demo read(int x, char *cadeia, long numBytes);
p1= read(valor1, vectNome, qtdBytes);
p2= read(valor2, vectNome2, qtdBytes2, tipo);
quarta-feira, 8 de abril de 2015 4
A B
pc1
pc2
pn
p1
p2
p1
x
pcn
Resposta do procedimento
Máquina A Máquina B
Informações do Chamdor
x
5. Chamada de Procedimento Remoto
(RPC-Remote Procedure Call)
Entretanto, o princípio básico das chamadas de procedimento Remoto consiste do processo de
requisição e resposta no contexto de SDs denomina-se “Cliente/Servidor”.
Onde os comandos básicos consistem em Escrita e Leitura( write«»Escrita ou read«»Leitura ) e destes
são manipulados a cada nova interação para cada RPC.
Análise estrutural e funcional de uma chamada remota, abaixo temos uma Ilustração:
quarta-feira, 8 de abril de 2015 5
Linha do tempo
Linha do tempo
RespostaRequisição
Tempo de Espera do Resultado
Figura Ilustrativa de uma chamada Local
Retorno da ChamdaChamada do procedimento Remoto
B
pc1
pc2
pcn
Servidor
A
pn
p1
p2
xCliente
6. Chamada de Procedimento Remoto
(RPC-Remote Procedure Call)
• Passos de demonstração de um RPC funcional
1. O processo do Cliente chama a sua parte integrante para construção da mensagem(modo padrão).
2. A parte integrante constroi(empacota) a mensagem, posteriormente chama o S.O(Kernel Local) do Cliente.
3. O S.O(Kernel Local) do Cliente envia a mensagem(requisição) construida para o S.O remoto(Kernel Remoto).
4. O S.O remoto(Kernel Remoto) envia a mensagem para parte integrante do Servidor.
5. A parte integrante do Servidor desempacota os paramentros da mensagem e chama o Servidor.
6. O Servidor chama o procedimento com o tipo de assinatura requisitado para prestar serviço e retorna para a
parte integrante do Servidor com a resposta.
7. Aparte integrante do Servidor empacota a resposta(mensagem), posteriormente chama o S.O(Kernel Local) do
Servidor.
8. O S.O(Kernel Local) do Servidor envia a mensagem(resposta) construida para o S.O remoto(Kernel Remoto).
9. O S.O remoto(Kernel Remoto) envia a mensagem(resposta) para S.O(Kernel Local) do Cliente.
10. O S.O(Kernel Local) do Cliente envia-na para a parte integrante.
11. A parte integrante desempacota a mensagem(resposta), posteriormente retorna para ao Cliente(modo padrão).
Obs.: O objectivo principal de uma parte integrante é de Empacotar/Desempacotar os
parâmetros de uma mensagem.
quarta-feira, 8 de abril de 2015 6
7. Chamada de Procedimento Remoto
(RPC-Remote Procedure Call)
• 1- Algoritmia Usando RPC na linguagem C
– Exercício: Dado um programa com um procedimento que acha a soma entre dois números,
crie um Cliente e Servidor e registe-os usando RPC. Obs.: Efectue algumas demonstrações.
// Definição das estrutura para os procedimento de entrada e saída
struct campos{
long num1; // pararametro de entrada
long num2; // pararametro de saída
};
program SOMA{
version ADICAO {
int ADD(campos) = 1;
} = 1; // Numero da versão: 1
} = 0x2fffffff; // valor de identificação do programa
Obs.: Agora basta termos instalado em nosso computador(PC) o RPCGen(Gerador de RPCs) e
executar o programa add com a extensão .x, Ex: “ add.x” após ter sido salvo. Será gerado 7
ficheiros para posseguirmos com a DEMONSTRAÇÃO...
quarta-feira, 8 de abril de 2015 7
8. Chamada de Procedimento Remoto
(RPC-Remote Procedure Call)
• 2- Algoritmia Usando RPC na linguagem C
– Exercício: Dado um programa com um procedimento que acha a raiz quadrada de um
numero, crie um Servidor e registe-o usando RPC. Obs.: Efectue algumas demonstrações.
// Definição das estrutura para os procedimento de entrada e saída
struct quadrado_in{
long argumento; // pararametro de entrada
};
struct quadrado_out{
long resultado; // pararametro de saída
};
program quadrado{
version versao_quadrado {
quadrado_out = SQUAREPROC(quadrado_in) = 1;
} = 1; // Numero da versão: 1
} = 0x31230000; // valor de identificação do programa
Obs.: Agora basta termos instalado em nosso computador(PC) o RPCGen(Gerador de RPCs) e
executar o programa quadrado com a extensão .x, Ex: “ quadrado.x” após ter sido salvo será
gerado 7 ficheiros para posseguirmos com a DEMONSTRAÇÃO...
quarta-feira, 8 de abril de 2015 8