Está en la página 1de 8

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

También podría gustarte