MASTER EN COMPUTACIÓN
UNIVERSIDAD
DE CANTABRIA
Sistemas Distribuidos de Tiempo Real
Apuntes: TEMA 3
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 II: Modelos de distribución
• TEMA 3. Modelo de distribución de Ada
• TEMA 4. Modelo de distribución de CORBA y RT-CORBA
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
2
DSA - Distributed Systems Annex
Anexo E de Ada 95
El DSA de Ada 95 proporciona un modo flexible para distribuir
programas Ada en plataformas con múltiples procesadores
Definición Ada de sistema distribuido: interconexión de
• uno o más nudos procesadores (recurso con capacidad
computacional y de almacenamiento)
UNIVERSIDAD
DE CANTABRIA
• y cero o más nudos de almacenamiento (que sólo tiene
capacidad de almacenamiento, direccionable por uno o más
nudos procesadores)
Definición de programa distribuido:
• una o más particiones que ejecutan independientemente
(excepto cuando se comunican) en un sistema distribuido
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
3
UNIVERSIDAD
DE CANTABRIA
DSA - Distributed Systems Annex
Anexo E de Ada 95 (cont.)
Al proceso de mapear las particiones en los nodos de un sistema
distribuido se llama configuración de las particiones del programa
La distribución se basa en los conceptos de:
• particiones de programa
• y llamadas a procedimiento remoto (RPCs)
El lenguaje no proporciona interfaces ni semántica que permita
usar el DSA para aplicaciones distribuidas con requisitos de
tiempo real
• aunque en las aplicaciones se puede usar el anexo D
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
4
Particiones
Definición:
• Una partición es una entidad que puede ejecutar en paralelo con
UNIVERSIDAD
DE CANTABRIA
cualquier otra, posiblemente en un espacio de direcciones
diferente, y posiblemente en un computador diferente
Tipos de particiones:
• Activas: contienen threads, que pueden ser un programa
principal o alguna tarea
• Pasivas: no contiene un thread de control propio; los datos y
subprogramas son accesibles para las particiones activas
D’Partition_ID es un atributo que devuelve un entero que
identifica la partición en la que D ha sido elaborado
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
5
Categorización de unidades de
biblioteca
Categorías jerarquizadas de las unidades de biblioteca:
• Pure: puede depender sólo de otras unidades declaradas Pure
• Shared Passive: puede depender sólo de otras unidades Shared
UNIVERSIDAD
DE CANTABRIA
Passive o Pure
• Remote Types: puede depender de otras unidades Remote
Types o de las anteriores (el cuerpo de la librería no tiene
restricciones)
• Remote Call Interface: puede depender de otras unidades
Remote Call Interface o de las anteriores (el cuerpo de la librería
no tiene restricciones)
• Normal: sin restricciones
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
6
Categorización de unidades de
biblioteca (cont.)
La categorización se realiza mediante pragmas:
• pragma Pure
• pragma Shared_Passive
• pragma Remote_Types
• pragma Remote_Call_Interface
Se permite a la implementación definir nuevos pragmas de
categorización
UNIVERSIDAD
DE CANTABRIA
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
7
UNIVERSIDAD
DE CANTABRIA
Unidades Shared Passive
Se utilizan para manejar datos globales compartidos entre
particiones activas
Una partición pasiva puede contener unidades de biblioteca
categorizadas como Pure o Shared Passive
No puede contener declaraciones de access a tipos class-wide,
tipos tarea, o tipos protegidos con entries
Sintaxis:
pragma Shared_Passive [(nombre de unidad de biblioteca)]
8
UNIVERSIDAD
DE CANTABRIA
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
Unidades Shared Passive (cont.)
package SharedObjects is
pragma Shared_Passive;
Max : Positive := 10;
type Index_Type is range 1 .. Max;
type Rate_Type is new Float;
type Rates_Type is array (Index_Type) of Rate_Type;
External_Synchronization : Rates_Type;
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
9
Unidades Shared Passive (cont.)
UNIVERSIDAD
DE CANTABRIA
protected Internal_Synchronization is
procedure Set
procedure Get
Index : in Index_Type;
Rate : in Rate_Type);
Index : in Index_Type;
Rate : out Rate_Type);
private
end Internal_Synchronization;
Rates : Rates_Type;
end SharedObjects;
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
Unidades Remote Types
Pensada para la definición de tipos que se usen en la
comunicación entre particiones activas.
Sintaxis:
10
UNIVERSIDAD
DE CANTABRIA
pragma Remote_Types [(nombre de unidad de biblioteca)]
No debe contener declaraciones de variables en la parte visible
Un tipo access declarado en la parte visible de estas unidades de
biblioteca se llama tipo access remoto
• este tipo será un access a subprograma o un access general a
un class-wide limited private
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
11
Unidades Remote Types (cont.)
Cualquier puntero no remoto que forme parte de un tipo remoto
debe especificar los atributos de usuario Read y Write
Restricciones al uso de access remotos a subprogramas:
• un valor de un access remoto a un subprograma será convertido
UNIVERSIDAD
DE CANTABRIA
sólo a otro access remoto a un subprograma
• un valor de un access remoto a un class-wide será convertido
sólo a otro access remoto a un class-wide
• el prefijo del atributo Access que contiene un valor de un tipo
access remoto a un subprograma denotará estáticamente a un
subprograma remoto
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
12
Transmisión de estructuras dinámicas
with Ada.Streams; use Ada.Streams;
-- Lista enlazada
package StringArrayStream is
pragma Remote_Types;
type List is private;
procedure Append (L : access List; O : in String);
function Delete (L : access List) return String;
UNIVERSIDAD
DE CANTABRIA
private
type String_Access is access String;
type Node;
type List is access Node;
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
13
Transmisión de estructuras dinámicas
(cont.)
UNIVERSIDAD
DE CANTABRIA
type Node is record
Content : String_Access;
Next : List;
end record;
procedure Read
(S : access Root_Stream_Type'Class;
L : out List);
procedure Write
(S : access Root_Stream_Type'Class;
L : in List);
for List'Read use Read;
for List'Write use Write;
end StringArrayStream;
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
Transmisión de estructuras dinámicas
(cont.)
package body StringArrayStream is
14
UNIVERSIDAD
DE CANTABRIA
procedure Read
(S : access Root_Stream_Type'Class;
L : out List) is
if Boolean'Input (S) then
begin
L := new Node;
L.Content := new String'(String'Input (S));
List'Read (S, L.Next);
L := null;
else
end if;
end Read;
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
15
Transmisión de estructuras dinámicas
(cont.)
UNIVERSIDAD
DE CANTABRIA
procedure Write
begin
(S : access Root_Stream_Type'Class;
L : in List) is
if L = null then
else
Boolean'Output (S, False);
Boolean'Output (S, True);
String'Output (S, L.Content.all);
List'Write (S, L.Next);
end if;
end Write;
-- [...] Other services
end StringArrayStream;
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
Unidades Remote Call Interface RCI
Pensadas para ser usadas como interfaces para llamadas a
procedimientos remotos, RPCs, entre particiones activas
Incluye los siguientes pragmas:
16
UNIVERSIDAD
DE CANTABRIA
pragma Remote_Call_Interface
[(nombre de unidad de biblioteca)]
-
los subprogramas declarados en la parte visible de una unidad de
biblioteca RCI son subprogramas remotos
pragma All_Calls_Remote
[(nombre de unidad de biblioteca)]
-
- obliga a todas las llamadas a bajar al subsistema de comunicación
la unidad a la que se aplica debe ser RCI
de particiones (Partition Communication Subsystem, PCS)
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
17
Unidades Remote Call Interface RCI
(cont.)
Restricciones de la parte visible de una unidad RCI:
• no contendrá declaraciones de variables
• no contendrá declaraciones de tipos limited
• no contendrá una declaración genérica anidada
• no contendrá (ni podrá ser) la declaración de un subprograma al
UNIVERSIDAD
DE CANTABRIA
que se le aplique el pragma Inline
• no contendrá (ni podrá ser) una declaración de subprograma (o
access a subprograma) con parámetros de tipo access, o con
parámetros formales de tipo limited a menos que el usuario haya
especificado los atributos Read y Write
• cualquier hijo público será una unidad RCI
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© J. Javier Gutiérrez
4/abr/13
18
Unidades Remote Call Interface RCI
(cont.)
Reglas de post-compilación:
• una unidad RCI se debe asignar al menos a una partición
• una unidad RCI cuyo padre es también una unidad RCI se
asignará sólo a la misma partición que el padre
UNIVERSIDAD
DE CANTABRIA
Requisitos de la implementación:
• el pragma All_Calls_Remote obliga a todas las llamadas a
bajar al PCS; las llamadas a estos subprogramas desde dentro
de la región declarativa de la unidad son locales y no van a
través del
Comentarios de: Sistemas distribuidos de tiempo real - TEMA 3. Modelo de distribución de Ada (0)
No hay comentarios