ABSTRACT
In the last decades faster and more powerful computers made possible to seriously take into account high-level and functional programming languages also for non-academic projects. Haskell, Erlang, O'CAML have been effectively exploited in many application fields, demonstrating how high-level languages can help in writing efficient, readable and almost bug-free code, rapidly stealing the prominent position gained in many fields by OO languages such as Java and C++. One of the fields where low-level imperative languages are still preferred to functional programming is that of hard real-time applications, since usually programmers (and managers) think that high-level languages are really not able to cope with the complex and critical requirements of real-time.
In this paper we propose an implementation of a hard real-time scheduler entirely written in Erlang, and perfectly integrated with the Erlang BEAM emulator. Performance analysis show that the proposed solution is effective, precise and efficient, while remaining really simple to use as expected by Erlang programmers.
- Antonella Di Stefano and Corrado Santoro. A Java Kernel for Embedded Systems in Distributed Process Control. IEEE Concurrency, special issue on "Operating Systems Research & Development", 8(4), 2000. Google ScholarDigital Library
- Bollella, Gosling, Brosgol, Dibble, Furr, Hardin, and Turnbull. The Real-Time Specification for Java. Addison-Wesley, 2000. Google ScholarDigital Library
- A. Burns. The ravenscar profile. Ada Lett., XIX 4):49--52, 1999. Google ScholarDigital Library
- A. Burns and A. Wellings. Real-Time Systems and Programming Languages (3rd Edition). Ada 95, Real-Time Java and Real-Time POSIX. Addison-Wesley, 2001. Google ScholarDigital Library
- A. Corsaro and C. Santoro. A C++ Native Interface for Interpreted JVMs. In Robert Meersman, Zahir Tari, editor, 1st Intl. Workshop on Java Technologies for Real-time and Embedded Systems (JTRES'03). Lecture Notes in Computer Science 2889, Springer Verlag, 2003.Google Scholar
- A. Corsaro and C. Santoro. Design Patterns for RTSJ Application Development. In Proceedings of 2nd JTRES 2004 Workshop, OTM'04 Federated Conferences, pages 394--405. LNCS 3292, Springer, Oct. 25-29 2004.Google ScholarCross Ref
- P. Dibble. Real-Time Java Platform Programming. Prentice Hall PTR, 2002.Google Scholar
- E. Johansson, M. Pettersson, and K. F. Sagonas. A high performance erlang system. In Principles and Practice of Declarative Programming, pages 32--43, 2000. Google ScholarDigital Library
- J. Kwon, A. Wellings, and S. King. Ravenscar-java: a high integrity profile for real-time java. In JGI '02: Proceedings of the 2002 joint ACM-ISCOPE conference on Java Grande, pages 131--140, New York, NY, USA, 2002. ACM Press. Google ScholarDigital Library
- C. Liu and J. Layland. Scheduling Algorithms for Multiprogramming in a Hard-Real-Time Environment. JACM, 20(1):46--61, Jan. 1973. Google ScholarDigital Library
- A. Wellings. Concurrent and Real-Time Programming in Java. Wiley, 2004. Google ScholarDigital Library
Index Terms
- Towards hard real-time erlang
Recommendations
Analyzing Hard-Real-Time Programs for Guaranteed Schedulability
A set of language-independent schedulability analysis techniques is presented. Utilizing knowledge of implementation- and hardware-dependent information in a table-driven fashion, these techniques provide accurate worst-case time bounds and other ...
Pyrlang: a high performance Erlang virtual machine based on RPython
SPLASH Companion 2015: Companion Proceedings of the 2015 ACM SIGPLAN International Conference on Systems, Programming, Languages and Applications: Software for HumanityIn widely-used actor-based programming languages, such as Erlang, sequential execution performance is as important as scalability of concurrency. We are developing a virtual machine called Pyrlang for the Erlang BEAM bytecode with a just-in-time (JIT) ...
C++ hard-real-time active library: syntax, semantics, and compilation of Tice programs
Special Issue on Embedded Operating Systems Workshops (EWiLi'17 and EWiLi'18)General-purpose programming languages C and C++ address only the functional aspect of programs. In contrast, real-time programming languages address not only the functional aspect but also the nonfunctional real-time aspect to automatically ensure the ...
Comments