AtomJava: Atomicity Without Virtual-Machine Support
by
Ben Hindman
Programming multithreaded systems is tedious and complex. Critical
sections of code are hard to reason about and protect. Programs
written by novice and expert programmers alike lack sufficient
attention to detail when it comes to issues like data races and
deadlock. Locks, semaphores and mutexes are the most heavily
practiced solutions to these issues, however, these approaches
require careful use of the data structures involved and are often
cumbersome. For these reasons researchers have been motivated to
provide easier-to-use concurrency primitives. In particular, several
recent projects have investigated replacing or complementing current
solutions with user-specified atomic blocks. Atomic-block semantics
guarantee that no other thread will perform interleaved computation
for the duration of an atomic block.
We provide an implementation of atomicity for Java with AtomJava.
Specifically, we provide the guarantee of strong atomicity with
deadlock free code and fair thread scheduling. Furthermore, we do
not rely on augmenting any specific virtual machine. This talk will
focus on the source-to-source compilation of AtomJava, the issues
inherent in maintaining atomicity without going into the VM and the
benefits of doing such an implementation.
Advised by Dan Grossman
CSE 403
Wednesday
February 15, 2006
3:30 - 4:20 pm