Download RTSJ (Real-Time Specification for Java) Universidad ORT Uruguay
Document related concepts
no text concepts found
Transcript
RTSJ (Real-Time Specification for Java) Universidad ORT Uruguay 7 de marzo de 2007 Daniel Tejera Carballa tejera@dit.upm.es Índice: ORT Uruguay Introducción: Sistemas de tiempo real, Motivación y Problemas RTSJ Principios básicos Áreas principales: Gestión de memoria Relojes y Valores temporales Planificación Hebras de tiempo real Manejo de eventos asíncronos Transferencia asíncrona de control Sincronización y Recursos compartidos Acceso a Memoria Física Referencias: RT-JVM, Aplicaciones, Documentación © Daniel Tejera, Marzo 2007 2 Introducción: Sistemas de tiempo real ? es un sistema informático que: interacciona repetidamente con su entorno responde a los estímulos que recibe del mismo dentro de un plazo de tiempo determinado Para que el funcionamiento del sistema sea correcto no basta con que las acciones sean correctas, sino que tienen que ejecutarse dentro del intervalo de tiempo especificado Tipos: Críticos, Firmes y Acríticos ORT Uruguay © Daniel Tejera, Marzo 2007 3 Introducción : Donde encontramos STR ? Sistemas de control por computador Sistemas de tratamiento de señales Sistemas de mando y control Sistemas de telecomunicaciones Sistemas de aviónica Sistemas de control de trenes y automóviles Sistemas de control de tráfico aéreo Sistemas multimedia Electrónica de consumo (teléfonos, PDA …) etc. Nota: A menudo se trata de sistemas empotrados ORT Uruguay © Daniel Tejera, Marzo 2007 4 Introducción: Motivación Área prometedora para sistemas de tiempo real: programación orientada a objetos Simple Seguro (no existen punteros) Independencia de Plataforma Popularidad Bibliotecas ORT Uruguay © Daniel Tejera, Marzo 2007 5 Introducción: Problemas de Java en STR La definición original no es adecuada para tiempo real: la planificación de actividades concurrentes no está bien definida la gestión dinámica de memoria introduce indeterminismo los mecanismos de sincronización son inadecuados la medida del tiempo no es suficientemente precisa otros problemas con excepciones y concurrencia ORT Uruguay © Daniel Tejera, Marzo 2007 6 Introducción: Java para tiempo real NIST (National Institute of Science and Technology) Requirements for Real-Time Extensions to Java (1999) no modificar la sintaxis, coexistencia con aplicaciones convencionales Real-Time Java Working Group (J-Consortium) Real-Time Core Extension (2000) basada en una máquina virtual separada para STR Java Real-time Experts Group (Sun & otros) Real-Time Specification for Java (2000-2001) basada en un máquina virtual extendida para STR hay varias implementaciones de RTSJ ORT Uruguay © Daniel Tejera, Marzo 2007 7 Introducción: Principios básicos en RTSJ Compatibilidad con versiones anteriores Ejecución predecible WORA (Write Once, Run Anywhere) Definir lo básico ahora y permitir introducir características avanzadas en el futuro Sin extensiones sintácticas Permite variaciones en las implementaciones ORT Uruguay © Daniel Tejera, Marzo 2007 8 Introducción: Áreas principales RTSJ mejora Java en las siguientes áreas: Gestión de memoria Relojes y Valores temporales Planificación Hebras de tiempo real Manejo de eventos asíncronos Transferencia asíncrona de control Sincronización y recursos compartidos Acceso a Memoria Física ORT Uruguay © Daniel Tejera, Marzo 2007 9 Gestión de Memoria: Memoria Heap: Tradicional en Java Utiliza un recolección basura, el cual introduce latencias impredecibles Tecnología para incluir recolector de basura de tiempo real no suficientemente avanzada RTSJ: extiende modelo gestión de memoria para eliminar el efecto del recolector de basura. Noción de áreas de memoria Desalojo del recolector de basura en un tiempo acotado ORT Uruguay © Daniel Tejera, Marzo 2007 10 Gestión de Memoria: MemoryArea HeapMemory ScopedMemory LTMemory ORT Uruguay ImmortalMemory VTMemory © Daniel Tejera, Marzo 2007 11 Gestión de Memoria: Reglas Reglas para evitar punteros incorrectos producidos por la recolección en memoria restringida. Evitar que objetos de mayor tiempo de vida referencien a objetos con tiempo de vida menor. Reference constraints Ref. a Heap Ref. a Immortal Ref. a Scoped Heap Yes Yes No Immortal Yes Yes No Scoped Yes Yes Limitado Variable local Yes Yes Limitado ORT Uruguay © Daniel Tejera, Marzo 2007 12 Gestión de Memoria: Variables de referencia no pueden tener una vida más larga que la del objeto referenciado. Desde memoria Heap o Immortal no se puede hacer referencia a objetos en Scoped Notas: Variables Estáticas en ImmortalMemory -> No pueden hacer referencia a objetos en ScopedMemory IllegalAssignmentError Las clases de Java no están pensadas para que se ejecuten en ScopedMemory. ORT Uruguay © Daniel Tejera, Marzo 2007 13 Gestión de Memoria: Memorias restringidas anidadas ORT Uruguay © Daniel Tejera, Marzo 2007 14 Gestión de Memoria: Compartiendo memorias restringidas ORT Uruguay © Daniel Tejera, Marzo 2007 15 Relojes y Valores temporales: ORT Uruguay © Daniel Tejera, Marzo 2007 16 Planificación: Scheduler Java: no se garantiza que una hebra de mayor prioridad se ejecute siempre primero Planificador Scheduler. Contiene métodos para admisión de hebras, mecanismos de manejo de eventos asíncronos Subclase PriorityScheduler: » Con desalojo basado en prioridades fijas (al menos 28 prioridades) Implementar algoritmos alternativos de planificación extendiendo clase Scheduler » Ejemplo: EDF (Earliest Deadline First) ORT Uruguay © Daniel Tejera, Marzo 2007 17 Planificación: Interfaz Schedulable Interfaz Schedulable: Objetos planificables (schedulable object) RealtimeThreads y AsyncEventHandlers Parámetros usados por objetos planificables: SchedulingParameters PriorityParameters: Prioridad MemoryParameters: Limita uso de áreas de memoria ReleaseParameters AperiodicParameters, PeriodicParameters, SporadicParameters » Todos: Costo y Plazo de respuesta » Periódicos: Inicio y Período » Esporádicos: Mínimo tiempo entre dos activaciones » Todos: OverrunHandler y MissHandler ProcessingGroupParameters: periodo, costo y plazo compartido ORT Uruguay © Daniel Tejera, Marzo 2007 18 Planificación: Hebras de tiempo real ORT Uruguay © Daniel Tejera, Marzo 2007 19 Manejo de eventos Asíncronos: AsyncEvent ORT Uruguay © Daniel Tejera, Marzo 2007 20 Manejo de eventos Asíncronos: AsyncEventHandler Manejadores: heredan de AsyncEventHandler y sobrescriben el método handleAsyncEvent() o pasan a uno de los constructores un objeto que implemente la interfaz Runnable. Cuando ocurre un evento los métodos handleAsyncEvent() o los métodos run() son invocados Los parámetros temporales, de memoria, y planificación asociados al manejador controlan la ejecución del mismo AsyncEventHandler: latencias por asignación de hebra BoundAsyncEventHandler: sin latencias, permanentemente asociados a una hebra de tiempo real ORT Uruguay © Daniel Tejera, Marzo 2007 21 Manejo de eventos Asíncronos: Muchos sistemas de tiempo real son equivalentes a una alarma de reloj o un timer. Solución nuevos eventos: Timer: subclase de AsyncEvent, que representa un objeto dirigido por tiempo. OneShotTimer: subclase de Timer » se dispara una vez, en el momento especifico. PeriodicTimer: subclase de Timer » Se dispara en el momento especifico y luego de acuerdo a un intervalo de tiempo. ORT Uruguay © Daniel Tejera, Marzo 2007 22 Transferencia asíncrona de control: Mecanismo que permite a una hebra lanzar una excepción sobre otra hebra. Basada en los siguientes principios El OP tiene que declarar que está preparado Los métodos o bloques sincronizados difieren la TAC TAC tiene semántica de terminación, es decir, una TAC es una transferencia de control no retornable. Las excepciones transferibles se definen heredando de AsynchronouslyInterruptedException ORT Uruguay © Daniel Tejera, Marzo 2007 23 Transferencia asíncrona de control: Cada método debe indicar que está preparado para recibir una TAC poniendo AsynchronouslyInterruptedException en la cláusula throw Por seguridad: Las TAC son diferidas mientras se ejecutan métodos o bloques sincronizados o inicializadores estáticos Las TAC puede ser manejadas únicamente dentro de métodos diferidos Cuando se invoca el método java.lang.interrupt() sobre una hebra: Si hebra está ejecutando un método interrumpible, el método inmediatamente actuará como si el sistema hubiera lanzado la excepción. Si hebra no está ejecutando método interrumpible, sistema pondrá la excepción en estado pendiente para la hebra y la entregará cuando se pase control a método interrumpible ORT Uruguay © Daniel Tejera, Marzo 2007 24 Sincronización y Recursos compartidos: Inversión de Prioridades ilimitadas ORT Uruguay © Daniel Tejera, Marzo 2007 25 Sincronización y Recursos compartidos: Colas Colas para comunicación entre NHRTs - Threads WaitFreeWriteQueue: NHRTs utilizan operación write; Threads utilizan la operación read. Bloqueante Synchronized Read Write No bloqueante Unsynchronized WaitReadFreeQueue: Threads utilizan operación write; NHRTs utilizan la operación read. No Bloqueante Unsynchronized ORT Uruguay Read Write © Daniel Tejera, Marzo 2007 Bloqueante Synchronized 26 Acceso a Memoria Física: Clases para acceder a memoria física directamente desde código Java: RawMemoryAccess: Objeto que represente conjunto de dirs físicas como una secuencia de bytes. PhysicalMemory: Objeto que representa un rango de direcciones físicas en los que el sistema puede almacenar objetos Java Estas clases permiten a los programas implementar drivers o mapear memoria a dispositivos de I /O. ORT Uruguay © Daniel Tejera, Marzo 2007 27 RT-JVM: Implementaciones RTSJ: TimeSys RTSJ Reference Implementation (JTime) -- Linux. Sun Java SE Real-time (Java RTS) -Sparc/Solaris. IBM/Apogee Aphelion -- Linux. IBM WebSphere Real Time -- Linux. Aicas Jamaica VM -- Linux. Aonix PERC ORT Uruguay © Daniel Tejera, Marzo 2007 28 Aplicaciones: Dentro del proyecto europeo HIJA: “Safety Critical Applications and Hard RealTime Profile for Java: A Case Study in Avionics” “Flexible Java RealTime Profile for Businesscritical Systems” Otros ejemplos: RTZen: es un middleware basado en corba 2.3 y rt-corba el cual está implementado usando RTSJ » http://doc.ece.uci.edu/rtzen/ ORT Uruguay © Daniel Tejera, Marzo 2007 29 Documentación: Concurrent and Real-Time Programming in Java Andy Wellings Real-Time Java™ Platform Programming Peter C. Dibble http://www.rtsj.org/ ORT Uruguay © Daniel Tejera, Marzo 2007 30