UNIVERSIDAD DE GUAYAQUIL
FACULTAD DE CIENCIAS MATEMATICAS Y
FISICAS
INGENIERÍA EN NETWORKING Y
TELECOMUNICACIONES
SISTEMAS OPERATIVOS DISTRIBUIDOS
TEMA
RPC
NOMBRE:
BALCAZAR SUAREZ CRISTHIAN IVAN
CURSO:
INE-MA-5-3
Introducción
La llamada a procedimiento remoto es una tecnología que regula la comunicación entre
procesos, es decir, el intercambio de información entre procesos de sistema. En 1984, los
informáticos Andrew Birrell y Bruce Nelson definieron a la RPC como un mecanismo
síncrono “que transfiere el flujo de control y los datos entre dos espacios de direcciones
a través de una red de banda estrecha como llamada a proceso”. Al traspasar el espacio
de direcciones, los procesos pueden iniciarse en un ordenador remoto conectado a la red
y pueden incluirse instancias externas en procesos de cálculo y procesamiento de datos
de manera operativa. El proceso de comunicación con RPC consta del envío de
parámetros y el retorno de un valor de función. A menudo, no se limita a una sola llamada,
ya que en la práctica se procesan muchas solicitudes en paralelo.
En última instancia, el concepto subyacente a la llamada a procedimiento remoto tiene
como objetivo armonizar los niveles de procesamiento: idealmente, para los
programadores y usuarios, no debería suponer ninguna diferencia de qué llamada a
procedimiento se trate. En otras palabras: las llamadas remotas deberían ser tan fáciles de
implementar como las locales (principio de transparencia), al menos en teoría. En las
redes y arquitecturas cliente-servidor, las llamadas RPC suponen un proceso
de comunicación bidireccional orientada a solicitudes y complementan la comunicación
basada puramente en mensajes, que sigue el paradigma de entrada y salida (uso de
funciones de E/S).
Desarrollo
Qué es RPC
Es un programa que utiliza una computadora para ejecutar código en otra máquina remota
sin tener que preocuparse por las comunicaciones entre ambas. El protocolo que se utiliza
para esta llamada es un gran avance sobre los sockets de Internet usados hasta el
momento. De esta manera el programador no tenía que estar pendiente de las
comunicaciones, estando estas encapsuladas dentro de las RPC.
Las RPC son muy utilizadas dentro de la comunicación cliente-servidor. Siendo el cliente
el que inicia el proceso solicitando al servidor que ejecute cierto procedimiento o función
y enviando este de vuelta el resultado de dicha operación al cliente.
Las llamadas a procedimiento remoto están implementadas mediante varios tipos de
protocolos, muchos de ellos estandarizados como pueden ser el RPC de Sun
denominado ONC RPC (RFC 1057), el RPC de Open Software Foundation (OSF)
denominado DCE/RPC y el "Modelo de Objetos de Componentes Distribuidos de
Microsoft" (Distributed Component Object Model, DCOM), aunque ninguno de estos es
compatible entre sí. La mayoría de ellos utilizan un lenguaje de descripción de
interfaz (Interface description language o IDL) que define los métodos exportados por el
servidor.
Hoy en día se está utilizando el XML como lenguaje para definir el IDL y el HTTP como
protocolo de aplicación, dando lugar a lo que se conoce como servicios web. Ejemplos
de estos pueden ser SOAP o XML-RPC.
RMI
RMI (Java Remote Method Invocation) es un mecanismo ofrecido por Java para invocar
un método de manera remota. Forma parte del entorno estándar de ejecución de Java y
proporciona un mecanismo simple para la comunicación de servidores en aplicaciones
distribuidas basadas exclusivamente en Java. Si se requiere comunicación entre otras
tecnologías debe utilizarse CORBA o SOAP en lugar de RMI.
RMI se caracteriza por la facilidad de su uso en la programación por estar específicamente
diseñado para Java; proporciona paso de objetos por referencia (no permitido por
SOAP), recolección de basura distribuida (Garbage Collector distribuido) y paso de tipos
arbitrarios (funcionalidad no provista por CORBA).
A través de RMI, un programa Java puede exportar un objeto, con lo que dicho objeto
estará accesible a través de la red y el programa permanece a la espera de peticiones en
un puerto TCP. A partir de ese momento, un cliente puede conectarse e invocar los
métodos proporcionados por el objeto.
La invocación se compone de los siguientes pasos:
Encapsulado (marshalling) de los parámetros (utilizando la funcionalidad
de serialización de Java).
Invocación del método (del cliente sobre el servidor). El invocador se queda
esperando una respuesta.
Al terminar la ejecución, el servidor serializa el valor de retorno (si lo hay) y lo envía
al cliente.
El código cliente recibe la respuesta y continúa como si la invocación hubiera sido
local.
RCP: características de marshalling y unmarshalling
La serialización es un proceso mediante el cual podemos convertir objetos de un programa
en ejecución en flujos de bytes capaces de ser almacenados en dispositivos, bases de datos
o de ser enviados a través de la red y, posteriormente, ser capaces de reconstruirlos en los
equipos donde sea necesario. Al hablar de “objetos”, no me refiero únicamente al
significado que estos tienen en la POO; un objeto es cualquier estructura de datos, función
o método que esté en memoria. Uno de los principales objetivos de la serialización es
permitir crear flujos de bytes independientes de la arquitectura de los equipos en los que
se utilicen, inclusive, que los objetos puedan ser reconstruidos en otros programas sin
importar que el lenguaje con el que son escritos sea diferente al que se usó para crear el
objeto originalmente. Marshalling puede usarse como sinónimo de serialización, sin
embargo, debes de tener cuidado porque en lenguajes de programación como Java,
marshalling se refiere a la acción de almacenar el estado de un objeto junto con su código,
mientras que serializar es solamente crear copias de objetos como flujos de bytes. El
procedimiento inverso de la serialización es la deserialización o unmarshalling. (Ruelas,
2017)
Protocolos basados en RPC
PROTOCOLO DE TRANSPORTE
Algunas implementaciones de RPC emplean un único protocolo de transporte mientras
otras permiten su selección. La mayoría de las implementaciones dicen ser independientes
del protocolo, sin embargo éstas sólo soportan uno o dos protocolos. Específicamente, las
implementación ONC y DCE soportan TCP y UDP como protocolos de transporte
(Tamps.cinvestav.mx, 2015)
Manejo de errores y excepciones en RPC
Manejo de errores y excepciones
Las excepciones son interrupciones asíncronas al flujo normal del control de un programa
ocasionadas por la ocurrencia de condiciones inusuales durante la ejecución de un
programa. Atrapar una excepción ocasiona que el sistema operativo maneje la
recuperación desde la condición inusual. Las excepciones incluyen:
Acceso ilegal (errores de bus, violaciones de proteción y segmentación).
Errores aritméticos (sobreflujo, división por cero, etc.).
Instrucciones del hardware destinadas para el soporte de facilidades como
emulación, depuración y detección de errores.
El manejo de excepciones en Mach tiene los siguientes objetivos:
Una facilidad con la semántica consistente para todas las excepciones.
Una interfaz clara y simple.
Soporte para depuración y manejo de errores.
Evitar la duplicidad de la funcionalidad con el núcleo.
Soporte de excepciones definidas por el usuario.
Con lo que se evita la noción de que un manejador se esté ejecutando en el mismo
contexto en el que ocurre la excepción. Esta no es una forma clara y directa para hacer
disponible el contexto del hilo al mismo hilo. Como Mach soporta múltiples hilos en la
misma tarea, es suficiente parar el hilo que ocaciona la excepción y ejecutar el manejador
como otro hilo en la misma tarea.
La facilidad del manejo de excepciones de Mach permite que el usuario defina y maneje
sus propias excepciones, agregándolas a las ya definidas en el sistema. Como el
manejador nunca se ejecuta en el contexto del hilo victima, las primitivas de atrapar,
esperar, notificar y limpiar constituyen un llamado a un procedimiento remoto (RPC). El
manejador de excepciones se implementa utilizando en RPC basado en mensajes.
La excepción RPC consiste de dos mensajes: un mensaje inicial que invoca al RPC y una
un mensaje de respuesta que lo completa. El mensaje inicial contine los siguientes
elementos:
Puertos de envío y respuesta para el RPC.
Las identidades de la tarea e hilo que ocacionan la excepción.
Una clase excepción independiente de la máquina (ver clasificaciones de
excepciones).
Dos campos dependientes de la máquina que identifican la excepción.
Si se completa el RPC, el mensaje de respuesta contiene los dos puertos y regresa el
código del manejador que atiende la excepción. (computacion.cs.cinvestav.mx, 2010)
Una excepción RPC corresponde a nuestro modelo de excepción de la siguiente forma:
raise
Envía el mensaje inicial.
wait
Espera recibir el mensaje de respuesta.
catch
Recibe el mensaje inicial.
clear
Envía el mensaje de respuesta.
Conclusión
En conclusión las llamadas RPC se utilizan en muchos ámbitos son uno de los
componentes fundamentales de los servicios web por ejemplo, como protocolo XML-
RPC para llamadas a funciones remotas a través de HTTP y hacen posibles las
aplicaciones distribuidas, en las que diferentes ordenadores comparten los recursos
disponibles y las tareas entrantes. Entre otras, aquí se incluyen los servicios informáticos
en la nube, los sistemas bancarios o los sistemas de reservas turísticas, así como las bases
de datos. Otros campos de aplicación son los clústeres de ordenadores clústeres de alta
disponibilidad), las redes entre iguales descentralizadas y las cadenas de bloques por
ejemplo, de las criptomonedas, que también suelen trabajar con la tecnología RPC.
Asimismo, las Remote Procedure Calls son básicas para el funcionamiento de
los sistemas operativos actuales: por ejemplo, Windows las utiliza en muchas rutinas que
se llevan a cabo constantemente, como el servicio de fax, la cola de impresión o las
conexiones de red configuradas, que utilizan un servicio de sistema denominado llamada
a procedimiento remoto.
Bibliografía
computacion.cs.cinvestav.mx. (2010). Manejo de excepciones. Obtenido de
http://computacion.cs.cinvestav.mx/~ameneses/pub/tesis/ltesis/node80.html
Ruelas, U. (19 de Mayo de 2017). ¿Qué es la serialización o marshalling? Obtenido de
https://codingornot.com/que-es-la-serializacion-o-marshalling
Tamps.cinvestav.mx. (2015). Llamadas a Procedimientos Remotos. Obtenido de
https://www.tamps.cinvestav.mx/~vjsosa/clases/sd/RPC_notas.pdf