Skip to main navigation Skip to search Skip to main content

Model checking the Java metalocking algorithm

  • Iowa State University

Research output: Contribution to journalArticlepeer-review

3 Scopus citations

Abstract

We report on our efforts to use the XMC model checker to model and verify the Java metalocking algorithm. XMC [Ramakrishna et al. 1997] is a versatile and efficient model checker for systems specified in XL, a highly expressive value-passing language. Metalocking [Agesen et al. 1999] is a highly-optimized technique for ensuring mutually exclusive access by threads to object monitor queues and, therefore; plays an essential role in allowing Java to offer concurrent access to objects. Metalocking can be viewed as a two-tiered scheme. At the upper level, the metalock level, a thread waits until it can enqueue itself on an object's monitor queue in a mutually exclusive manner. At the lower level, the monitor-lock level, enqueued threads race to obtain exclusive access to the object. Our abstract XL specification of the metalocking algorithm is fully parameterized, both on the number of threads M, and the number of objects N. It also captures a sophisticated optimization of the basic metalocking algorithm known as extra-fast locking and unlocking of uncontended objects. Using XMC, we show that for a variety of values of M and N, the algorithm indeed provides mutual exclusion and freedom from deadlock and lockout at the metalock level. We also show that, while the monitor-lock level of the protocol preserves mutual exclusion and deadlock-freedom, it is not lockout-free because the protocol's designers chose to give equal preference to awaiting threads and newly arrived threads.

Original languageEnglish
Article number1243990
JournalACM Transactions on Software Engineering and Methodology
Volume16
Issue number3
DOIs
StatePublished - Jul 1 2007

Keywords

  • Java
  • Metalocking
  • Monitor queues
  • Mutual exclusion
  • Synchronized methods
  • XMC

Fingerprint

Dive into the research topics of 'Model checking the Java metalocking algorithm'. Together they form a unique fingerprint.

Cite this