Specification for Java provides a platform that al lows real-time
developers to use a wide variety of modern programming tools. However,
its handling of concurrency still employs the same dangerous and
difficult tools, such as mutual exclusion locking, that have been the
bane of programmers for decades. This paper provides a simpler
concurrency control abstraction, preemptible atomic regions, which
provide safe access to a region of code, but avoid data races, priority
inversion and the undue delays inherent in mutual exclusion locks.
These atomic regions are layered on top of a transactional memory
implementation for uni-processor systems that supports preemption of
low priority threads and safe re-execution of aborted transactions.
This paper describes our implementation of preemptible atomic regions
in a complete Real-time Java virtual machine. We show the impact of
using atomic regions on a variety of applications, including a 100KLoc
Real-time Java avionics application and on a real-time CORBA server.
of Programming Seminars