40 research outputs found
Hard real-time Java virtual machine for Space applications
International audienceThe AERO ($UFKLWHFWXUH IRU (QKDQFHG 5HSURJUDPPDELOLW\ DQG 2SHUDELOLW\) is an ESA project with the objectives to investigate on a real-time Java virtual machine for ERC32 processor. Special attention was put on the garbage collection mechanism and deterministic execution model. The project have first investigate existing virtual machine to choose a potential candidate that will be customized, are then investigates the definition of requirements concerning a real-time interpreter in on-board systems. The second phase of the project was dedicated to the definition of software functions of the real-time Java virtual machine and to their implementation and assessment through validation tests. The resulting application is the AERO-JVM
Model-based specification of the flight software of an autonomous satellite
International audienceIn the framework of the AGATA program, we applied a model-based development process founded on a living UML specification to produce the RT-Java code of the AGATA onboard software. Derived from classical V-shaped production cycle, our development process benefited from several model-based engineering methods, such as model-debugging and automated code generation. Our resulting Y-shaped production cycle enabled an incremental development process that allowed us to start software validation early in the process. Despite the complexity of the AGATA onboard software we thereby manage to achieve its functional validation and were able to evaluate RT-Java (Real-Time Java Specification-RTSJ) for real-time space applications
The jointly scheduling of hard periodic tasks with soft aperiodic events within the Real-Time Specification for Java (RTSJ)
The studied problem is the jointly scheduling of hard periodic tasks with soft aperiodic events, where the response times of soft tasks have to be as low as possible while the warranty to meet their deadlines has to be given to hard tasks. A lot of theoretical solutions have been proposed these past two decades but we are interested on the implementability of these solutions under the real-time specification for Java (RTSJ), without changing the scheduler. This led us to adapt the existing algorithms to operate at a user land level in the system, to propose some optimizations and counter measures in order to balance the lost of performances and finally to set up an approximate slack stealer algorithm specifically designed to take into account RTSJ restrictions. We propose new classes to extend the RTSJ API's to implement these mechanisms and some minor modification suggestions to existing ones as a feed back from our RTSJ experiences. We demonstrates the efficiency of the modified algorithms through extensive simulations and the implementability on available RTSJ compliant virtual machine by an overhead measure in real situation with the RTSJ JamaïcaVM from Aïcas. We also measure the overhead on LejosRT, an RTSJ compliant firmware for Lego Mindstorms NXT in development
A Methodology for Transforming Java Applications Towards Real-Time Performance
The development of real-time systems has traditionally been based on low-level programming languages, such as C and C++, as these provide a fine-grained control of the applications temporal behavior. However, the usage of such programming languages suffers from increased complexity and high error rates compared to high-level languages such as Java. The Java programming language provides many benefits to software development such as automatic memory management and platform independence. However, Java is unable to provide any real-time guarantees, as the high-level benefits come at the cost of unpredictable temporal behavior.This thesis investigates the temporal characteristics of the Java language and analyses several possibilities for introducing real-time guarantees, including official language extensions and commercial runtime environments. Based on this analysis a new methodology is proposed for Transforming Java Applications towards Real-time Performance (TJARP). This method motivates a clear definition of timing requirements, followed by an analysis of the system through use of the formal modeling languageVDM-RT. Finally, the method provides a set of structured guidelines to facilitate the choice of strategy for obtaining real-time performance using Java. To further support this choice, an analysis is presented of available solutions, supported by a simple case study and a series of benchmarks.Furthermore, this thesis applies the TJARP method to a complex industrialcase study provided by a leading supplier of mission critical systems. Thecase study proves how the TJARP method is able to analyze an existing and complex system, and successfully introduce hard real-time guaranteesin critical sub-components
A Hierarchical Scheduling Model for Dynamic Soft-Realtime System
We present a new hierarchical approximation and scheduling approach for applications and tasks with multiple modes on a single processor. Our model allows for a temporal and spatial distribution of the feasibility problem for a variable set of tasks with non-deterministic and fluctuating costs at runtime. In case of overloads an optimal degradation strategy selects one of several application modes or even temporarily deactivates applications. Hence, transient and permanent bottlenecks can be overcome with an optimal system quality, which is dynamically decided. This paper gives the first comprehensive and complete overview of all aspects of our research, including a novel CBS concept to confine entire applications, an evaluation of our system by using a video-on-demand application, an outline for adding further resource dimension, and aspects of our protoype implementation based on RTSJ
Contributions to the safe execution of dynamic component-based real-time systems
Traditionally, real-time systems have based their design and execution on barely dynamic models to ensure, since design time, the temporal guarantees in the execution of their functionality. Great effort is being applied nowadays to progressively develop more dynamic systems, with the target of changing during their execution and to adapt themselves to their environment. The capability to change and to reconfigure themselves represents remarkable advantages as the capability to fix errors and to add new functionality with on-line updates. This means to be able to be updated without needing to stop the service, that may imply monetary losses in many cases. Design and development techniques based on components have become popular due to the use of components, which allows simplifying the system design, code reusability and updates through the substitution of components. The target of this thesis work is to provide certain degree of dynamism to real-time systems allowing them to replace components, incorporating new functionality of fixing existing bugs. On that purpose, a component-based framework is proposed, as well as the corresponding task in charge of providing dynamism to the system. The main contribution is to provide a framework to allow safe component replacements. Safe meaning that incorrect executions of tasks are avoided even y multiple tasks are executing concurrently and making use of the same data. Also that temporal guarantees are provided for every task. This framework incorporates a generic component model with real-time threads, a components replacement model with execution times that are known and bounded, and different strategies to apply such component replacement model. Some mechanisms to maintain a seamless and safe execution, regarding concurrency, before, during, and after applying the processes in charge of replacing running components are also described. Seamless execution means that components themselves do not perform the replacements, and safe means that temporal guarantees are provided and components are not affected in their execution. Part of these mechanisms are the system schedulability analysis and the framework tasks as well as reserving the needed resources for such scheduling to be correct. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Los sistemas de tiempo real han basado tradicionalmente su desarrollo en modelos altamente
predecibles ya que estos requieren garantías temporales en su ejecución.
A lo largo de los años, la technología de tiempo real ha ido penetrando en diferentes campos de
aplicación y ajustándose a paradigmas de desarrollo software más novedosos. Esto ha presentado y
presenta en la actualidad un tremendo reto ya que estas aplicaciones suelen tener un alto grado de
dinamismo, lo que entra en conflicto con la predictibilidad temporal y, en general la ejecución
segura de los mismos.
Hoy en dia se esta realizando un gran esfuerzo en el desarrollo de sistemas cada vez más
dinamicos que permitan adaptar su estructura en tiempo de ejecución para adaptarse a entornos que
presentan condiciones cambiantes. La capacidad de soportar este tipo de dinamismo presenta
ventajas descatables como permitir corregir fallos y anadir funcionalidad mediante actualizaciones
en caliente, es decir, poder actualizarse sin necesidad de realizar paradas en su servicio, lo que
podria implicar costes monetarios en muchos casos o perdidas temporales de servicio.
Por otro lado, las técnicas de diseño y desarrollo basadas en componentes se han hecho muy
populares y su aplicación a los sistemas de tiempo real gana terreno día a día. Uno de los
principales motivos de ellos es que el uso de componentes permite simplificar el diseño del sistema,
la reutilizacion de codigo e incluso la actualizacion del mismo mediante la substitucion de
componentes.
En esta tesis se aborda el objetivo de proveer a los sistemas de tiempo real de cierto grado de
dinamismo para poder reemplazar componentes de forma segura, que permita incorporar nuevas
funcionalidades o corregir errores existentes. Para ello, en esta tesis se ha elaborado de un marco de
trabajo para dar soporte a reemplazos de componentes de forma segura, entendiendo como tal que el
hecho de que no se produzcan ejecuciones incorrectas debido a la ejecución concurrente de
multiples tareas, asi como el garantizar los tiempos de ejecucion de cada tarea y acotar la duración
temporal de los reemplazos. El marco de trabajo propuesto está basado, pues, en componentes de
tiempo real, que tiene en cuenta los requisitos temporales en la ejecución de los componentes del
sistema y de las tareas propias del marco que dan soporte a estos mecanismos de reemplazo. Este
marco de trabajo incorpora un modelo generico de componente con tareas de tiempo real, un
modelo de reemplazo de componentes cuyos tiempos de ejecucion son conocidos y limitados en
tiempo y diferentes estrategias de aplicacion de dicho modelo de reemplazo de componente. Las
contribuciones propuestas integran el analisis de la planificabilidad de los componentes del sistema
y de las tareas del marco de componentes para permitir establecer los parámetros de reserva de los
recursos necesarios para las tareas del marco. Por último, se realiza una validación empírica en la
que se comprueba experimentalmente la validez del modelo tanto de forma genérica como en un
escenario específico y determinando también los recursos necesarios para su implementación