7 research outputs found

    High-level real-time programming in Java

    Full text link
    Real-time systems have reached a level of complexity beyond the scaling capability of the low-level or restricted languages traditionally used for real-time programming. While Metronome garbage collection has made it practical to use Java to implement real-time systems, many challenges remain for the construction of complex real-time systems, some specic to the use of Java and others simply due to the change in scale of such systems. The goal of our research is the creation of a comprehensive Java-based programming environment and methodology for the creation of complex real-time systems. Our goals include construction of a provably correct real-time garbage collec-tor capable of providing worst case latencies of 100 s, capa-ble of scaling from sensor nodes up to large multiprocessors; specialized programming constructs that retain the safety and simplicity of Java, and yet provide sub-microsecond la-tencies; the extension of Java's \write once, run anywhere" principle from functional correctness to timing behavior; on-line analysis and visualization that aids in the understanding of complex behaviors; and a principled probabilistic analy-sis methodology for bounding the behavior of the resulting systems. While much remains to be done, this paper describes the progress we have made towards these goals

    A concurrent, generational garbage collector for a multithreaded implementation of ML

    Get PDF
    International audienceThis paper presents the design and implementation of a "quasi real-time" garbage collector for Concurrent Caml Light, an implementation of ML with threads. This two-generation system combines a fast, asynchronous copying collector on the young generation with a non-disruptive concurrent marking collector on the old generation. This design crucially relies on the ML compile-time distinction between mutable and immutable objects

    Eliminating read barriers through procrastination and cleanliness

    Get PDF
    Managed languages use read barriers to interpret forwarding pointers introduced to keep track of copied objects. For example, in a split-heap managed runtime for a multicore environment, an object initially allocated on a local heap may be copied to a shared heap if it becomes the source of a store operation whose target location resides on the shared heap. As part of the copy operation, a forwarding pointer may be established to allow existing references to the local object to reference the copied version. In this paper, we consider the design of a managed runtime that avoids the need for read barriers. Our design is premised on the availability of a sufficient degree of concurrency to stall operations that would otherwise necessitate the copy. Stalled actions are deferred until the next local collection, avoiding exposing forwarding pointers to the mutator. In certain important cases, procrastination is unnecessary- lightweight runtime techniques can sometimes be used to allow objects to be eagerly copied when their set of incoming references is known, or when it can be determined that having multiple copies would not violate program semantics. Experimental results over a range of parallel benchmarks on a number of different architectural platforms including an 864 core Azul Vega 3, and a 48 core Intel SCC, indicate that our approach leads to notable performance gains (20- 32 % on average) without incurring any additional complexity

    Gerçek zamanlı Java’ da büyük nesnelere bellek ayırmak için anahtarlamalı yaklaşım

    Get PDF
    06.03.2018 tarihli ve 30352 sayılı Resmi Gazetede yayımlanan “Yükseköğretim Kanunu İle Bazı Kanun Ve Kanun Hükmünde Kararnamelerde Değişiklik Yapılması Hakkında Kanun” ile 18.06.2018 tarihli “Lisansüstü Tezlerin Elektronik Ortamda Toplanması, Düzenlenmesi ve Erişime Açılmasına İlişkin Yönerge” gereğince tam metin erişime açılmıştır.Son yirmi yılda nesne yönelimli programlama dilleri ve yönetilen çalışma zamanları, yazılım mühendisliği yönünden sağladıkları avantajlardan ötürü oldukça popüler hale geldiler. Ancak birçok uygulama alanındaki bu popülerliklerinin aksine, aynı programlama dilleri ve çalışma zamanları, gerçek zamanlı programlama için uygun görülmediler. Birçok faktörün yanı sıra, bunların gerçek zamanlı sistemlerin geliştirilmesi için kullanılmalarının önündeki bariyerlerden bir tanesi, büyük nesnelere bellek ayırma esnasında karşılaşılma olasılığı olan uzun bekleme zamanlarıdır. Bu tez gerçek zamanlı Java için zamanımıza kadar geliştirilmiş olan farklı büyük nesnelere bellek ayırma çözümlerini inceler ve bu çözümlere alternatif olarak anahtarlamalı yeni bir yaklaşım sunar. Sunulan tekniğin performansının hali hazırda uygulanmış diğer tekniklerle karşılaştırılması amacıyla geliştirilmiş olan sentetik bir kıyaslama uygulaması da bu tezde açıklanmıştır.Over the last twenty years object oriented programming languages and managed runtimes like Java have been very popular because of their software engineering benefits. Despite their popularity in many application areas, they have not been considered suitable for real-time programming. Besides many other factors, one of the barriers that prevent their acceptance in the development of real-time systems is the long pause times that may arise during large object allocation. This thesis examines different kinds of solutions which have been developed so far and introduces a switchable approach to large object allocation in real-time Java. A synthetic benchmark application which is developed to evaluate the effectiveness of the presented technique against other currently implemented techniques is also described

    Gerçek zamanlı Java’ da büyük nesnelere bellek ayırmak için anahtarlamalı yaklaşım

    Get PDF
    06.03.2018 tarihli ve 30352 sayılı Resmi Gazetede yayımlanan “Yükseköğretim Kanunu İle Bazı Kanun Ve Kanun Hükmünde Kararnamelerde Değişiklik Yapılması Hakkında Kanun” ile 18.06.2018 tarihli “Lisansüstü Tezlerin Elektronik Ortamda Toplanması, Düzenlenmesi ve Erişime Açılmasına İlişkin Yönerge” gereğince tam metin erişime açılmıştır.Son yirmi yılda nesne yönelimli programlama dilleri ve yönetilen çalışma zamanları, yazılım mühendisliği yönünden sağladıkları avantajlardan ötürü oldukça popüler hale geldiler. Ancak birçok uygulama alanındaki bu popülerliklerinin aksine, aynı programlama dilleri ve çalışma zamanları, gerçek zamanlı programlama için uygun görülmediler. Birçok faktörün yanı sıra, bunların gerçek zamanlı sistemlerin geliştirilmesi için kullanılmalarının önündeki bariyerlerden bir tanesi, büyük nesnelere bellek ayırma esnasında karşılaşılma olasılığı olan uzun bekleme zamanlarıdır. Bu tez gerçek zamanlı Java için zamanımıza kadar geliştirilmiş olan farklı büyük nesnelere bellek ayırma çözümlerini inceler ve bu çözümlere alternatif olarak anahtarlamalı yeni bir yaklaşım sunar. Sunulan tekniğin performansının hali hazırda uygulanmış diğer tekniklerle karşılaştırılması amacıyla geliştirilmiş olan sentetik bir kıyaslama uygulaması da bu tezde açıklanmıştır.Over the last twenty years object oriented programming languages and managed runtimes like Java have been very popular because of their software engineering benefits. Despite their popularity in many application areas, they have not been considered suitable for real-time programming. Besides many other factors, one of the barriers that prevent their acceptance in the development of real-time systems is the long pause times that may arise during large object allocation. This thesis examines different kinds of solutions which have been developed so far and introduces a switchable approach to large object allocation in real-time Java. A synthetic benchmark application which is developed to evaluate the effectiveness of the presented technique against other currently implemented techniques is also described

    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

    Functional programming and embedded systems.

    Get PDF
    Embedded computer systems seem to be the antithesis of functional language systems. Embedded systems are small, stand-alone, and are often forced to accept inelegant design compromises due to hardware cost. They run continuously and are reactive, that is, their primary goal is to monitor sensors and control effectors, using observed external events to trigger state-changing control actions. Yet this thesis describes how functional abstraction can tame the inelegance of embedded systems. Architectural compromises can be made in device drivers, programmed within the functional language, but a function-level interface is presented to the application programmer. Four modifications are introduced to a test-bed purely-functional language in order to facilitate embedded-systems programming: I/O register access; communicating processes; interrupts; and a real-time incremental garbage collector. Referential transparency is preserved. The conventional model of communicating processes is augmente..
    corecore