PDF de programación - Herramienta autoconfigurable para el desarrollo de aplicaciones distribuidas de tiempo real flexibles y dinámicas

Imágen de pdf Herramienta autoconfigurable para el desarrollo de aplicaciones distribuidas de tiempo real flexibles y dinámicas

Herramienta autoconfigurable para el desarrollo de aplicaciones distribuidas de tiempo real flexibles y dinámicasgráfica de visualizaciones

Publicado el 20 de Julio del 2017
1.035 visualizaciones desde el 20 de Julio del 2017
2,5 MB
146 paginas
Creado hace 16a (14/11/2007)
CENTRO DE INVESTIGACIÓN Y DE ESTUDIOS AVANZADOS

DEL INSTITUTO POLITÉCNICO NACIONAL



UNIDAD ZACATENCO



DEPARTAMENTO DE COMPUTACIÓN

Herramienta autoconfigurable para el desarrollo de

aplicaciones distribuidas de tiempo real flexibles y dinámicas

Tesis que presenta:

Christian Iván Mejía Escobar

Para obtener el grado de:

Maestro en Ciencias

En la especialidad de:
Ingeniería Eléctrica

Opción Computación

Director de tesis:

Dr. José Guadalupe Rodríguez García

Noviembre 2007



México, D.F.







ii



Resumen



La evolución experimentada por los sistemas de computación, desde centralizados a
distribuidos, ha motivado el surgimiento de aplicaciones que demandan mayor complejidad,
seguridad, disponibilidad, escalabilidad, etc. Cada vez se hace más necesario la intervención de
sistemas distribuidos, donde varias computadoras conectadas por medio de una red trabajan
conjuntamente para satisfacer las necesidades anteriormente mencionadas.


El paradigma de programación orientada a objetos ha demostrado ser exitoso para el
desarrollo de aplicaciones, por lo que es utilizado ampliamente en ambientes distribuidos. Un
middleware como Java RMI permite el desarrollo y la ejecución de aplicaciones distribuidas
orientadas a objetos de propósito general; sin embargo, existen aplicaciones especializadas, cuya
ejecución debe considerar parámetros de planificación y restricciones de tiempo. Este tipo de
aplicaciones se presentan en el dominio de tiempo real y su utilización es cada vez más común en
sistemas distribuidos.


A pesar de que Java no fue diseñado para aplicaciones de tiempo real, posee ventajas como
simplicidad y portabilidad, consideradas muy prometedoras por la comunidad de tiempo real. Por
tal razón, se creó la especificación de tiempo real para Java (RTSJ), pero se enfoca
intencionalmente para trabajar en un ambiente centralizado, i.e. no provee soporte para
aplicaciones distribuidas.


En el presente trabajo de tesis proponemos un mecanismo desarrollado en lenguaje Java que
permite propagar los parámetros de planificación y las restricciones de tiempo de aplicaciones
distribuidas entre los nodos que conforman un sistema distribuido. Nuestra solución aprovecha la
actual RTSJ, combinada con herramientas de Java tales como: API de sockets, el modelo de Java
RMI, carga dinámica de bytecodes, y programación multi-hilo.



iii





iv



Abstract



v

The development on computing systems, from centralized to distributed systems, has made
possible a new kind of applications, with more complexity and that require higher security,
availability, scalability, etc. Distributed systems are more and more useful. They are characterized
by having multiple computers connected through a network, working together and collaborating
to meet the requirements mentioned above.


The paradigm of object-oriented programming has proved to be successful for the
development of software and today it is widely used in distributed environments. A middleware
like Java RMI enables the development and execution of object-oriented general purpose
distributed applications. For special purpose applications, e.g. real time applications, with
scheduling parameters and time constraints, Java RMI is not the must suitable tool, however such
type of applications are increasingly common in distributed systems.


Java was not designed for real time applications, but it has some advantages such as
portability and simplicity, which are considered very promising by the real time community. For
this reason, the Real-Time Specification for Java (RTSJ) was created, but it is focused on
centralized systems, i.e. there is not support for distributed applications.


In this thesis, we propose a mechanism developed in Java that allows the propagation of
scheduling parameters and time constraints of distributed applications. This transfer of context is
carried out among the nodes of distributed system. Our solution takes advantage of the current
RTSJ, combined with Java tools such as API sockets, Java RMI model, dynamic loading, and
multithreading programming.







vi



Agradecimientos



A mis padres, Luis Enrique y Mariana de Jesús.


A mi hermana, Mónica Gabriela.


Al Consejo Nacional de Ciencia y Tecnología (CONACYT)
por el respaldo financiero otorgado a través del proyecto número 45306.


Al Dr. José Guadalupe Rodríguez García (Director de tesis),
al Dr. Francisco Rodríguez Henríquez (Coordinador Académico),
y a todos los investigadores que conforman el
Departamento de Computación del CINVESTAV.



vii





viii


Índice general



Resumen
Abstract
Convenciones tipográficas
1 Introducción
1.1 Motivación
1.2 Objetivo
1.3 Trabajo relacionado
1.4 Organización de la tesis
2 Sistemas distribuidos
2.1 Evolución
2.2 Motivación
2.3 Definición
2.4 Ejemplos
2.5 Ventajas y desventajas
2.6 Arquitectura general
2.6.1 Modelo cliente-servidor
2.6.2 Modelo de objetos distribuidos
2.7 Middleware
3 Herramientas Java
3.1 Sockets en Java
3.2 Java RMI
3.2.1 Propósito
3.2.2 Arquitectura
3.2.3 Ventajas y limitaciones
3.3 Fundamentos de tiempo real
3.3.1 Definición de sistema de tiempo real
3.3.2 Ejemplos
3.3.3 Clasificación
3.3.4 Parámetros de tiempo y tareas

3.3.5 Planificación

3.4 Concurrencia y planificación en Java

ix

iii
v
xix
1
2
3
5
5
7
7
8
8
9
10
11
11
13
15
17
17
18
18
19
20
21
21
21
22
23
24
25

3.4.1 Hilos
3.4.2 Planificación en Java
3.5 Java para tiempo real
3.6 RTSJ
3.6.1 API de la RTSJ
3.6.2 Limitaciones de la RTSJ
3.7 Evaluación de implementaciones de la RTSJ

3.7.1 Selección de herramientas
3.7.2 Infraestructura de pruebas
3.7.3 Pruebas

3.7.3.1 Cálculo de la variación en la activación de una tarea
3.7.3.2 Cálculo del tiempo de ejecución de una tarea
3.7.3.3 Número de plazos de ejecución perdidos
3.7.3.4 Uso de memoria y procesador

3.7.4 Análisis de resultados

3.7.4.1 Variación en el tiempo de activación de una tarea
3.7.4.2 Tiempo de ejecución de una tarea
3.7.4.3 Plazos de ejecución perdidos
3.7.4.4 Uso de memoria y procesador

3.7.5 Manejo de prioridades

3.7.5.1 Planificación a nivel de la RTSJ
3.7.5.2 Planificación a nivel de Linux

3.7.6 Resumen de desempeño y conclusiones

4 Diseño de la solución
4.1 Descripción del problema
4.2 Arquitectura de la solución



4.2.1 Plataforma operativa y plataforma de tiempo real
4.2.2 Aplicación distribuida

4.3 Diagramas UML

4.3.1 Descomposición del sistema
4.3.2 Diagrama conceptual
4.3.3 Diagrama de interacción
4.3.4 Diagrama de paquetes
4.3.5 Diagrama de clases

4.4 Uso de clases
5 Implementación
5.1 Ambiente de implementación

x

25
26
27
28
28
30
30
31
32
32
33
40
41
44
45
45
46
46
47
47
47
49
52
55
55
56
56
58
59
59
60
61
62
63
64
67
67

5.2 Implementación de clases

5.2.1 Implementación de la aplicación cliente
5.2.2 Implementación de la aplicación servidor

5.3 Sistema de supervisión

5.3.1 Características de LiveGraph
5.3.2 Instalación y utilización
5.3.3 Integración de LiveGraph con la solución
5.3.4 Adecuaciones realizadas a LiveGraph

6 Pruebas y análisis de resultados
6.1 Ambiente de ejecución de pruebas
6.2 Sincronización
6.3 Pruebas

6.3.1 Cálculo de la latencia de red

6.3.1.1 Consideraciones preliminares
6.3.1.2 Ejecución de pruebas de latencia
6.3.1.3 Análisis de resultados de latencia

6.3.2 Cumplimiento de periodos

6.3.2.1 Ejecución de pruebas
6.3.2.2 Análisis de resultados de periodo

6.3.3 Plazos de ejecución perdidos
6.3.3.1 Ejecución de pruebas
6.3.3.2 Análisis de resultados de plazos perdidos

6.4 Adaptabilidad

6.4.1 Implementación de un planificador adicional
6.4.2 Utilización del planificador implementado
6.4.3 Uso de la reflectividad y carga dinámica
6.4.4 Ejecución con el planificador implementado
6.4.5 Análisis de resultados con el nuevo planificador

6.5 Versatilidad

6.5.1 Ejemplo 1: sucesión de Fibonacci
6.5.2 Ejemplo 2: generación de números primos
6.5.3 Ejemplo 3: simulación de comparación de imágenes

7 Conclusiones y comentarios finales
7.1 Conclusiones
7.2 Contribuciones
7.3 Trabajo futuro
Referencias

xi

68
68
72
75
75
76
77
78
83
83
85
86
86
87
87
89
90
90
91
94
94
95
96
96
98
99
101
102
102
103
106
108
115
116
118
119
123





xii


Lista de figuras



2.1 Sistemas distribuidos
2.2 Estructura de un sistema distribuido
2.3 Modelo cliente-servidor
2.4 Modelo cliente-servidor con intercambio de roles
2.5 Middleware en un sistema distribuido
3.1 Conexión de red por medio de un socket
3.2 Modelo de capas para la comunicación con Java RMI
3.3 Parámetros de tiempo de una tarea
3.4 Creación de un hilo y sus métodos
3.5 Clases RTSJ para manejo de tiempo
3.6 Clases y relaciones para hilo de tiempo real y planificación
3.7 Arquitecturas de las implementaciones RTSJ vs. la arquitectura tradicional JVM
3.8 Sección de código de prueba para la variación del periodo
3.9 Gráfica de
  • Links de descarga
http://lwp-l.com/pdf5598

Comentarios de: Herramienta autoconfigurable para el desarrollo de aplicaciones distribuidas de tiempo real flexibles y dinámicas (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