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