SlideShare una empresa de Scribd logo
1 de 22
Simplifying the dualized
threading model of RTSJ

                   Pablo Basanta-Val
                  Marisol García-Valls
                    Iria Estévez-Ayres
    mailto: pbasanta@it.uc3m.es
http://www.it.uc3m.es/drequiem/




  Este trabajo ha sido publicado en IEEE-ISORC’08 (Orlando-USA)
Roadmap
1.   Introduction
     –   Motivation
1. RealtimeThread++ extension
     –   Interface changes
     –   Example of use
     –   Low level (VM) changes
1.   Taking advantage of the extension
     –   GC interference avoidance
     –   Extended event handlers
     –   Enhanced real-time distributed architectures
1.   Empirical results
     –   Absolute and relative penalties
1.   Concluding remarks
Introduction
• Java is a successful high-level language
   – Bytecode portability, garbage collection, clear syntax, a number of
     libraries, ….
   – Productivity may be higher than with other languages (C/C++)

• Java has extended its radius of action to real-time systems
   – Ideally: real-time portability, real-time automatic memory
     management, and real-time libraries
   – And also: lower development times, and improved maintainability
Current Status of Real-Time Java
• Specifications
   – Real-Time Specification for Java (RTSJ)
   – Distributed Realtime Specification for Java (DRTSJ)
• Compliant virtual machines
   – Sun’s JRTS, Aicas’s Jamaica, TimeSys’s JTime, IBM Real-Time
     Websphere, Purdue’s OVM, …
• Plug-ins for development environments
   – Netbeans (Sun) and Eclipse (IBM, Aicas)
RealtimeThread++
• An extension not identified in JSR-282 (RTSJ 1.1)
• RTSJ offers two types of real-time threads:
       • RealtimeThread (RtThs) and NoHeapRealtimeThreads (NhRtThs)
• Reducing unnecessarily the language expressiveness
   – RtThs suffer the garbage collector whereas NhRtThs cannot use
     the heap
   – A general purpose application may require both types of support
• Why don’t a simplification in this model?
   – One unique type of thread that decides its relationship with the
     garbage collector and the heap at runtime
   – Benefits: a more flexible specification and better synchronization
     models.
Real-Time Java
Centralized       RTSJ                Thread
concurrent                        RealtimeThread
entities
                               NoheapRealtimeThread
                                 AsyncEventHandler
                              BoundAsyncEventHandler



Distributed       DRTSJ      DistributedRealtimeThread
concurrent                NoHeapDistributedRealtimeThread
entities
                              DistributedEventHandler
Synchronization   RTSJ             Synchronized
                                  RealtimeQueues
                                      Signals
Real-Time Java
                  with RealtimeThread++
Centralized       RTSJ                Thread
concurrent                        RealtimeThread
entities
                               NoheapRealtimeThread
                                 AsyncEventHandler
                              BoundAsyncEventHandler



Distributed       DRTSJ      DistributedRealtimeThread
concurrent                NoHeapDistributedRealtimeThread
entities
                              DistributedEventHandler
Synchronization   RTSJ             synchronized
                                  RealtimeQueues
                                      Signals
RealtimeThread++: changes
• One thread is initially running in either heap or noheap
  environments
   – By default, in its instantiation, NhRtThs and NhDRtThs run in
     noheap memory whereas RtThs run in heap

• One thread may change at runtime its relationship with
  the garbage collector
   – We may change it, temporally, nesting a heap (with
     enterHeap) or a noheap (with enterNoHeap) runnable
     object
RealtimeThread++: full API
RealtimeThread++ in action




One task printing out two messages: the first in noheap
and the second in heap
RealtimeThread++ in action




Evolution of the system, the active environment
is the one on the top of the environment stack
Required underlying support
• Activation and deactivation of reading barrier typically associated with
  a NhRtThs
    – Low level interaction with the virtual machine required


• The check of local variables (for NH to H changes)
    – Easy to obtain in a portable way.


• Modification of the relationship maintained with the garbage collector
    – Sometimes, NhRtThs have privileges when garbage collector scans their
      frame stack
Runtime checking barriers
          (examples)



 Runtime barrier that changes the behavior from heap to no-heap .




Runtime barrier that changes the behavior from o no-heap to heap
Integration with the garbage
          collector
Taking advantage of the extension
– Sharing data
   • Among heap and no-heap entities using enterNoHeap
– Enrichment of the current RTSJ
   • Giving more flexibility to event-handler programming
– Enrichment of the ongoing DRTSJ
   • Eases some architecture implementations
Garbage collector priority inversion
Garbage collector priority inversion
     (current RTSJ approach)
Garbage collector priority inversion
       (with RealtimeThread++)
Enhanced RTSJ event model




 Currently event handler decide at creation time its
 relationship with the garbage collector
Session-level isolation for DRTSJ
  (with real-time thread++ extension)
Absolute and relative performance
Preguntas

Más contenido relacionado

La actualidad más candente

Crossing the border with Qt: the i18n system
Crossing the border with Qt: the i18n systemCrossing the border with Qt: the i18n system
Crossing the border with Qt: the i18n systemDeveler S.r.l.
 
Towards an Integration of the Actor Model in an FRP Language for Small-Scale ...
Towards an Integration of the Actor Model in an FRP Language for Small-Scale ...Towards an Integration of the Actor Model in an FRP Language for Small-Scale ...
Towards an Integration of the Actor Model in an FRP Language for Small-Scale ...Takuo Watanabe
 
Adaptive Linear Solvers and Eigensolvers
Adaptive Linear Solvers and EigensolversAdaptive Linear Solvers and Eigensolvers
Adaptive Linear Solvers and Eigensolversinside-BigData.com
 
A Language Support for Exhaustive Fault-Injection in Message-Passing System M...
A Language Support for Exhaustive Fault-Injection in Message-Passing System M...A Language Support for Exhaustive Fault-Injection in Message-Passing System M...
A Language Support for Exhaustive Fault-Injection in Message-Passing System M...Takuo Watanabe
 
Using Flame Graphs
Using Flame GraphsUsing Flame Graphs
Using Flame GraphsIsuru Perera
 
Tungsten University: Setup and Operate Tungsten Replicators
Tungsten University: Setup and Operate Tungsten ReplicatorsTungsten University: Setup and Operate Tungsten Replicators
Tungsten University: Setup and Operate Tungsten ReplicatorsContinuent
 
Processing Big Data in Real-Time - Yanai Franchi, Tikal
Processing Big Data in Real-Time - Yanai Franchi, TikalProcessing Big Data in Real-Time - Yanai Franchi, Tikal
Processing Big Data in Real-Time - Yanai Franchi, TikalCodemotion Tel Aviv
 
java memory management & gc
java memory management & gcjava memory management & gc
java memory management & gcexsuns
 
General Purpose Computing using Graphics Hardware
General Purpose Computing using Graphics HardwareGeneral Purpose Computing using Graphics Hardware
General Purpose Computing using Graphics HardwareDaniel Blezek
 
Tokyo Cabinet & Tokyo Tyrant
Tokyo Cabinet & Tokyo TyrantTokyo Cabinet & Tokyo Tyrant
Tokyo Cabinet & Tokyo Tyrant輝 子安
 
Cache aware hybrid sorter
Cache aware hybrid sorterCache aware hybrid sorter
Cache aware hybrid sorterManchor Ko
 
JVM Performance Tuning
JVM Performance TuningJVM Performance Tuning
JVM Performance TuningJeremy Leisy
 
Porting the Source Engine to Linux: Valve's Lessons Learned
Porting the Source Engine to Linux: Valve's Lessons LearnedPorting the Source Engine to Linux: Valve's Lessons Learned
Porting the Source Engine to Linux: Valve's Lessons Learnedbasisspace
 
Advanced Scenegraph Rendering Pipeline
Advanced Scenegraph Rendering PipelineAdvanced Scenegraph Rendering Pipeline
Advanced Scenegraph Rendering PipelineNarann29
 
JVM Memory Model - Yoav Abrahami, Wix
JVM Memory Model - Yoav Abrahami, WixJVM Memory Model - Yoav Abrahami, Wix
JVM Memory Model - Yoav Abrahami, WixCodemotion Tel Aviv
 
The new ehcache 2.0 and hibernate spi
The new ehcache 2.0 and hibernate spiThe new ehcache 2.0 and hibernate spi
The new ehcache 2.0 and hibernate spiCyril Lakech
 

La actualidad más candente (20)

Crossing the border with Qt: the i18n system
Crossing the border with Qt: the i18n systemCrossing the border with Qt: the i18n system
Crossing the border with Qt: the i18n system
 
Towards an Integration of the Actor Model in an FRP Language for Small-Scale ...
Towards an Integration of the Actor Model in an FRP Language for Small-Scale ...Towards an Integration of the Actor Model in an FRP Language for Small-Scale ...
Towards an Integration of the Actor Model in an FRP Language for Small-Scale ...
 
Qt Quick in depth
Qt Quick in depthQt Quick in depth
Qt Quick in depth
 
Adaptive Linear Solvers and Eigensolvers
Adaptive Linear Solvers and EigensolversAdaptive Linear Solvers and Eigensolvers
Adaptive Linear Solvers and Eigensolvers
 
A Language Support for Exhaustive Fault-Injection in Message-Passing System M...
A Language Support for Exhaustive Fault-Injection in Message-Passing System M...A Language Support for Exhaustive Fault-Injection in Message-Passing System M...
A Language Support for Exhaustive Fault-Injection in Message-Passing System M...
 
How long can you afford to Stop The World?
How long can you afford to Stop The World?How long can you afford to Stop The World?
How long can you afford to Stop The World?
 
Using Flame Graphs
Using Flame GraphsUsing Flame Graphs
Using Flame Graphs
 
Tungsten University: Setup and Operate Tungsten Replicators
Tungsten University: Setup and Operate Tungsten ReplicatorsTungsten University: Setup and Operate Tungsten Replicators
Tungsten University: Setup and Operate Tungsten Replicators
 
Java in flames
Java in flamesJava in flames
Java in flames
 
Ch3-2
Ch3-2Ch3-2
Ch3-2
 
Processing Big Data in Real-Time - Yanai Franchi, Tikal
Processing Big Data in Real-Time - Yanai Franchi, TikalProcessing Big Data in Real-Time - Yanai Franchi, Tikal
Processing Big Data in Real-Time - Yanai Franchi, Tikal
 
java memory management & gc
java memory management & gcjava memory management & gc
java memory management & gc
 
General Purpose Computing using Graphics Hardware
General Purpose Computing using Graphics HardwareGeneral Purpose Computing using Graphics Hardware
General Purpose Computing using Graphics Hardware
 
Tokyo Cabinet & Tokyo Tyrant
Tokyo Cabinet & Tokyo TyrantTokyo Cabinet & Tokyo Tyrant
Tokyo Cabinet & Tokyo Tyrant
 
Cache aware hybrid sorter
Cache aware hybrid sorterCache aware hybrid sorter
Cache aware hybrid sorter
 
JVM Performance Tuning
JVM Performance TuningJVM Performance Tuning
JVM Performance Tuning
 
Porting the Source Engine to Linux: Valve's Lessons Learned
Porting the Source Engine to Linux: Valve's Lessons LearnedPorting the Source Engine to Linux: Valve's Lessons Learned
Porting the Source Engine to Linux: Valve's Lessons Learned
 
Advanced Scenegraph Rendering Pipeline
Advanced Scenegraph Rendering PipelineAdvanced Scenegraph Rendering Pipeline
Advanced Scenegraph Rendering Pipeline
 
JVM Memory Model - Yoav Abrahami, Wix
JVM Memory Model - Yoav Abrahami, WixJVM Memory Model - Yoav Abrahami, Wix
JVM Memory Model - Yoav Abrahami, Wix
 
The new ehcache 2.0 and hibernate spi
The new ehcache 2.0 and hibernate spiThe new ehcache 2.0 and hibernate spi
The new ehcache 2.0 and hibernate spi
 

Destacado (6)

ดาวเทียม(ธัญธร พราว)407
ดาวเทียม(ธัญธร พราว)407ดาวเทียม(ธัญธร พราว)407
ดาวเทียม(ธัญธร พราว)407
 
Fine
FineFine
Fine
 
Why company profile
Why company profileWhy company profile
Why company profile
 
Enrolment kit stp_chi
Enrolment kit stp_chiEnrolment kit stp_chi
Enrolment kit stp_chi
 
Remote Memory Areas for distributed real-time Java
Remote Memory Areas for distributed real-time JavaRemote Memory Areas for distributed real-time Java
Remote Memory Areas for distributed real-time Java
 
The Outcome Economy
The Outcome EconomyThe Outcome Economy
The Outcome Economy
 

Similar a Basanta jtr2009

Real-time Programming in Java
Real-time Programming in JavaReal-time Programming in Java
Real-time Programming in JavaAleš Plšek
 
Instrumenting the real-time web: Node.js in production
Instrumenting the real-time web: Node.js in productionInstrumenting the real-time web: Node.js in production
Instrumenting the real-time web: Node.js in productionbcantrill
 
Andrii Rodionov: What can go wrong in a distributed system – experience from ...
Andrii Rodionov: What can go wrong in a distributed system – experience from ...Andrii Rodionov: What can go wrong in a distributed system – experience from ...
Andrii Rodionov: What can go wrong in a distributed system – experience from ...Lviv Startup Club
 
Module-related pages
Module-related pagesModule-related pages
Module-related pagesbutest
 
Module-related pages
Module-related pagesModule-related pages
Module-related pagesbutest
 
Springone2gx 2014 Reactive Streams and Reactor
Springone2gx 2014 Reactive Streams and ReactorSpringone2gx 2014 Reactive Streams and Reactor
Springone2gx 2014 Reactive Streams and ReactorStéphane Maldini
 
Towards "write once - run whenever possible" with Safety Critical Java af Ben...
Towards "write once - run whenever possible" with Safety Critical Java af Ben...Towards "write once - run whenever possible" with Safety Critical Java af Ben...
Towards "write once - run whenever possible" with Safety Critical Java af Ben...InfinIT - Innovationsnetværket for it
 
20160609 nike techtalks reactive applications tools of the trade
20160609 nike techtalks reactive applications   tools of the trade20160609 nike techtalks reactive applications   tools of the trade
20160609 nike techtalks reactive applications tools of the tradeshinolajla
 
Introduction to Real Time Java
Introduction to Real Time JavaIntroduction to Real Time Java
Introduction to Real Time JavaDeniz Oguz
 
Porting a Streaming Pipeline from Scala to Rust
Porting a Streaming Pipeline from Scala to RustPorting a Streaming Pipeline from Scala to Rust
Porting a Streaming Pipeline from Scala to RustEvan Chan
 
Millions quotes per second in pure java
Millions quotes per second in pure javaMillions quotes per second in pure java
Millions quotes per second in pure javaRoman Elizarov
 
Reactive programming with Pivotal's reactor
Reactive programming with Pivotal's reactorReactive programming with Pivotal's reactor
Reactive programming with Pivotal's reactorVMware Tanzu
 
The hitchhiker’s guide to Prometheus
The hitchhiker’s guide to PrometheusThe hitchhiker’s guide to Prometheus
The hitchhiker’s guide to PrometheusBol.com Techlab
 
The hitchhiker’s guide to Prometheus
The hitchhiker’s guide to PrometheusThe hitchhiker’s guide to Prometheus
The hitchhiker’s guide to PrometheusBol.com Techlab
 
The Case for a Signal Oriented Data Stream Management System
The Case for a Signal Oriented Data Stream Management SystemThe Case for a Signal Oriented Data Stream Management System
The Case for a Signal Oriented Data Stream Management SystemReza Rahimi
 
Introduction to near real time computing
Introduction to near real time computingIntroduction to near real time computing
Introduction to near real time computingTao Li
 
Real Time Operating Systems
Real Time Operating SystemsReal Time Operating Systems
Real Time Operating SystemsPawandeep Kaur
 

Similar a Basanta jtr2009 (20)

Real-time Programming in Java
Real-time Programming in JavaReal-time Programming in Java
Real-time Programming in Java
 
Instrumenting the real-time web: Node.js in production
Instrumenting the real-time web: Node.js in productionInstrumenting the real-time web: Node.js in production
Instrumenting the real-time web: Node.js in production
 
Andrii Rodionov: What can go wrong in a distributed system – experience from ...
Andrii Rodionov: What can go wrong in a distributed system – experience from ...Andrii Rodionov: What can go wrong in a distributed system – experience from ...
Andrii Rodionov: What can go wrong in a distributed system – experience from ...
 
Module-related pages
Module-related pagesModule-related pages
Module-related pages
 
Module-related pages
Module-related pagesModule-related pages
Module-related pages
 
Værktøjer udviklet på AAU til analyse af SCJ programmer
Værktøjer udviklet på AAU til analyse af SCJ programmerVærktøjer udviklet på AAU til analyse af SCJ programmer
Værktøjer udviklet på AAU til analyse af SCJ programmer
 
Springone2gx 2014 Reactive Streams and Reactor
Springone2gx 2014 Reactive Streams and ReactorSpringone2gx 2014 Reactive Streams and Reactor
Springone2gx 2014 Reactive Streams and Reactor
 
Towards "write once - run whenever possible" with Safety Critical Java af Ben...
Towards "write once - run whenever possible" with Safety Critical Java af Ben...Towards "write once - run whenever possible" with Safety Critical Java af Ben...
Towards "write once - run whenever possible" with Safety Critical Java af Ben...
 
20160609 nike techtalks reactive applications tools of the trade
20160609 nike techtalks reactive applications   tools of the trade20160609 nike techtalks reactive applications   tools of the trade
20160609 nike techtalks reactive applications tools of the trade
 
Introduction to Real Time Java
Introduction to Real Time JavaIntroduction to Real Time Java
Introduction to Real Time Java
 
Porting a Streaming Pipeline from Scala to Rust
Porting a Streaming Pipeline from Scala to RustPorting a Streaming Pipeline from Scala to Rust
Porting a Streaming Pipeline from Scala to Rust
 
Millions quotes per second in pure java
Millions quotes per second in pure javaMillions quotes per second in pure java
Millions quotes per second in pure java
 
Reactive programming with Pivotal's reactor
Reactive programming with Pivotal's reactorReactive programming with Pivotal's reactor
Reactive programming with Pivotal's reactor
 
The hitchhiker’s guide to Prometheus
The hitchhiker’s guide to PrometheusThe hitchhiker’s guide to Prometheus
The hitchhiker’s guide to Prometheus
 
The hitchhiker’s guide to Prometheus
The hitchhiker’s guide to PrometheusThe hitchhiker’s guide to Prometheus
The hitchhiker’s guide to Prometheus
 
Prometheus monitoring
Prometheus monitoringPrometheus monitoring
Prometheus monitoring
 
The Case for a Signal Oriented Data Stream Management System
The Case for a Signal Oriented Data Stream Management SystemThe Case for a Signal Oriented Data Stream Management System
The Case for a Signal Oriented Data Stream Management System
 
Introduction to near real time computing
Introduction to near real time computingIntroduction to near real time computing
Introduction to near real time computing
 
Real Time Operating Systems
Real Time Operating SystemsReal Time Operating Systems
Real Time Operating Systems
 
Apache Storm
Apache StormApache Storm
Apache Storm
 

Más de Universidad Carlos III de Madrid

Más de Universidad Carlos III de Madrid (6)

Tecnicas y extensiones para Java de tiempo real
Tecnicas y extensiones para Java de tiempo realTecnicas y extensiones para Java de tiempo real
Tecnicas y extensiones para Java de tiempo real
 
Towards a garbage collector for distributed real-time Java
Towards a garbage collector for distributed real-time JavaTowards a garbage collector for distributed real-time Java
Towards a garbage collector for distributed real-time Java
 
A simple data muling protocol
A simple data muling protocolA simple data muling protocol
A simple data muling protocol
 
Mejoras a la predictibilidad de la tecnología Java EE
Mejoras a la predictibilidad de la tecnología Java EEMejoras a la predictibilidad de la tecnología Java EE
Mejoras a la predictibilidad de la tecnología Java EE
 
Towards a real-time reconfiguration service for distributed Java
Towards a real-time reconfiguration service for distributed JavaTowards a real-time reconfiguration service for distributed Java
Towards a real-time reconfiguration service for distributed Java
 
Pbasanta@jtres06 extendedportal
Pbasanta@jtres06 extendedportalPbasanta@jtres06 extendedportal
Pbasanta@jtres06 extendedportal
 

Basanta jtr2009

  • 1. Simplifying the dualized threading model of RTSJ Pablo Basanta-Val Marisol García-Valls Iria Estévez-Ayres mailto: pbasanta@it.uc3m.es http://www.it.uc3m.es/drequiem/ Este trabajo ha sido publicado en IEEE-ISORC’08 (Orlando-USA)
  • 2. Roadmap 1. Introduction – Motivation 1. RealtimeThread++ extension – Interface changes – Example of use – Low level (VM) changes 1. Taking advantage of the extension – GC interference avoidance – Extended event handlers – Enhanced real-time distributed architectures 1. Empirical results – Absolute and relative penalties 1. Concluding remarks
  • 3. Introduction • Java is a successful high-level language – Bytecode portability, garbage collection, clear syntax, a number of libraries, …. – Productivity may be higher than with other languages (C/C++) • Java has extended its radius of action to real-time systems – Ideally: real-time portability, real-time automatic memory management, and real-time libraries – And also: lower development times, and improved maintainability
  • 4. Current Status of Real-Time Java • Specifications – Real-Time Specification for Java (RTSJ) – Distributed Realtime Specification for Java (DRTSJ) • Compliant virtual machines – Sun’s JRTS, Aicas’s Jamaica, TimeSys’s JTime, IBM Real-Time Websphere, Purdue’s OVM, … • Plug-ins for development environments – Netbeans (Sun) and Eclipse (IBM, Aicas)
  • 5. RealtimeThread++ • An extension not identified in JSR-282 (RTSJ 1.1) • RTSJ offers two types of real-time threads: • RealtimeThread (RtThs) and NoHeapRealtimeThreads (NhRtThs) • Reducing unnecessarily the language expressiveness – RtThs suffer the garbage collector whereas NhRtThs cannot use the heap – A general purpose application may require both types of support • Why don’t a simplification in this model? – One unique type of thread that decides its relationship with the garbage collector and the heap at runtime – Benefits: a more flexible specification and better synchronization models.
  • 6. Real-Time Java Centralized RTSJ Thread concurrent RealtimeThread entities NoheapRealtimeThread AsyncEventHandler BoundAsyncEventHandler Distributed DRTSJ DistributedRealtimeThread concurrent NoHeapDistributedRealtimeThread entities DistributedEventHandler Synchronization RTSJ Synchronized RealtimeQueues Signals
  • 7. Real-Time Java with RealtimeThread++ Centralized RTSJ Thread concurrent RealtimeThread entities NoheapRealtimeThread AsyncEventHandler BoundAsyncEventHandler Distributed DRTSJ DistributedRealtimeThread concurrent NoHeapDistributedRealtimeThread entities DistributedEventHandler Synchronization RTSJ synchronized RealtimeQueues Signals
  • 8. RealtimeThread++: changes • One thread is initially running in either heap or noheap environments – By default, in its instantiation, NhRtThs and NhDRtThs run in noheap memory whereas RtThs run in heap • One thread may change at runtime its relationship with the garbage collector – We may change it, temporally, nesting a heap (with enterHeap) or a noheap (with enterNoHeap) runnable object
  • 10. RealtimeThread++ in action One task printing out two messages: the first in noheap and the second in heap
  • 11. RealtimeThread++ in action Evolution of the system, the active environment is the one on the top of the environment stack
  • 12. Required underlying support • Activation and deactivation of reading barrier typically associated with a NhRtThs – Low level interaction with the virtual machine required • The check of local variables (for NH to H changes) – Easy to obtain in a portable way. • Modification of the relationship maintained with the garbage collector – Sometimes, NhRtThs have privileges when garbage collector scans their frame stack
  • 13. Runtime checking barriers (examples) Runtime barrier that changes the behavior from heap to no-heap . Runtime barrier that changes the behavior from o no-heap to heap
  • 14. Integration with the garbage collector
  • 15. Taking advantage of the extension – Sharing data • Among heap and no-heap entities using enterNoHeap – Enrichment of the current RTSJ • Giving more flexibility to event-handler programming – Enrichment of the ongoing DRTSJ • Eases some architecture implementations
  • 17. Garbage collector priority inversion (current RTSJ approach)
  • 18. Garbage collector priority inversion (with RealtimeThread++)
  • 19. Enhanced RTSJ event model Currently event handler decide at creation time its relationship with the garbage collector
  • 20. Session-level isolation for DRTSJ (with real-time thread++ extension)
  • 21. Absolute and relative performance

Notas del editor

  1. Goal: introduce the article, saying you are the presenter and all question to pablo
  2. How we “organized” the paper as follows: firstly, I will put into context, highlighting advantages and motivation. And then, technical aspects, as could be interfaces, and example of use and the low level changes required to support the model. And I will finish introducing
  3. Java is excellent as general purpose language. (See reports show it) And this type of advantages are trying to extended to the area of real-time systems. Image for a moment, this
  4. Ok, if we have to define where we area now, I can see that we have carried out an important work defining basic necesities. We have developed specifications for real-time as for example the RTSJ (artiesllei) or its distributed counterpart (dartiesllei). But that’s not all, we also have real-time virtual machines and products that can be used to develop our applications. Just to cite some of them, I have put them in this slide. And we have also adapted our developed plugins to work with this specifications for the most popular devolpment environments. That is netbeans and also eclipse (I’klips) So … perhaps, it is time for the improvements How can we improve the current RTSJ? Which are their lacks? How do we improve it? This is the goal of the JSR-282: “it addresses some of the simpler enhancements that have been requested in the RTSJ ” grouping them into three areas: scheduling improvements, memory improvements, and other improvements So perhaps we, at the real-time programming community, are living a period of time for the improvements. Ok, we have already And this is the specific goal of the two hundred and eitghty two specification lleiesar group. It has gather (gada) the requirements of the community. Basically it organize the changes in three groups: scheduling, memory and other changes.
  5. In this context, we may understand the real-time thread++ extesion as a very simple but interesting extension that was not previously identified by the lleiesar group. The idea is that RTSJ currently offfers two types of threads, Noheap an real time threads which may not be which are hindering (entorpercir, hinda) the development of applications more simplily.
  6. Ok, This is just a fast look of realtime Java we can see how it have nine concurrent entities: five of RTSJ plus the three of DRTSJ. And apart from that we have three sincronization mechanisms: synchrononized, realtime queues and also the signals.
  7. Notes: enter*Heap: save its relationship with the garbage collector, changes to heap or noheap, execute the runnable object and restores the previous status isRunningInHeap helps us to discover in which one of the two environments is running the invoking thread
  8. Key idea: What we need from a virtual machine. Mainly, there are there issues we have to consider when we want to implement this idea: The first is that it requires to gain some control on the management on the run-time barrier, executed by as well as a mechanism (2) to check local variables. Finally the third (3) is that sometimes (it depends on the virtual machine implementation), it may require changes in the internals of the garbage collector. Next, I will
  9. Here you can see an example of some runtime barriers you need in your code. First changes from heap to no heap and the second from no-heap to heap.
  10. And here you can see an example of how you move threads from one queue into the another. This shows you how
  11. I’ve already introduced you the interface together with some details on the implementation of RTSJ
  12. IDEA: Garbage collections may interrupt when NHRTS are accessing to a shared object. A common problem, for example when implementing an RT-RMI
  13. IDEA 1: Using current RTSJ aproach to solve the problem. IT works, but you need one extra thread and a queue.
  14. IDEA 2:Using the extension. I don’t need a queue or an auxiliary thread, you only need a Runnable object.
  15. And here you see how an event may be impor
  16. This is second possibility, in this case what we want is to avoid the garbage collector interference, using the two method to achieve the desired level of isolation. It is easier to implement than the previous one.
  17. Goal: introduce the article, saying you are the presenter and all question to pablo
  18. So … perhaps, it is time for the improvements How can we improve the current RTSJ? Which are their lacks? How do we improve it? This is the goal of the JSR-282: “it addresses some of the simpler enhancements that have been requested in the RTSJ ” grouping them into three areas: scheduling improvements, memory improvements, and other improvements So perhaps we, at the real-time programming community, are living a period of time for the improvements. Ok, we have already And this is the specific goal of the two hundred and eitghty two specification lleiesar group. It has gather (gada) the requirements of the community. Basically it organize the changes in three groups: scheduling, memory and other changes.
  19. This is the first solution: using queues to isolate middleware communications Problem: hard to implement.