Atomic heap transactions and fine-grain interrupts

12Citations
Citations of this article
12Readers
Mendeley users who have this article in their library.

Abstract

Languages such as Java, ML, Scheme, and Haskell provide automatic storage management, that is, garbage collection. The two fundamental operations performed on a garbage-collected heap are "allocate" and "collect." Because the heap is in an inconsistent state during these operations, they must be performed atomically. Otherwise, a heap client might access the heap during a time when its fundamental invariants do not hold, corrupting the heap. Standard techniques for providing this atomicity guarantee have large latencies and other performance problems that impede their application in high-performance, interrupt-laden, thread-based systems applications. In particular, the standard techniques prevent thread schedulers from switching threads on VM page faults. We cast the space of possible implementations into a general taxonomy, and describe a new technique that provides a simple, low-overhead, low-latency interlock. We have implemented this technique in a version of SML/NJ, and, because of its applicability to thread-based systems, are currently implementing it in the scheduler of our raw-hardware SML-based kernel, ML/OS. Our technique can be extended to provide other atomic sequences besides storage allocation. © 1999 ACM.

Cite

CITATION STYLE

APA

Shivers, O., Clark, J. W., & McGrath, R. (1999). Atomic heap transactions and fine-grain interrupts. SIGPLAN Notices (ACM Special Interest Group on Programming Languages), 34(9), 48–59. https://doi.org/10.1145/317765.317783

Register to see more suggestions

Mendeley helps you to discover research relevant for your work.

Already have an account?

Save time finding and organizing research with Mendeley

Sign up for free