According to Sun, the reason it's so restrictive regarding use of the Java trademark is to assure... more According to Sun, the reason it's so restrictive regarding use of the Java trademark is to assure developers that their code will run reliably in every environment claiming the Java name.
Achieving high performance and hard real-time determinism with real-time Java
Early experience demonstrates that "real-time Java" as characterized by the RTSJ: (1) I... more Early experience demonstrates that "real-time Java" as characterized by the RTSJ: (1) Is able to match latency and jitter of C and C++; (2) Requires much more CPU and memory resources than C and C++; (3) Is much more difficult to develop and maintain code than main-stream Java. This talk describes real-time Java disciplines that significantly improve the efficiency, maintainability, and scalability of real-time Java code. (13 pages)
Modern high-level languages frequently need to collect garbage not only from regions of linked st... more Modern high-level languages frequently need to collect garbage not only from regions of linked structures similar to LISP's dotted pairs, but also from string regions where data is organized as an array of characters. Some characteristics of string regions that make garbage collection particularly difficult are as follows: multiple pointers to the same characters within the array are allowed and encouraged; all possible character values are legitimate as data, so it is not possible to 'mark' a string by overwriting with a reserved character; and a character is generally much smaller than a pointer, so it is not possible to overwrite a single character value with a forwarding pointer to a new location for a particular string. This paper describes the addition of certain information to a string descriptor and enhancements to existing copying garbage collection algorithms that permit linked data structures and strings to be allocated and garbage collected from a shared region of memory in real time. This algorithm is real-time in the sense that the time required for allocation of each basic unit of memory is bounded by a constant. An analysis of performance is reported, and comparisons are made with traditional garbage collection.
... kelvin @ cs.iastate.edu ... Over the years, the mainstream and real-time commu-nities have di... more ... kelvin @ cs.iastate.edu ... Over the years, the mainstream and real-time commu-nities have distanced themselves from one another. Many real-time researchers seem to be of the opinion that mainstream operating system researchers have little to offer the real-time community. ...
Proceedings / Second IEEE International Conference on Engineering of Complex Computer Systems : held jointly with 6th CSESAW [Complex Systems Engineering Synthesis and Assessment Technology Workshop], 4th IEEE RTAW [Workshop on Real-Time Applications], and SES '96 [IEEE Forum on Software Engineer...
Proceedings of the 11th International Workshop on Java Technologies for Real-time and Embedded Systems
Welcome to the 11th International Workshop on Java Technologies for Real-time and Embedded System... more Welcome to the 11th International Workshop on Java Technologies for Real-time and Embedded Systems - JTRES 2013. aicas is proud to be able to host the leading forum on using Java technology in real-time and embedded systems. Real-Time Java has gone a long way from being a small niche within the Java community to being an accepted technology in the very demanding real-time and safety critical domain. Today, there are millions of real-time Java applications in the field. New trends such as Internet-to-the-edge bring enormous additional potential for Java in areas that require guarantees on timing, controlled resource usage, and safety guarantees.
Embedded systems must be able to operate for long periods of time with limited memory. Dynamic me... more Embedded systems must be able to operate for long periods of time with limited memory. Dynamic memory allocation is often discouraged in such systems as it requires careful analysis to rule out memory-related software defects. This paper presents an annotation system that can be used to rule out memory access errors in programs written in a subset of the Java programming language which targets safety critical applications. The annotations are optional. When present, they are used by the compiler to report, ahead of time, potential memory access errors. The proposed system is part of the upcoming Safety Critical Java Specification. It has been evaluated on a number of small benchmark programs (26 KLOC of Java code) and implemented in the oSCJ real-time Java virtual machine leading to performance improvements ranging from 1.7% to 26%.
The real-time behavior of dynamic memory management in C++
rtas, 1995
Dynamic memory management is an important aspect of modern software engineering techniques based ... more Dynamic memory management is an important aspect of modern software engineering techniques based on ob-ject-oriented methodologies. Additionally, dynamic management of memory serves important roles in im-proving the flexibility and functionality of large ...
ACM Transactions on Programming Languages and Systems, 1988
SR is a language for programming distributed systems ranging from operating systems to applicatio... more SR is a language for programming distributed systems ranging from operating systems to application programs. On the basis of our experience with the initial version, the language has evolved considerably. In this paper we describe the current version of SR and give an overview of its implementation. The main language constructs are still resources and operations. Resources encapsulate processes and variables that they share; operations provide the primary mechanism for process interaction. One way in which SR has changed is that both resources and processes are now created dynamically. Another change is that inheritance is supported. A third change is that the mechanisms for operation invocation-call and send-and operation implementation-proc and in-have been extended and integrated. Consequently, all of local and remote procedure call, rendezvous, dynamic process creation, asynchronous message passing, multicast, and semaphores are supported. We have found this flexibility to be very useful for distributed programming. Moreover, by basing SR on a small number of well-integrated concepts, the language has proved easy to learn and use, and it has a reasonably efficient implementation.
Writing PERC Programs for Embedded Real-Time Applications
Java™ is a new programming language publicly released by Sun Microsystems in May of 1995 with hop... more Java™ is a new programming language publicly released by Sun Microsystems in May of 1995 with hopes of revolutionizing the software industry. The popular press has responded with numerous articles touting the language's advantages over available alternatives. Since many of the applications which Java is intended to serve have embedded real-time characteristics, we have recently undertaken to develop a set of standard extensions to provide Java programmers with the ability to describe real-time requirements in their Java applications. The standard extensions are embodied in PERC™, a recently announced commercial product that brings Java capabilities to the embedded real-time systems arena. This report summarizes the issues that have influenced the design of PERC. Java is an object-oriented programming language with syntax derived from C and C++. However, Java's designers chose not to pursue full compatibility with C and C++ because they preferred to eliminate from these lan...
Instead, Java requires all constant identifiers and functions (methods) to be encapsulated within... more Instead, Java requires all constant identifiers and functions (methods) to be encapsulated within class declarations. Java provides standardized support for multiple threads (lightweight tasks) and automatic garbage collection of dynamically allocated memory. Further, Java fully specifies the behavior of every operator on every type, unlike C and C++ which leave many behaviors implementation-dependent. These changes were designed to improve software scalability, reduce software development and maintenance costs, and to achieve full portability of Java software. Anecdotal evidence suggests that many former C and C++ programmers have enthusiastically welcomed these language improvements. One distinguishing characteristic of Java is its execution model. Java programs are first translated into a fully portable standard bytecode representation. The bytecode is then available for execution in any environment that provides support for a Java virtual machine. A Java virtual machine is simpl...
Proceedings of the 7th International Workshop on Java Technologies for Real-Time and Embedded Systems - JTRES '09, 2009
Abstract In this paper, we present the DIANA experiment on the use of Java in avionics safety cri... more Abstract In this paper, we present the DIANA experiment on the use of Java in avionics safety critical applications. First, we discuss some concerns about the porting of the Java platform on the ARINC 653 operating system. Then the paper focuses on some important ...
Real-time Java profiles make use of scoped memory regions Explicit scoping requires care from pro... more Real-time Java profiles make use of scoped memory regions Explicit scoping requires care from programmers Deal with temporary objects Pass scope-allocated objects as arguments to methods Returning scope-allocated objects from methods Look into the expressiveness of the SCJ memory model Explore patterns on how to use it Focus on how to pass arguments and return objects between private memories
this document describes Real-Time Java from the perspective of the application programmer. The pr... more this document describes Real-Time Java from the perspective of the application programmer. The programmer's view of Real-Time Java is characterized as the application programmer interface (API). Accompanying presentation of the API are brief discussions of how particular Real-Time Java features are implemented on both traditional and special Real-Time Java virtual machines. These three different views of each language feature are identified throughout this document as detailed below:
Issues in the Design and Implementation of Real-Time Java
ion helps programmers, including real-time programmers, deal with complexity. But real-time devel... more ion helps programmers, including real-time programmers, deal with complexity. But real-time developers must use abstraction with discretion. They must be able to break through layers of abstraction whenever this is necessary in order to understand or exercise control over real-time behavior. A Real-Time Java program consists of an arbitrary number of real-time activities accompanied by an arbitrary number of runnable threads. The runnable threads have no time-constrained behavior. The discussion of real-time activities provided below makes frequent reference to the real-time executive. See "The Real-Time Executive" on page 14. 1. NewMonics Inc. is currently in the process of refining the "Real-Time Java" API and is promoting a standard API under the product name PERC TM , an acronym that stands for Portable Executive for Reliable Control. In a number of cases, the draft API differs slightly from the design suggested in this document. What is Real-Time Java? 10 Is...
... Software based cache partitioning is another static tech-nique for reducing the contention fo... more ... Software based cache partitioning is another static tech-nique for reducing the contention for cache lines be-tween different tasks in a multitasking system[11]. ... Static cache partitioning consists of assigning particular sets of cache lines to each task. ...
According to Sun, the reason it's so restrictive regarding use of the Java trademark is to assure... more According to Sun, the reason it's so restrictive regarding use of the Java trademark is to assure developers that their code will run reliably in every environment claiming the Java name.
Achieving high performance and hard real-time determinism with real-time Java
Early experience demonstrates that "real-time Java" as characterized by the RTSJ: (1) I... more Early experience demonstrates that "real-time Java" as characterized by the RTSJ: (1) Is able to match latency and jitter of C and C++; (2) Requires much more CPU and memory resources than C and C++; (3) Is much more difficult to develop and maintain code than main-stream Java. This talk describes real-time Java disciplines that significantly improve the efficiency, maintainability, and scalability of real-time Java code. (13 pages)
Modern high-level languages frequently need to collect garbage not only from regions of linked st... more Modern high-level languages frequently need to collect garbage not only from regions of linked structures similar to LISP's dotted pairs, but also from string regions where data is organized as an array of characters. Some characteristics of string regions that make garbage collection particularly difficult are as follows: multiple pointers to the same characters within the array are allowed and encouraged; all possible character values are legitimate as data, so it is not possible to 'mark' a string by overwriting with a reserved character; and a character is generally much smaller than a pointer, so it is not possible to overwrite a single character value with a forwarding pointer to a new location for a particular string. This paper describes the addition of certain information to a string descriptor and enhancements to existing copying garbage collection algorithms that permit linked data structures and strings to be allocated and garbage collected from a shared region of memory in real time. This algorithm is real-time in the sense that the time required for allocation of each basic unit of memory is bounded by a constant. An analysis of performance is reported, and comparisons are made with traditional garbage collection.
... kelvin @ cs.iastate.edu ... Over the years, the mainstream and real-time commu-nities have di... more ... kelvin @ cs.iastate.edu ... Over the years, the mainstream and real-time commu-nities have distanced themselves from one another. Many real-time researchers seem to be of the opinion that mainstream operating system researchers have little to offer the real-time community. ...
Proceedings / Second IEEE International Conference on Engineering of Complex Computer Systems : held jointly with 6th CSESAW [Complex Systems Engineering Synthesis and Assessment Technology Workshop], 4th IEEE RTAW [Workshop on Real-Time Applications], and SES '96 [IEEE Forum on Software Engineer...
Proceedings of the 11th International Workshop on Java Technologies for Real-time and Embedded Systems
Welcome to the 11th International Workshop on Java Technologies for Real-time and Embedded System... more Welcome to the 11th International Workshop on Java Technologies for Real-time and Embedded Systems - JTRES 2013. aicas is proud to be able to host the leading forum on using Java technology in real-time and embedded systems. Real-Time Java has gone a long way from being a small niche within the Java community to being an accepted technology in the very demanding real-time and safety critical domain. Today, there are millions of real-time Java applications in the field. New trends such as Internet-to-the-edge bring enormous additional potential for Java in areas that require guarantees on timing, controlled resource usage, and safety guarantees.
Embedded systems must be able to operate for long periods of time with limited memory. Dynamic me... more Embedded systems must be able to operate for long periods of time with limited memory. Dynamic memory allocation is often discouraged in such systems as it requires careful analysis to rule out memory-related software defects. This paper presents an annotation system that can be used to rule out memory access errors in programs written in a subset of the Java programming language which targets safety critical applications. The annotations are optional. When present, they are used by the compiler to report, ahead of time, potential memory access errors. The proposed system is part of the upcoming Safety Critical Java Specification. It has been evaluated on a number of small benchmark programs (26 KLOC of Java code) and implemented in the oSCJ real-time Java virtual machine leading to performance improvements ranging from 1.7% to 26%.
The real-time behavior of dynamic memory management in C++
rtas, 1995
Dynamic memory management is an important aspect of modern software engineering techniques based ... more Dynamic memory management is an important aspect of modern software engineering techniques based on ob-ject-oriented methodologies. Additionally, dynamic management of memory serves important roles in im-proving the flexibility and functionality of large ...
ACM Transactions on Programming Languages and Systems, 1988
SR is a language for programming distributed systems ranging from operating systems to applicatio... more SR is a language for programming distributed systems ranging from operating systems to application programs. On the basis of our experience with the initial version, the language has evolved considerably. In this paper we describe the current version of SR and give an overview of its implementation. The main language constructs are still resources and operations. Resources encapsulate processes and variables that they share; operations provide the primary mechanism for process interaction. One way in which SR has changed is that both resources and processes are now created dynamically. Another change is that inheritance is supported. A third change is that the mechanisms for operation invocation-call and send-and operation implementation-proc and in-have been extended and integrated. Consequently, all of local and remote procedure call, rendezvous, dynamic process creation, asynchronous message passing, multicast, and semaphores are supported. We have found this flexibility to be very useful for distributed programming. Moreover, by basing SR on a small number of well-integrated concepts, the language has proved easy to learn and use, and it has a reasonably efficient implementation.
Writing PERC Programs for Embedded Real-Time Applications
Java™ is a new programming language publicly released by Sun Microsystems in May of 1995 with hop... more Java™ is a new programming language publicly released by Sun Microsystems in May of 1995 with hopes of revolutionizing the software industry. The popular press has responded with numerous articles touting the language's advantages over available alternatives. Since many of the applications which Java is intended to serve have embedded real-time characteristics, we have recently undertaken to develop a set of standard extensions to provide Java programmers with the ability to describe real-time requirements in their Java applications. The standard extensions are embodied in PERC™, a recently announced commercial product that brings Java capabilities to the embedded real-time systems arena. This report summarizes the issues that have influenced the design of PERC. Java is an object-oriented programming language with syntax derived from C and C++. However, Java's designers chose not to pursue full compatibility with C and C++ because they preferred to eliminate from these lan...
Instead, Java requires all constant identifiers and functions (methods) to be encapsulated within... more Instead, Java requires all constant identifiers and functions (methods) to be encapsulated within class declarations. Java provides standardized support for multiple threads (lightweight tasks) and automatic garbage collection of dynamically allocated memory. Further, Java fully specifies the behavior of every operator on every type, unlike C and C++ which leave many behaviors implementation-dependent. These changes were designed to improve software scalability, reduce software development and maintenance costs, and to achieve full portability of Java software. Anecdotal evidence suggests that many former C and C++ programmers have enthusiastically welcomed these language improvements. One distinguishing characteristic of Java is its execution model. Java programs are first translated into a fully portable standard bytecode representation. The bytecode is then available for execution in any environment that provides support for a Java virtual machine. A Java virtual machine is simpl...
Proceedings of the 7th International Workshop on Java Technologies for Real-Time and Embedded Systems - JTRES '09, 2009
Abstract In this paper, we present the DIANA experiment on the use of Java in avionics safety cri... more Abstract In this paper, we present the DIANA experiment on the use of Java in avionics safety critical applications. First, we discuss some concerns about the porting of the Java platform on the ARINC 653 operating system. Then the paper focuses on some important ...
Real-time Java profiles make use of scoped memory regions Explicit scoping requires care from pro... more Real-time Java profiles make use of scoped memory regions Explicit scoping requires care from programmers Deal with temporary objects Pass scope-allocated objects as arguments to methods Returning scope-allocated objects from methods Look into the expressiveness of the SCJ memory model Explore patterns on how to use it Focus on how to pass arguments and return objects between private memories
this document describes Real-Time Java from the perspective of the application programmer. The pr... more this document describes Real-Time Java from the perspective of the application programmer. The programmer's view of Real-Time Java is characterized as the application programmer interface (API). Accompanying presentation of the API are brief discussions of how particular Real-Time Java features are implemented on both traditional and special Real-Time Java virtual machines. These three different views of each language feature are identified throughout this document as detailed below:
Issues in the Design and Implementation of Real-Time Java
ion helps programmers, including real-time programmers, deal with complexity. But real-time devel... more ion helps programmers, including real-time programmers, deal with complexity. But real-time developers must use abstraction with discretion. They must be able to break through layers of abstraction whenever this is necessary in order to understand or exercise control over real-time behavior. A Real-Time Java program consists of an arbitrary number of real-time activities accompanied by an arbitrary number of runnable threads. The runnable threads have no time-constrained behavior. The discussion of real-time activities provided below makes frequent reference to the real-time executive. See "The Real-Time Executive" on page 14. 1. NewMonics Inc. is currently in the process of refining the "Real-Time Java" API and is promoting a standard API under the product name PERC TM , an acronym that stands for Portable Executive for Reliable Control. In a number of cases, the draft API differs slightly from the design suggested in this document. What is Real-Time Java? 10 Is...
... Software based cache partitioning is another static tech-nique for reducing the contention fo... more ... Software based cache partitioning is another static tech-nique for reducing the contention for cache lines be-tween different tasks in a multitasking system[11]. ... Static cache partitioning consists of assigning particular sets of cache lines to each task. ...
Uploads
Papers by Kelvin Nilsen