22 research outputs found

    Safety-Critical Java for Embedded Systems

    Get PDF

    Improving the memory management performance of RTSJ

    Get PDF
    International audienceFrom a real-time perspective, the garbage collector (GC) introduces unpredictable pauses that are not tolerated by real-time tasks. Real-time collectors eliminate this problem but introduce a high overhead. Another approach is to use memory regions (MRs) within which allocation and deallocation is customized. This facility is supported by the memory model of the Real-Time Specification for Java (RTSJ). RTSJ imposes strict access and assignment rules to avoid both the dangling inter-region references and the delays of critical tasks of the GC. A dynamic check solution can incur high overhead, which can be reduced by taking advantage of hardware features. This paper provides an in-depth analytical investigation of the overhead introduced by dynamic assignments checks in RTSJ, describing and analysing several solutions to reduce the introduced overhead

    High-Performance Transactional Event Processing

    Get PDF
    Abstract. This paper presents a transactional framework for low-latency, high-performance, concurrent event processing in Java. At the heart of our framework lies Reflexes, a restricted programming model for highly responsive systems. A Reflex task is an event processor that can run at a higher priority and preempt any other Java thread, including the garbage collector. It runs in an obstruction-free manner with time-oblivious code. We extend Reflexes with a publish/subscribe communication system, itself based on an optimistic transactional event processing scheme, that provides efficient coordination between time-critical, low-latency tasks.We report on the comparison with a commercial JVM, and show that it is possible for tasks to achieve 50 µs response times with way less than 1% of the executions failing to meet their deadlines.

    Techniques and Patterns for Safe and Efficient Real-Time Middleware

    Get PDF
    Over 90 percent of all microprocessors are now used for real-time and embedded applications. The behavior of these applications is often constrained by the physical world. It is therefore important to devise higher-level languages and middleware that meet conventional functional requirements, as well as dependably and productively enforce real-time constraints. Real-Time Java is emerging as a safe, real-time environment. In this thesis we use it as our experimentation platform; however, our findings are easily adapted to other similar platforms. This thesis provides the following contributions to the study of safe and efficient real-time middleware. First, it identifies potential bottlenecks and problem with respect to guaranteeing real-time performance in middleware. Second, it presents a series of techniques and patterns that allow the design and implementation of safe, predictable, and highly efficient real-time middleware. Third, it provides a set of architectural and design patterns that application developers can use when designing real-time systems. Finally, it provides a methodology for evaluating the merits and benefits of real-time middleware. Empirical results are presented using that methodology for the techniques presented in this thesis. The methodology helps compare the performance and predictability of general, real-time middleware platforms

    Hard Real-Time Java:Profiles and Schedulability Analysis

    Get PDF

    A Methodology for Transforming Java Applications Towards Real-Time Performance

    Get PDF
    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

    Exploration of Dynamic Memory

    Get PDF
    Since the advent of the Java programming language and the development of real-time garbage collection, Java has become an option for implementing real-time applications. The memory management choices provided by real-time garbage collection allow for real-time eJava developers to spend more of their time implementing real-time solutions. Unfortunately, the real-time community is not convinced that real-time garbage collection works in managing memory for Java applications deployed in a real-time context. Consequently, the Real-Time for Java Expert Group formulated the Real-Time Specification for Java (RTSJ) standards to make Java a real-time programming language. In lieu of garbage collection, the RTSJ proposed a new memory model called scopes, and a new type of thread called NoHeapRealTimeThread (NHRT), which takes advantage of scopes. While scopes and NHRTs promise predictable allocation and deallocation behaviors, no asymptotic studies have been conducted to investigate the costs associated with these technologies. To understand the costs associated with using these technologies to manage memory, computations and analyses of time and space overheads associated with scopes and NHRTs are presented. These results provide a framework for comparing the RTSJ’s memory management model with real-time garbage collection. Another facet of this research concerns the optimization of novel approaches to garbage collection on multiprocessor systems. Such approaches yield features that are suitable for real-time systems. Although multiprocessor, concurrent garbage collection is not the same as real-time garbage collection, advancements in multiprocessor concurrent garbage collection have demonstrated the feasibility of building low latency multiprocessor real-time garbage collectors. In the nineteen-sixties, only three garbage collection schemes were available, namely reference counting garbage collection, mark-sweep garbage collection, and copying garbage collection. These classical approaches gave new insight into the discipline of memory management and inspired researchers to develop new, more elaborate memory-management techniques. Those insights resulted in a plethora of automatic memory management algorithms and techniques, and a lack of uniformity in the language used to reason about garbage collection. To bring a sense of uniformity to the language used to reason about garbage collection technologies, a taxonomy for comparing garbage collection technologies is presented

    A Foundation for Development of Programming Languages for Real-Time Systems

    Get PDF
    Applications of real-time systems have grown considerably in both diversity and popularity, and the demand for real-time software has never been higher. In contrast, the choice of programming languages used to develop these systems has mostly remained limited to decades-old languages, namely Ada and C/C++, and more recently real-time Java. We postulate that the main reason for this mono-culture is the difficulty of developing new programming languages for real-time systems, due to their strict correctness requirements. Wang et al. argue that implementing even general-purpose languages is not easy, and is the source of many problems in today's languages. They propose the Micro Virtual Machine as a minimal abstraction layer to relieve the challenges of implementing a managed language, and design a micro VM specification named Mu. Compared to conventional language VMs, a micro VM is minimal and low-level. This makes micro VM an appealing idea towards creating a platform for development of programming languages for real-time systems, as it allows supporting a wide range of languages, aligned with the huge diversity of real-time systems. It also makes correct implementation and formal verification of the platform easier, which is vital for many real-time systems. Prior to this thesis, the only concrete micro VM specification was [Mu, 2018]. However,Mu is not designed for real-time systems and lacks some of the essential features. My thesis is that a real-time-enabled micro virtual machine is capable of providing an efficient and usable foundation for development of program-ming languages, suitable for building real-time software. The first high-level contribution of this thesis is the design of RTMu, a micro VM instance aiming at programming languages for real-time systems. We build on the Mu specification and propose a set of modifications to its abstractions over concurrency and memory management to make it suitable for real-time systems. The second contribution is the affirmation of the implementability of the RTMu's abstractions. For this purpose, we build a high-performance implementation of the RTMu specification, based-on a high-performance implementation of Mu. The third contribution is the design of a real-time extension to RPython, to make it a fully-featured language for real-time systems, named RT-RPython. We implement RT-RPython on top of RTMu and evaluate its performance through the CollisionDetection benchmark suite. This thesis is a proof of concept for establishing the use of micro VMs to build new high-quality programming languages for real-time systems. It also provides empirical demonstration of performance and predictability for micro VMs in the real-time domain. We believe that RTMu can help in tackling the current lack of diversity in programming languages for real-time systems
    corecore