Documentos de Académico
Documentos de Profesional
Documentos de Cultura
UPM
dit
Real-Time Java
Jos F. Ruiz DIT/UPM
ndice
UPM
dit
Introduccin Objetivos reas mejoradas en la especificacin de tiempo real Manejo del tiempo Conclusiones Referencias
10/01/2002
Por qu Java?
Simplicidad
Java es fcil de aprender y de usar
UPM
dit
Portabilidad
la mquina virtual de Java est disponible para una gran cantidad de plataformas
Orientacin a objetos
metodologa que ha demostrado que aumenta la productividad
Bibliotecas
funcionalidad de todo tipo
Seguridad
no existen punteros
10/01/2002
Problemas de Java
UPM
dit
reduce la eficiencia
lenguaje interpretado
10/01/2002
UPM
dit
liderado por Sun Microsystems intenta dar soporte genrico a un amplio rango de sistemas empotrados de tiempo real
J Consortium
proponen una extensin al ncleo de Java ms enfocado hacia sistemas de alta integridad mediante el High Integrity Profile
10/01/2002
Requisitos iniciales
Compatibilidad hacia atrs Adecuarse a cualquier plataforma Java WOCRAC ( WORA)
Write Once Carefully Run Anywhere Conditionally es ms importante la predecibilidad que la portabilidad
UPM
dit
Soportar la prctica actual y permitir futuros avances Predecibilidad Evitar extensiones sintcticas al lenguaje Java Permitir cierta flexibilidad en la implementacin
equipos de telecomunicacin, industriales, ... robots, controladores
10/01/2002
Mejoras en RT-Java
Planificacin Planificacin Manejo de memoria Sincronizacin Eventos asncronos Transferencia asncrona de control (ATC) Terminacin de tareas de tareas asncrona Acceso a memoria fsica
UPM
dit
10/01/2002
Planificacin
adecuados para distintos tipos de sistemas
tiempo real crtico, multimedia, ...
UPM
dit
10/01/2002
Planificacin (II)
Introduccin del concepto de objeto planificable
ser planificable es un atributo del objeto interfaz Schedulable
UPM
dit
Cualquier objeto que implemente esta interfaz es planificado por el planificador threads de tiempo real y manejadores de eventos asncronos
10/01/2002
Planificador
UPM
dit
El planificador es un objeto de la clase Scheduler Una instancia de esta clase por cada JVM Contiene los mtodos para admisin de threads, mecanismos de manejo de eventos asncronos, ... Subclases derivadas de Scheduler implementan algoritmos alterativos de planificacin
10/01/2002
Planificador (II)
Por defecto PriorityScheduler
requerido por la especificacin planificacin por prioridades fijas
UPM
dit
la prioridad de un objeto planificable no cambia, excepto por el protocolo de control de inversin de prioridades
planificacin expulsiva
si en algn momento se activa un objeto planificable de prioridad superior al que est actualmente en ejecucin, este ltimo es expulsado del procesador
UPM
dit
Parmetros usados para especificar los requisitos temporales y demanda de recursos de un RealTimeThread (o NoHeapRealtimeThread)
ReleaseParameters
establecer plazos, budgets, periodo, tiempo de ejecucin, ...
SchedulingParameters
prioridad, importancia, ...
MemoryParameters
lmites en el uso de ciertas reas de memoria
Tambin permite a los desarrolladores especificar la respuesta del thread ante situaciones imprevistas.
por ejemplo, incumplimiento de plazo de respuesta
10/01/2002
11
Tareas peridicas
UPM
dit
RT-Java proporciona al programador un nivel de abstraccin bastante alto. Parmetros que se pueden especificar son:
cost. El sistema garantiza que no se va a dejar a esta tarea consumir ms CPU de los indicado (budget) importance. Criterio de seleccin entre tareas de igual prioridad deadline. Plazo de respuesta start. Comienzo del primer periodo reStart. Comienzo tras un overrun period. Periodo de ejecucin del mtodo run overrunHandler. Se ejecuta si el mtodo run est aun activo al consumirse todo el cost. deadlineHandler. Se ejecuta si el mtodo run est aun activo cuando se cumple el plazo de respuesta
12
10/01/2002
UPM
dit
10/01/2002
13
Mejoras en RT-Java
Planificacin Manejo de memoria Sincronizacin Eventos asncronos Transferencia asncrona de control (ATC) Terminacin de tareas Acceso a memoria fsica
UPM
dit
10/01/2002
14
Manejo de memoria
Gestin automtica de memoria en Java es muy til
UPM
dit
sin embargo, resta predecibilidad al sistema aunque algunos algoritmos de recoleccin de basura (GC) son aplicables a determinados STR
10/01/2002
15
UPM
dit
WOCRAC
cualquier implementacin debe soportar obligatoriamente las nuevas reas de memoria
Implementaciones avanzadas
permite la implementacin de nuevos mecanismos de GC
10/01/2002
16
UPM
dit
RTSJ cambia la idea de tiempo de vida de un objeto (cuando un objeto es candidato para ser borrado)
Manual. Tiempo de vida controlado por el programa Automtico. Tiempo de vida controlado por visibilidad
HeapMemory
Objetos en esta rea se crean en el heap
equivalente al heap de Java
UPM
dit
Una instancia por cada JVM Zona de memoria que se utiliza por defecto tiempo de vida limitado por su visibilidad
objetos permanecen mientras sean referenciados cuando dejan de ser referenciados son eliminados automticamente por el recolector de basura
el momento concreto depende de la implementacin
Esta zona de memoria es compartida por todos los threads de tiempo real del sistema
10/01/2002 2001-2002 Jos F. Ruiz 18
ImmortalMemory
UPM
dit
Una instancia de esta memoria por cada JVM Esta zona de memoria es compartida por todos los threads de tiempo real del sistema
10/01/2002
19
ScopedMemory
Tiempo de vida limitado y claramente definido
no hay recoleccin de basura
UPM
dit
Subclases
VTMemory
el tiempo de ejecucin de new es variable
LTMemory
el tiempo de ejecucin de new es lineal
10/01/2002
20
Ejemplo de ScopedMemory
final ScopedMemory scope = new LTMemory (1024); RealtimeThread t1 = new RealtimeThread( null, null, new MemoryParameters(scope), null, new Runable() { public void run() { // Cdigo del thread t1 } }); RealtimeThread t2 = new RealtimeThread( null, null, new MemoryParameters(scope), null, new Runable() { public void run() { // Cdigo del thread t2 } }); t1.start(); t2.start(); // Esperar a que terminen t1 y t2 t1.join(); t2.join();
UPM
dit
RealtimeThread t3 = new RealtimeThread( null, null, new MemoryParameters(scope), null, new Runable() { public void run() { // Cdigo del thread t3 } }); // El constructor de t3 se queda bloqueado hasta // que se eliminan todos los objetos creados en // scope. De esta forma es seguro que t3 arranca // con scope limpio. Esto no pasara con el heap. t3.start();
10/01/2002
21
ImmortalPhysicalMemory
UPM
dit
Permite crear objetos dentro de un rango de memoria fsica, con un comportamiento especfico
por ejemplo, mayor velocidad de acceso
10/01/2002
22
Mejoras en RT-Java
Planificacin Manejo de memoria Sincronizacin Eventos asncronos Transferencia asncrona de control (ATC) Terminacin de tareas Acceso a memoria fsica
UPM
dit
10/01/2002
23
UPM
dit
Determinismo
threads esperando entrar en un bloque sincronizado estn ordenados por prioridad cuando un thread bloqueado pasa a estar preparado se pone como ltimo de la cola de su prioridad
10/01/2002
24
UPM
dit
T2
(thread Java)
Imposible!
Garbage Collector X
(Objeto compartido)
Solucin
proporcionar acceso no bloqueante a objetos compartidos entre los threads tradicionales de Java y los NoHeapRealtimeThreads
10/01/2002
25
Wait-free queues
UPM
dit
10/01/2002
26
Mejoras en RT-Java
Planificacin Manejo de memoria Sincronizacin Eventos asncronos Transferencia asncrona de control (ATC) Terminacin de tareas Acceso a memoria fsica
UPM
dit
10/01/2002
27
Eventos asncronos
UPM
dit
Una instancia de la clase AsyncEvent representa un evento (similar a una interrupcin o una seal)
10/01/2002 2001-2002 Jos F. Ruiz 28
Manejadores de eventos
Asociar un evento a un manejador
UPM
dit
AsyncEvent.addHandler(AsyncEventHandler a) Una instancia de la clase AsyncEventHandler tiene un mtodo llamado handleAsyncEvent() que se ejecuta cada vez que aparece el evento asociado
Planificacin
Cola de threads bloqueados Cola de objetos preparados para ejecutar
UPM
dit
Procesador
Planificador Dispatcher
Eventos asncronos
10/01/2002
30
Mejoras en RT-Java
Planificacin Manejo de memoria Sincronizacin Eventos asncronos Transferencia asncrona de control (ATC) Terminacin de tareas Acceso a memoria fsica
UPM
dit
10/01/2002
31
ATC
UPM
dit
Funcionalidad deseada por la potencial comunidad de usarios Similar a las ATCs existentes en Ada 95 Mecanismo de las ATCs similar a las excepciones en Java
sin embargo las excepciones son sncronas (el programa hace algo que causa que la excepcin se eleve)
ATC (II)
Elementos de la ATC
clase AsynchronouslyInterruptedException (AIE) subclase Timed, derivada de AIE interfaz Interruptible mtodos interrupt en RealTimeThreads
UPM
dit
ATC (ejemplo)
UPM
dit
public class ATC { public ATC (){} public void method1() throws AIE {// Codigo del mtodo } } // RealTimeThread t1 ... ATC a = new ATC(args); try { 1 a.method1(); } 2 catch (AIE e) { // Respuesta a la // interrupcin } ...
10/01/2002
34
UPM
dit
LongAlg LA = new LongAlg(args); Timed t = new Timed(RelativeTime(200,0)); t.doInterruptible(LA); // El mtodo run de LA terminar de // ejecutarse si tarda menos de // 200 ms. Si tarda ms ser // interrumpido t.resetTime(RelativeTime(2000,0)); t.doInterruptible(LA); // Lo mismo que antes pero con un // plazo de 2000 ms.
10/01/2002
35
Mejoras en RT-Java
Planificacin Manejo de memoria Sincronizacin Eventos asncronos Transferencia asncrona de control (ATC) Terminacin de tareas Acceso a memoria fsica
UPM
dit
10/01/2002
36
Terminacin de tareas
UPM
dit
Representa un requisito demandado por la comunidad de usuarios Se usa tpicamente si el programador quiere terminar threads cuando aparece algn evento externo que lo requiera (cambio de modo) Se basa en los mecanismos de:
manejo de eventos asncronos transferencia asncrona de control (ATC)
Caracteristicas
Seguro y termina las tareas de modo normal
Mecanismo tradicional en Java es inseguro (stop() y destroy())
10/01/2002
37
UPM
dit
public class StopIt extends AsyncEventHandler{ RealtimeThread t; // thread que vamos a parar public StopIt (RealtimeThread T){t = T;} public void run() {t.interrupt();} } ExternalEvent ee = new ExternalEvent(); ee.BindTo(args); // asociar suceso externo al evento StopIt Handler = new StopIt; // manejador de evento StopableThread st = new StopableThread (s,m); ee.AddHandler (Handler(st)); st.Start(); // cuando el suceso externo se produce el control // se pasa al manejador de AIE del thread st
10/01/2002
38
Mejoras en RT-Java
Planificacin Manejo de memoria Sincronizacin Eventos asncronos Transferencia asncrona de control (ATC) Terminacin de tareas Acceso a memoria fsica
UPM
dit
10/01/2002
39
UPM
dit
10/01/2002
40
UPM
dit
10/01/2002
41
Temporizadores
UPM
dit
Permite crear un temporizador que avise peridicamente o en un momento dado Dispara un evento cuando un temporizador expira, usando el mecanismo de eventos asncronos Clase Clock
proporciona la referencia de tiempo
Clase Timer
PeriodicTimer - Dispara un AsyncEvent peridicamente OneShotTimer - Dispara un AsyncEvent en el momento requerido
10/01/2002
42
Conclusiones
UPM
dit
10/01/2002
43
Referencias
Requirements Java Platform for Real-Time Extensions for
http://www.nist.gov/rt-java
UPM
dit
the
J Consortium
http://www.j-consortium.org
10/01/2002
44