A Uniform Transactional Execution Environment for Java

Transactional memory (TM) has recently emerged as an effective tool for extracting fine-grain parallelism from declarative critical sections. In order to make STM systems practical, significant effort has been made to integrate transactions into existing programming languages. Unfortunately, existing approaches fail to provide a simple implementation that permits lock-based and transaction-based abstractions to coexist seamlessly. Because of the fundamental semantic differences between locks and transactions, legacy applications or libraries written using locks can not be transparently used within atomic regions. To address these shortcomings, we implement a uniform transactional execution environment for Java programs in which transactions can be integrated with more traditional concurrency control constructs. Programmers can run arbitrary programs that utilize traditional mutual-exclusion-based programming techniques, execute new programs written with explicit transactional constructs, and freely combine abstractions that use both coding styles.

[1]  Maurice Herlihy,et al.  Software transactional memory for dynamic-sized data structures , 2003, PODC '03.

[2]  David J. DeWitt,et al.  A status report on the OO7 OODBMS benchmarking effort , 1994, OOPSLA '94.

[3]  Dan Grossman,et al.  What do high-level memory models mean for transactions? , 2006, MSPC '06.

[4]  Milo M. K. Martin,et al.  Unrestricted Transactional Memory: Supporting I/O and System Calls Within Transactions , 2006 .

[5]  Maurice Herlihy,et al.  A flexible framework for implementing software transactional memory , 2006, OOPSLA '06.

[6]  Simon L. Peyton Jones,et al.  Composable memory transactions , 2005, CACM.

[7]  Adam Welc,et al.  Single global lock semantics in a weakly atomic STM , 2008, SIGP.

[8]  Antony L. Hosking,et al.  Nested Transactional Memory: Model and Preliminary Architecture Sketches , 2005 .

[9]  Virendra J. Marathe,et al.  Design tradeoffs in modern software transactional memory systems , 2004 .

[10]  Milo M. K. Martin,et al.  Subtleties of transactional memory atomicity semantics , 2006, IEEE Computer Architecture Letters.

[11]  Jeremy Manson,et al.  The Java memory model , 2005, POPL '05.

[12]  Yannis Smaragdakis,et al.  Transactions with isolation and cooperation , 2007, OOPSLA.

[13]  Michael R. Clarkson,et al.  Polyglot: An Extensible Compiler Framework for Java , 2003, CC.

[14]  Mark Plesko,et al.  Optimizing memory transactions , 2006, PLDI '06.

[15]  Keir Fraser,et al.  Language support for lightweight transactions , 2003, SIGP.

[16]  Dan Grossman,et al.  AtomCaml: first-class atomicity via rollback , 2005, ICFP '05.

[17]  Virendra J. Marathe,et al.  Adaptive Software Transactional Memory , 2005, DISC.

[18]  Dan Grossman,et al.  Enforcing isolation and ordering in STM , 2007, PLDI '07.

[19]  James Gosling,et al.  The Java Language Specification, 3rd Edition , 2005 .

[20]  Guy L. Steele,et al.  Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley)) , 2005 .

[21]  Bratin Saha,et al.  McRT-STM: a high performance software transactional memory system for a multi-core runtime , 2006, PPoPP '06.

[22]  Suresh Jagannathan,et al.  Transparently Reconciling Transactions with Locking for Java Synchronization , 2006, ECOOP.

[23]  Mauricio J. Serrano,et al.  The starjit compiler: a dynamic compiler for managed runtime environments , 2003 .

[24]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[25]  Brian T. Lewis,et al.  The Open Runtime Platform: a flexible high‐performance managed runtime environment , 2005, Concurr. Pract. Exp..

[26]  Dave Thomas ECOOP 2006 - Object-Oriented Programming, 20th European Conference, Nantes, France, July 3-7, 2006, Proceedings , 2006, ECOOP.

[27]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[28]  Mark Moir,et al.  Hybrid Hardware/Software Transactional Memory , 2005 .

[29]  Martin Odersky ECOOP 2004 – Object-Oriented Programming , 2004, Lecture Notes in Computer Science.

[30]  Brian T. Lewis,et al.  Compiler and runtime support for efficient software transactional memory , 2006, PLDI '06.

[31]  Suresh Jagannathan,et al.  Transactional Monitors for Concurrent Objects , 2004, ECOOP.

[32]  Michael F. Spear,et al.  Privatization techniques for software transactional memory , 2007, PODC '07.

[33]  Bratin Saha,et al.  Open nesting in software transactional memory , 2007, PPOPP.