MASTER EN COMPUTACIÓN
UNIVERSIDAD
DE CANTABRIA
Sistemas Distribuidos de Tiempo Real
Apuntes: TEMA 5
Por:
J. Javier Gutiérrez
[email protected]
http://www.ctr.unican.es/
Grupo de Computadores y Tiempo Real, Universidad de Cantabria
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
1
Sistemas distribuidos de tiempo real
UNIVERSIDAD
DE CANTABRIA
PARTE III: Middlewares de distribución
• TEMA 5. Middleware de distribución para el modelo Ada
• TEMA 6. Middleware de distribución esquizofrénico para
lenguaje Ada: CORBA y DSA
• TEMA 7. Middlewares de distribución de tiempo real
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
Introducción a GLADE
Implementación del Ada distribuido de Ada Core:
• programa único dividido en particiones
• las particiones se distribuyen en los nudos procesadores
• distribución por RPCs y objetos: transparencia de uso
• configuración, arranque de particiones y otros aspectos
definidos por la implementación
2
UNIVERSIDAD
DE CANTABRIA
Estructura de GLADE:
• GARLIC: es el PCS (Partition Communication Subsystem)
• GNATDIST: herramienta de particionamiento, chequeo de
consistencia, generación de stubs y enlace de las particiones
con el PCS
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
3
Introducción a GLADE (cont.)
Detalles de la implementación desde el punto de vista del tiempo
real:
• Linux sobre TCP/IP
• pool de tareas configurable por cada partición para la ejecución
UNIVERSIDAD
DE CANTABRIA
de peticiones remotas
• creación dinámica de tareas conectoras de las peticiones en la
partición llamada
- Acceptor Task --> Connector Task --> Tarea del pool
• políticas de prioridades para las tareas del pool:
- Client Propagated (ejecución remota a la prioridad del cliente)
- Server Declared (todas las tareas del pool a la misma prioridad)
• elección arbitraria de una red de entre las disponibles
4
UNIVERSIDAD
DE CANTABRIA
5
UNIVERSIDAD
DE CANTABRIA
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
Esquema de RPC en GLADE
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
El DSA en GLADE
Aspectos destacados de la implementación:
• Variables y access no remotos
• Fallos de RPCs
• Excepciones
• RPCs asíncronas
• Unidades genéricas
• Llamadas remotas concurrentes
• Aborto y terminación
• Configuración
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
6
Variables y access no remotos
En las declaraciones de paquetes Remote Types y Remote Call
Interface:
• las declaraciones de variables están prohibidas
• los tipos access no remotos se permiten siempre que se
UNIVERSIDAD
DE CANTABRIA
proporcionen los subprogramas de marshalling y
unmarshalling
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
7
Fallos de RPC
Las llamadas a procedimiento remoto se ejecutan al menos una
vez:
• pueden realizar el trabajo remoto correctamente
• o pueden fallar retornando una excepción
Si ocurre un error de comunicaciones se eleva la excepción:
•System.RPC.Communicantion_Error
UNIVERSIDAD
DE CANTABRIA
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
8
UNIVERSIDAD
DE CANTABRIA
Excepciones
Cualquier excepción elevada en un método o llamada a
procedimiento remoto se propaga al que ha hecho la llamada,
manteniendo la semántica de Ada
Ejemplo:
• Partición 1: Internal, RemPkg1 y RemExcMain
• Partición 2: RemPkg2
Comentario:
• una excepción visible sólo en la partición 1 es propagada a la
partición 2, tratada con when others y enviada de nuevo a la
partición 1 en la que vuelve a ser visible
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
9
UNIVERSIDAD
DE CANTABRIA
Excepciones (cont.)
package Internal is
Exc : exception;
end Internal;
package RemPkg2 is
pragma Remote_Call_Interface;
procedure Subprogram;
end RemPkg2;
package RemPkg1 is
pragma Remote_Call_Interface;
procedure Subprogram;
end RemPkg1;
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
10
UNIVERSIDAD
DE CANTABRIA
Excepciones (cont.)
with Ada.Text_IO, Ada.Exceptions;
use Ada.Text_IO, Ada.Exceptions;
with RemPkg2, Internal;
procedure RemExcMain is
begin
RemPkg2.Subprogram;
exception when E : Internal.Exc =>
Put_Line (Exception_Message (E)); -- Output "Message"
end RemExcMain;
11
UNIVERSIDAD
DE CANTABRIA
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
Excepciones (cont.)
with RemPkg1, Ada.Exceptions;
use Ada.Exceptions;
package body RemPkg2 is
procedure Subprogram is
begin
RemPkg1.Subprogram;
exception when E : others =>
Raise_Exception (Exception_Identity (E),
Exception_Message (E));
end Subprogram;
end RemPkg2;
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
12
UNIVERSIDAD
DE CANTABRIA
Excepciones (cont.)
with Internal, Ada.Exceptions;
use Ada.Exceptions;
package body RemPkg1 is
procedure Subprogram is
begin
Raise_Exception (Internal.Exc'Identity, "Message");
end Subprogram;
end RemPkg1;
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
13
RPCs asíncronas: definición RCI
UNIVERSIDAD
DE CANTABRIA
package AsynchronousRCI is
pragma Remote_Call_Interface;
procedure Asynchronous (X : Integer);
pragma Asynchronous (Asynchronous);
procedure Synchronous (X : Integer);
type AsynchronousRAS is access procedure (X : Integer);
pragma Asynchronous (AsynchronousRAS);
end AsynchronousRCI;
14
UNIVERSIDAD
DE CANTABRIA
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
RPCs asíncronas: definición RT
package AsynchronousRT is
pragma Remote_Types;
type Object is tagged limited private;
type AsynchronousRACW is access all Object'Class;
pragma Asynchronous (AsynchronousRACW);
procedure Asynchronous (X : Object);
procedure Synchronous (X : in out Object);
function Create return AsynchronousRACW;
private
type Object is tagged limited null record;
end AsynchronousRT;
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
15
UNIVERSIDAD
DE CANTABRIA
RPCs asíncronas: uso de RCI
Dependiendo del subprograma apuntado la llamada puede ser
síncrona o asíncrona
with AsynchronousRCI;
use AsynchronousRCI;
procedure AsynchronousMain is
RAS : AsynchronousRAS;
begin
-- Asynchronous Dynamically Bound Remote Call
RAS := AsynchronousRCI.Asynchronous'Access;
RAS (0); -- Abbrev for RAS.all (0)
-- Synchronous Dynamically Bound Remote Call
RAS := AsynchronousRCI.Synchronous'Access;
RAS (0);
end AsynchronousMain;
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
16
UNIVERSIDAD
DE CANTABRIA
RPCs asíncronas: uso de RT
Si el método tiene sólo parámetros in la llamada es asíncrona y si
no síncrona
with AsynchronousRT;
use AsynchronousRT;
procedure AsynchronousMain is
RACW : AsynchronousRACW := Create;
begin
-- Asynchronous Dynamically Bound Remote Call
Asynchronous (RACW.all);
-- Synchronous Dynamically Bound Remote Call
Synchronous (RACW.all);
end AsynchronousMain;
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
17
UNIVERSIDAD
DE CANTABRIA
Unidades genéricas
Las unidades genéricas se pueden categorizar pero no heredan
automáticamente la categoría
generic
package GenericRCI is
pragma Remote_Call_Interface;
procedure P;
end GenericRCI;
with GenericRCI;
package RCIInstantiation is new GenericRCI;
pragma Remote_Call_Interface (RCIInstantiation);
with GenericRCI;
package NormalInstantiation is new GenericRCI;
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
18
UNIVERSIDAD
DE CANTABRIA
Llamadas remotas concurrentes
En la especificación del PCS no se define cuándo uno o más
threads de control deben estar disponibles para procesar los
mensajes que llegan y esperar a la terminación del RPC
Sin embargo, el PCS debe ser reentrante permitiendo llamadas
concurrentes que den servicio a peticiones remotas
En GLADE esto significa que:
• en la implementación del PCS se maneja un pool de tareas de
manera transparente al usuario
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
19
Aborto y terminación
Aborto:
• si un constructor que contiene una llamada remota se aborta, la
UNIVERSIDAD
DE CANTABRIA
llamada al subprograma remoto se cancela
• la implementación decide si la ejecución se aborta
inmediatamente o no como resultado de la cancelación
Terminación:
• una partición activa termina cuando termina su tarea de entorno
• una partición no puede terminar antes de que el programa Ada
en sí mismo termine
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
20
Configuración
El DSA no describe la forma en la que se tiene que configurar una
aplicación distribuida:
• es el usuario el que tiene que definir cómo son las particiones
UNIVERSIDAD
DE CANTABRIA
de su programa y en qué máquinas van
La herramienta gnatdist y su lenguaje de configuración permite
al usuario partir su programa y especificar la máquina en la que
ejecutará cada partición
gnatdist lee un fichero de configuración y construye un
ejecutable por cada partición definida
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
21
Configuración (cont.)
La forma de configurar y distribuir una aplicación será:
• Escribir una aplicación Ada no distribuida y usar los pragmas de
categorización para indicar los paquetes que se pueden ll
Comentarios de: Sistemas distribuidos de tiempo real - TEMA 5. Middleware de distribución para el modelo Ada (0)
No hay comentarios