PDF de programación - PROGRAMACION CONCURRENTE - II.2 Invocación remota de procedimientos

Imágen de pdf PROGRAMACION CONCURRENTE - II.2 Invocación remota de procedimientos

PROGRAMACION CONCURRENTE - II.2 Invocación remota de procedimientosgráfica de visualizaciones

Publicado el 14 de Enero del 2017
553 visualizaciones desde el 14 de Enero del 2017
347,7 KB
22 paginas
Creado hace 15a (19/09/2008)
PROGRAMACION CONCURRENTE

II.2 Invocación remota de procedimientos

J.M. Drake

Notas:

1

Mecanismos de sincronización

Implementa el tercer mecanismo de sincronización de las
primitivas Send-Wait:
Envío Asíncrono: El proceso emisor continua con independencia del estado

del receptor.

Envío Síncrono (Rendezvous simple): El proceso emisor permanece
suspendido hasta confirmar que el mensaje ha sido recibido. Las sentencias
Send y Wait terminan síncronamente.

Invocación Remota (Rendezvous completo): El proceso emisor
permanece suspendido hasta confirmar que el mensaje ha sido aceptado.
Emisor y receptor ejecutan síncronamente un segmento de código. Las
sentencias Send y Wait terminan síncronamente.

La invocación remota de procedimiento es un mecanismo de
comunicación síncrona, con denominación directa y
asimétrica, que sigue un formalismo semejante a
la
declaración e invocación de procedimientos (RPC).

Procodis’08: II.2- Invocación remota de procedimientos José M.Drake

2

Notas:

La invocación remota de procedimientos ("remote procedure invocation") corresponde a
un modelo de comunicación síncrona entre procesos basada en intercambio de mensajes, y
que sigue un formalismo semejante a la llamada de procedimientos. Conceptualmente, la
invocación remota se pueden definir como un mecanismo por el que un proceso puede
ejecutar un procedimiento que pertenece al entorno de otro proceso. Esta es la
estrategia de comunicación entre procesos que ha sido adoptada por el lenguaje Ada.

2

Invocación de procedimiento remoto.

La invocación de procedimiento remoto formalmente consiste en que los
procesos receptores del mensaje (servidores) ofrecen procedimientos
públicos (entry) que otros procesos pueden invocar.
Un procedimiento remoto (entry) es formalmente similar a un
procedimiento público, pero se diferencian en:
Un procedimiento público se ejecuta incondicionalmente utilizando el thread

del proceso invocante.

Un entry se ejecuta solo cuando se sincronizan el thread del proceso que

invoca y el thread del proceso propietario. Este puede aceptar o no la
invocación.

Cliente

...
Servidor.Operacion
...

Servidor

entry Operacion

Invocación
remota

...accept Operacion
...

Procodis’08: II.2- Invocación remota de procedimientos José M.Drake

3

Notas:

Para comprender la motivación de este modelo, consideremos inicialmente la relación que
se establece entre un procedimiento ordinario y el proceso que lo invoca:
* Un mismo procedimiento puede ser llamado desde cualquier punto de un programa que
tenga visibilidad sobre su nombre.
* En la llamada a un procedimiento se produce intercambio de información en ambos
sentidos, esto es, en la cabecera de un procedimiento existen argumentos de entrada y de
salida.
* Un procedimiento posee un bloque de sentencias que en una invocación al mismo son
ejecutadas dentro de la línea de flujo de control del proceso que realiza la llamada.

Los procedimientos son componentes básicos de todos los lenguajes de programación
modernos, y dentro de un
incluso invocados
concurrentemente con otros procesos que incluso también han invocado el mismo
procedimiento.

lenguaje concurrente pueden ser

3

Componentes de la invocación remota.

En el proceso propietario (Servicio) del procedimiento remoto existen
sentencias para declarar el procedimiento remoto y para aceptar su
invocación:
process propietario;

entry procedimientoRemoto(dato:TipoDato);

begin
....

accept procedimientoRemoto(dato:TipoDato) do

-- Bloque de sentencias

....
end;
En el proceso invocante (Cliente) existe sentencias de invocación del
procedimiento:

....
propietario.procedimientoRemoto(nuevoDato);
.....

Procodis’08: II.2- Invocación remota de procedimientos José M.Drake

4

Notas:

El proceso Propietario ofrece el procedimiento remoto Procedimiento_Remoto, con un
argumento de entrada Dato. En su cuerpo la ejecución de la sentencia accept por su thread
representa la aceptación de una posible invocación del procedimiento.

En el proceso invocante se invoca el procedimiento remoto siguiendo un formalismo
compuesto similar al que se utiliza para invocar un procedimiento de un paquete.

Cuando un procedimiento remoto es invocado, el proceso que invoca se suspende hasta
que el proceso que contiene el procedimiento llamado, lo acepta. A partir de ese instante,
ambos procesos unifican su línea de flujo de control, y ejecutan conjuntamente el cuerpo del
procedimiento remoto. Cuando este termina, las dos líneas de control de flujo quedan
independizadas y ambos procesos evolucionan de acuerdo con su estructura.

La invocación de un procedimiento remoto es un mecanismo de comunicación síncrono, de
nominación directa, y multipunto. Cualquier proceso que conozca el nombre del proceso y
el nombre del procedimiento, puede invocarlo, e incluso concurrentemente. Dado que el
procedimiento remoto es único, el proceso al que pertenece es el responsable que las
invocaciones concurrentes al procedimiento sean secuencializadas de forma compatible
con su estructura.

4

Invocación remota y programación orientada a objetos.

El formalismo de sincronización por procedimientos remotos
está concebida para implementar objetos que se comunican
según el paradigma cliente-servidor.
Objetos activos: Se implementa como procesos que no ofrecen
procedimientos remotos. En su cuerpo invocan procedimientos
remotos de otros objetos.

Objetos pasivos: Se implementan como procesos que ofrecen como

procedimientos remotos los servicios que ofrecen.

Objetos neutros: Son estructuras de datos a los que se acceden

mediante una interfaz compuesta de procedimientos públicos
ordinarios.

Procodis’08: II.2- Invocación remota de procedimientos José M.Drake

5

Notas:

El concepto de invocación de procedimientos remotos, esta en gran medida concebido para
ser la base de una estrategia de programación orientada a objetos, y siguiendo el
paradigma de configuraciones cliente-servidor. Cuando se utiliza los mecanismos de
invocación remota de procedimientos, se deben emplear las siguientes utilizaciones de los
componentes de programación:
* Los objetos activos se realizan como procesos que no tienen entradas, y que en su
código si hacen invocaciones (uso) a las entradas de los objetos pasivos.
* Los objetos neutros son estructuras de datos recubiertas de una interfaz de
procedimientos ordinarios de acceso.
* Los objetos pasivos se realizan también mediante procesos, que gestionan activamente
los recursos que contienen, y a los que se acceden mediante una interfase de
procedimientos remotos (entry).

Es importante contrastar la diferencia entre la invocación remota de procedimiento y la
llamada remota a procedimientos o RPC ("remote procedure call"). Mientras que la
primera es un mecanismo del lenguaje por el que un proceso puede ejecutar un
procedimiento de otro proceso, dentro de un programa concurrente, las RPC son
mecanismos de comunicación de alto nivel entre computadores vía una red telemática, por
las que un programa puede ejecutar un procedimiento ubicado en otro computador. Aunque
el nivel de abstracción de ambos conceptos sea muy diferente, ambos juegan un papel
similar, uno dentro de un programa concurrente, y el otro dentro de un sistema software
distribuidos. Ambos tienen la función de constituir la interfaz de los objetos pasivos
servidores, dentro del paradigma de diseño orientado al objeto.

5

Estructura de los procedimientos remotos.

Los procedimientos remotos se declaran en la cabecera del procedimiento
mediante sentencias entry y en las que se declaran los argumentos de
forma idéntica a un procedimiento ordinario.

process propietario;
entry intercambia( entrada: Integer; var salida: Integer);
var d1, d2 : integer;
begin
....
d2:= AlgunValor;
....
accept intercambia( entrada: Integer; var salida: Integer) do

begin

d1:= entrada;
salida := d2;

end;

....
end;

Procodis’08: II.2- Invocación remota de procedimientos José M.Drake

6

Notas:

Los procedimientos remotos están definidos dentro de la estructura de los procesos.
Existen dos componentes específicas para definir los procedimientos remotos, su
declaración en la cabecera del proceso mediante la sentencia entry, y la declaración del
punto del proceso en la que se acepta su ejecución accept.
Todos los procedimiento remotos de un proceso deben estar declarado justamente tras la
cabecera del proceso mediante sentencias entry. En la declaración de un procedimiento
remoto se declaran también los argumentos de entrada y salida del procedimiento. La
declaración de los procedimientos siguen una nomenclatura semejante a la declaración de
los argumentos en los procedimientos ordinarios:
Ejemplos de declaración de procedimientos remotos son:

entry Coloca (C: char);
entry Toma (var C : char);
entry Intercambia( Entrada: integer; var Salida: integer);
entry Opera (A, B : integer; var C, D : integer ; E : boolean);

Una invocación a un procedimiento remoto solo se atiende si el flujo de control del proceso
al que pertenece se encuentra ejecutando una sentencia accept
relativa a ese
procedimiento.

6

Semántica de la sentencia accept.

Una invocación a un procedimiento remoto solo se ejecuta si el
procedimiento propietario ejecuta una sentencia accept relativa a ella.

Cada entry tiene asociada una cola de procesos invocantes que tratan de
ejecutar el procedimiento. De estas invocaciones es atendida una por cada
ejecución de la sentenc
  • Links de descarga
http://lwp-l.com/pdf1018

Comentarios de: PROGRAMACION CONCURRENTE - II.2 Invocación remota de procedimientos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad