SISTEMAS DISTRIBUÍDOS Chamada remota de procedimento Slide 4 Nielsen C. Damasceno Chamada remota de procedimento • O RPC (Remote Procedure Call), uma aplicação realiza a chamada de procedimentos que são executados em máquinas remotas. • Para isso, na chamada ao procedimento remoto, ele efetua a transferência dos parâmetros à máquina remota, aguarda a execução do procedimento e recebe o retorno das informações enviadas como resposta da máquina remota Chamada remota de procedimento Problemas • Espaços de endereçamento diferentes nas máquinas, já que cada máquina possui seu próprio espaço de endereçamento. • Arquiteturas diferentes, interferindo nos tipos de dados. Podemos ter uma máquina com arquitetura de 32 bits e outra com arquitetura de 64 bits. Características • Exemplo chamada de procedimento local. Local • Exemplo chamada de procedimento local. Remoto • Para o sistema operacional, o envio e recebimento de mensagens são transparentes, ou seja, ele não sabe que é uma chamada remota de procedimentos. • No lado do cliente: – Versão no cliente responsável por iniciar a RPC. – Esta versão recebe os parâmetros do procedimento e empacota para envio ao servidor, usando send interno de Sockets. – Após o envio, fica bloqueado (em receive) esperando a resposta do servidor. Remoto • No lado servidor: – Serviço do sistema operacional responsável por receber um pacote de informações remotas. – Verifica para qual serviço e executa de acordo com os parâmetros recebidos. – Envia a resposta ao cliente, através do send. • O stud (interface remota) empacota e desempacota os dados e faz send (lado servidor e cliente). • Utiliza parâmetros por valor e referência. Remoto Binding dinâmico • O binding dinâmico efetua a ligação entre cliente e servidor. • Ele é realizado através da especificação de um arquivo de cabeçalho ou de uma interface. • Neste arquivo, colocamos a assinatura dos procedimentos remotos. • Este arquivo é obrigatório nas aplicações do cliente e do servidor. Falhas • A concepção da RPC é deixar a programação transparente, mas as seguintes falhas podem ocorrer: – – – – – cliente não acha o servidor. A mensagem do cliente para o servidor foi perdida. A mensagem do servidor para o cliente foi perdida. servidor sai do ar após receber uma solicitação. cliente sai do ar após ter enviado uma solicitação. Das 5 falhas, somente a última está relacionada a um problema no cliente. As demais falhas são do servidor.