Principios Generales de los Sistemas RT. Límites de Java Estándar en RT. La Especificación Java-RT (RTJS) Gestión de Memoria: Clases



Documentos relacionados
TEMA 8: Introducción a Java-RT

dit Real-Time Java Sistemas de Tiempo Real José F. Ruiz DIT/UPM UPM

1. Introducción 2. La RTSJ

Especificación para Tiempo Real

UPM Gestión de memoria en RT Java

Concurrencia. Primitivas IPC con bloqueo

UPM Tareas de tiempo real en RT Java

1 HILOS (THREADS) EN JAVA

A continuación resolveremos parte de estas dudas, las no resueltas las trataremos adelante

Patrones de diseño para aplicaciones de tiempo real

Tema 1. Introducción a JAVA

Curso de Java POO: Programación orientada a objetos

Workflow, BPM y Java Resumen de la presentación de Tom Baeyens

Programación Orientada a Objetos en Java

Java y JVM: programación concurrente

SOLUCION PARCIAL TASK SCHEDULER. Task Scheduler

Benemérita Universidad Autónoma del Estado de Puebla

19. Packages o paquetes

Planificación, Gestión y Desarrollo de Proyectos

DEPARTAMENTO: Informática. MATERIA: Programación. NIVEL: 1º Desarrollo de Aplicaciones Multiplataforma

Java Inicial (20 horas)

FORMACIÓN Principios de la programación orientada a objetos

Procesos. Planificación del Procesador.

PLANIFICACIÓN Y PRESENTACIÓN MATERIA/MÓDULO

Módulo 2. Inicio con Java

Concurrencia en Java

Sistemas Operativos. Curso 2015 Planificación

Sistemas Operativos. Curso 2014 Planificación

Programación Orientada a Objetos con Java

Roles y Características

Incidencias: Todas las incidencias que ocurrirán durante el apadrinamiento de un niño se deben registrar para poder buscar soluciones.

Clases abstractas e interfaces

Planificación de Procesos. Módulo 5. Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco

2.2.- Paradigmas de la POO

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso Cuatrimestre de otoño. 17 de Enero de 2011

Funcionalidades Software PROYECTOS GotelGest.Net Software para la gestión de Proyectos GotelGest.Net

Modelado arquitectónico con UML

TEMA 7: DIAGRAMAS EN UML

INF 473 Desarrollo de Aplicaciones en

1 GLOSARIO. Actor: Es un consumidor (usa) del servicio (persona, sistema o servicio).

Threads. La plataforma JAVA soporta programas multhreading a través del lenguaje, de librerías y del sistema de ejecución. Dos.

Gestión de Configuración del Software

El objetivo principal del presente curso es proporcionar a sus alumnos los conocimientos y las herramientas básicas para la gestión de proyectos.

Gestión de proyectos

Gestión de la Configuración

Tema 1: Introducción a los S.O. Ejercicios de Planificiación de Procesos

Java: Clases Abstractas e Interfaces

Programación orientada a objetos

Tema 1. Conceptos de Java para Estructuras de Datos: interfaces y programación genérica

PROGRAMACION CONCURRENTE. I.2 Recursos para la concurrencia.

ARQUITECTURA DE DISTRIBUCIÓN DE DATOS

Solutions ÑAIKOTEVẼVA RYRU. VERSIÓN 1, Feb.

Sistemas Operativos. Curso 2016 Procesos

SISTEMAS EN TIEMPO REAL (I. ELECTRÓNICA)

Repaso de las características más importantes de la programación Java y su adaptación a Android

Introducción a la Programación Orientada a Objetos

K2BIM Plan de Investigación - Comparación de herramientas para la parametrización asistida de ERP Versión 1.2

PROCEDIMIENTO AUDITORÍA INTERNA

Sistemas de Tiempo Real: Java

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso

Técnicas de Diseño CRM 1

Programación Concurrente

picojava TM Características

2 EL DOCUMENTO DE ESPECIFICACIONES

Resumen General del Manual de Organización y Funciones

SAP Business Workflow

Algunas Herramientas de Apoyo al Análisis y Diseño de Software. Agustín J. González ELO329: Diseño y programación orientados a objetos

POLIMORFISMO "una interfaz, múltiples métodos".

PHP y MySQL. Inicio: - Herencia - Palabra clave Final - Polimorfismo - Type Hinting - Abstracción de clases

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Diagrama de GANTT. Cómo crear un diagrama de GANTT

Java nos ofrece la clase Thread y la interfaz Runable que permiten que varios procesos estén funcionando de forma concurrente.

1. Definición de puerto 2. Sockets 3. Conceptos cliente/servidor 4. Definición de Stream 5. Concurrencia, multiprogramación y multitarea 6.

GUIA PROGRAMACIÓN ORIENTADA A OBJETOS

4. Programación Paralela

Sistemas operativos: una visión aplicada. Capítulo 11 Estudio de casos: Linux

GESTIÓN DE LA CALIDAD

PLANIFICACIÓN DE PROCESOS

SERVIDOR WEB PARA ACCESO EN TIEMPO REAL A INFORMACIÓN METEOROLÓGICA DISTRIBUIDA

Introducción a la Programación Orientada a Objetos (POO) Introducción a la Programación Orientada a Objetos (POO)

class Nombre_Clase extends Nombre_SuperClase { cuerpo de la clase extendida }

CURSO: Programación de Aplicaciones en Lenguaje JAVA

Sistemas operativos avanzados. 1.3 Algoritmos de planificación del procesador

Soporte Técnico de Software HP

a) Cita y comenta brevemente los grados de acoplamiento. Clasifícalos y ordénalos en orden creciente al nivel de acoplamiento asociado.

Java en 2 horas. Rodrigo Santamaría

Técnica 2(Instrumental)

Carta de seguridad. Carta de seguridad. Mastempo / Masgroup Plaza Urquinaona nº2 1º 2ª Barcelona

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

EL ANALIS DE RIESGO PREVIO A LA TAREA. Pg. 1

Clase 20: Arquitectura Von Neuman

Plan de estudios ISTQB: Nivel Fundamentos

Gestión de Proyectos con Open Project

Arquitectura de sistema de alta disponibilidad

Quién quiere ganar Taller?

Master en Gestion de la Calidad

Clases y Objetos. Informática II Ingeniería Electrónica

Patrones Creacionales Builder. Patrones Creacionales Abstract Factory. Patrones Creacionales Singleton. Patrones Creacionales Prototype

Unidad II: Administración de Procesos y del procesador

Transcripción:

TEMA 8: Introducción a Java-RT Principios Generales de los Sistemas RT CONTENIDO Principios Generales de los Sistemas RT Límites de Java Estándar en Aplicaciones RT La Especificación RTJS (Real Time Java Specificacion) Gestión de Memoria Relojes y Tiempo Planificación Threads RT Eventos Asíncronos REFERENCIAS [Bol09] Bollella, G. & Bruno, E. Real Time Java Programming With Java RTS. SunMicrosystems, 2009. [Wel06] Concurrent and Real Time Programming in Java. John Wiley &Sons, 2004 Objetivo: dar respuesta a eventos procedentes del mundo real antes de un límite temporal establecido (deadline) Predectibilidad Se cumplen los deadlines con independencia de factores como carga de trabajo, número de procedadores, hilos en ejecución, prioridad de hilos, algoritmos de planificación, etc. Determinismo Funcionalidad Rendimiento Tiempo de Respuesta Límites de Java Estándar en RT Gestión de Memoria gc es impredecible. Se activa cuando quiere fragmenta la memoria=>memoria no planificable Planificación de Threads Impredecible No permite especificar cuándo un hilo ha de ejecutarse Inversiones de Prioridad Sincronización Duración Secciones Críticas Impredecible Un hilo no sabe cuántas otras tareas compiten por un recurso, ni su prioridad Gestión Asíncrona de Eventos (no está definida) Acceso a Memoria Física Una tarea no sabe cuánta hay ni cuánta necesita La Especificación Java-RT (RTJS) Cambia la JVM para que soporte RT No modifica el lenguaje Java, lo engloba Incorpora Tipos Nuevos de Hilos Tipos Nuevos de Memoria Gestión Asícrona de Eventos Predectibilidad (frente a rendimiento) Conservando Compatilidad hacia atrás El lenguaje y el bytecode Gestión de Memoria: API Gestión de Memoria: Clases RTSJ provee áreas de memoria no afectadas por gc, al existir fuera del heap El gc puede ser expulado por un hilo RT Se utiliza la clase abstacta MemoryArea y sus subclases: HeapMemory InmortalMemory ScopedMemory VTMemory LTMemory GarbageCollector SizeEstimator HeapMemory LTMemory RTSJ abstract class MemoryArea MemoryParameters ScopedMemory ImmortalMemory VTMemory 1

Relojes y Tiempo: API HighResolutionTime AbsoluteTime Clock standard Java interface RTSJ abstract class RelativeTime RationalTime Planificación en Java: Limitaciones Java no garantiza que los hilos de alta prioridad se ejecuten antes debido a: El mapping hilos java-hilos de sistema Uso de planificación no expulsiva El esquema de diez prioridades java cambia durante el mapping a prioridades de sistema, con superposiciones dependientes del sistema El concepto de planificación por prioridad es tan débil que lo hace completamente inadecuado para su uso en entornos RT Por tanto, los hilos de mayor prioridad, eventualmente se ejecutarán antes, pero NO hay garantías de que ello ocurra así Planificación en Java-RT: Gold Standard Planificación por prioridades fijas, expulsiva y con 28 niveles de prioridad Fijas, porque los objetos planificables no cambian su prioridad (salvo si hay inversión de prioridad=>herencia de prioridad) Expulsiva, porque el sistema puede expulsar al objeto en ejecución que posee la CPU por varias causas Objetos Planificables (Schedulable) RTSJ generaliza el concepto de entidades ejecutables desde el conocido thread a los objetos planificables (schedulable objects) Un objeto schedulable implementa la interfaz Schedulable y pueden ser Hilos RT (clase RealTimeThread y NoHeapRealTimeThread) Gestores de Eventos Asíncronos (clase AsyncEventHandler) Cada objeto schedulable debe especificar sus requerimientos temporables indicando requerimientos de lanzamiento (release) requerimientos de memoria (memory) requerimientos de planificación (scheduling) Parámetros de Lanzamiento (release) Tipos de lanzamiento periódico (activación en intervalos regulares) aperiódico (activación aleatoria) esporádico (activación irregular con un tiempo mínimo entre dos activaciones) Todos los tipos de lanzamiento tienen un coste y un deadline relativo El coste es el tiempo de CPU requerido para cada activación El deadline es el límite de tiempo dentro del cual la activación actual debe haber finalizado Ajuste de Parámetros de Lanzamiento de un hilo-rt RealtimeThread htr = new RealTimeThread(); RelativeTime miliseg = new RelativeTime(1,0); ReleaseParameters relpar = new Periodic Parameters(miliseg); htr.setreleaseparameters(relpar); 2

Parámetros de Planificación (Scheduling) Son utilizados por el planificador para escoger entre los objetos schedulable cuál debe ejecutarse Se utiliza la clase abstracta SchedulingParameters como la raíz de una jerarquía que permiten múltiples parámetros de planificación RTSJ utiliza como criterio de planificación único la prioridad, de acuerdo al gold standar Clases: PriorityParameters ImportanceParameters Ajuste de Prioridad de un hilo-rt RealtimeThread htr = new RealTimeThread(); int maxpri = Priority.instance(). getmaxpriority(); PriorityParameters pri = new PriorityParameters(maxPri); htr.setschedulingparameters(pri); Ajuste de Prioridad Fino de un hilo-rt Planificadores (s) RealtimeThread htr1 = new RealTimeThread(); int maxpri = Priority.instance(). getmaxpriority(); ImportanceParameters ip1 = new ImportanceParameters (maxpri, 1); htr.setschedulingparameters(ip1); RealtimeThread htr2 = new RealTimeThread(); ImportanceParameters ip2 = new ImportanceParameters (maxpri, 2); //Se incremente la importancia de htr1 sobre htr2 ip1.setimportance(3); Son los algoritmos responsables de planificar para ejecución los objetos schedulable RTSJ soporta planificación por prioridades mediante expulsiva con 28 niveles mediante el Priority es una clase abstracta (una instancia única por JVM y Priority es una subclase Este esquema permite el diseño de planificadores propios mejorados. Clases para Planificación Cumplimiento de Deadlines ProcessingGroupParameters SchedulingParameters PriorityParameters ImportanceParameters Priority MemoryParameters checks RealtimeSecurity ReleaseParameters PeriodicParameters AperiodicParameters Un sistema de tiempo real bien diseñado debe: Predecir si los objetos de aplicación cumplirán sus deadlines Evitar la pérdida de deadelines y de sobrecargas de ejecuciónreport a missed its deadline, a cost overrun, or minimum inter-arrival time violation Algunos sistemas pueden ser verificados off-line Otros requieren un análisis on-line RTSJ provee herramientas para el análisis online SporadicParameters 3

Threads Real-Time: Generalidades Son objetos schedulable y heredan de la clase java.lang.thread pesa a lo cual son mucho más que una simple extensión de clase Existe además una versión no-heap independiente del recolector de basura y que no usa memoria del heap Threads Real-Time: Clases implements Runnable Thread ProcessingGroup extends Schedulable imp lem ents Parameters SchedulingParameters enters MemoryArea RealtimeThread MemoryParameters NoHeapRealtimeThread ReleaseParameters standard Java interface standard Java class RTSJ abstract class or interface Threads Real-Time: API(Constructores) public class RealtimeThread extends java.lang.thread implements Schedulable { // constructores public RealtimeThread(); public RealtimeThread(SchedulingParameters scheduling); public RealtimeThread(SchedulingParameters scheduling, ReleaseParameters release); public RealtimeThread(SchedulingParameters scheduling, ReleaseParameters release, MemoryParameters memory, MemoryArea area, ProcessingGroupParameters group, Runnable logic); } Gestión de Eventos Asíncronos: Generalidades Threads estándares o RT modelan bien tareas concurrentes con un ciclo de vida bien definido Pero se requiere modelar eventos que ocurren asíncronamente durante la actividad de un hilo Procedentes del entorno Generados por la lógica del programa Podríamos tener hilos en espera (p.e. en un pool) para tratarlos, pero sería ineficiente Desde un enfoque real-time estos eventos requieren gestores que respondan bajo un deadline RTSJ generaliza los gestores de eventos a objetos schedulable Manejadores de Eventos Asíncronos: Clases Schedulable MemoryParameters implements ProcessingGroup Parameters AsyncEventHandler SchedulingParameters ReleaseParameters * handles * AsyncEvent Hilos-RT y Manejadores de Eventos En la práctica la JVM-RT liga dinámicamente un gestor de eventos con un hilo-rt Es posible ligar un gestor de eventos a un hilo-rt de forma permanente Cada instancia de AsyncEvent puedes tener más de un gestor de eventos Cuando el evento se produce, su gestor de eventos es activado para ejecución según sus parámetros de planificación 4

Eventos Asíncronos: Clases POSIXSignalHandler associate with AsyncEventHandler * * fire AsyncEvent handles interrupt BoundAsyncEventHandler Timer Clock PeriodicTimer OneShotTimer Control de la Sincronización Los objetos planificables (incluidos hilos-rt) deben poderse comunicar y sincronizar Sabemos que Java proporciona control de acceso tipo monitro a objetos para control de la exclusión mutua pero Todas las técnicas de sincronización badas en la e.m. sufren de inversión de prioridades Java-Rt lo soluciona mediante la técnica de herencia de prioridad Herencia de Prioridad en Java-RT: Clases MonitorControl PriorityInheritance PriorityCeilingEmulation 5