The Repeat Offender Problem: A Mechanism for Supporting Dynamic-Sized, Lock-Free Data Structures
We define the Repeat Offender Problem (ROP). Elsewhere, we have presented the first dynamic-sized, lock-free data structures that can free memory to any standard memory allocator—even after thread failures—without requiring special support from the operating system, the memory allocator, or the hardware. These results depend on a solution to the ROP problem. Here we present the first solution to the ROP problem and its correctness proof. Our solution is implementable in most modern shared memory multiprocessors.
Unable to display preview. Download preview PDF.
- 1.J. Anderson and M. Moir. Using local-spin k-exclusion algorithms to improve wait-free object implementations. Distributed Computing, 11:1–20, 1997. A preliminary version appeared in Proceedings of the 13th Annual ACM Symposium on Principles of Distributed Computing, 1994, pp. 141–150.CrossRefGoogle Scholar
- 2.D. Detlefs, C. Flood, A. Garthwaite, P. Martin, N. Shavit, and G. Steele. Even better DCAS-based concurrent deques. In Proceedings of the 14th International Conference on Distributed Computing, pages 59–73, 2000.Google Scholar
- 3.D. Detlefs, P. Martin, M. Moir, and G. Steele. Lock-free reference counting. In Proceedings of the 20th Annual ACM Symposium on Principles of Distributed Computing, pages 190–199, 2001.Google Scholar
- 4.M. Greenwald. Non-Blocking Synchronization and System Design. PhD thesis, Stanford University Technical Report STAN-CS-TR-99-1624, Palo Alto, CA, August 1999.Google Scholar
- 5.T. Harris. A pragmatic implementation of non-blocking linked lists. In Proceedings of the 15th International Symposium on Distributed Computing, 2001. To appear.Google Scholar
- 6.M. Herlihy, V. Luchangco, P. Martin, and M. Moir. Dynamic-sized lock-free data structures. Technical Report TR-2002-110, Sun Microsystems Laboratories, 2002.Google Scholar
- 7.M. Herlihy, V. Luchangco, and M. Moir. The repeat offender problem: A mechanism for supporting lock-free dynamic-sized data structures. Technical Report TR-2002-112, Sun Microsystems Laboratories, 2002.Google Scholar
- 8.L. Lamport. How to make a multiprocessor computer that correctly executes multiprocess programs. IEEE Transactions on Computers, C-28(9):241–248, September 1979.Google Scholar
- 9.N. Lynch and M. Tuttle. An introduction to input/output automata. Technical Report CWI-Quarterly, 2(3), Centrum voor Wiskunde en Informatica, Amsterdam, The Netherlands, 1989.Google Scholar
- 10.M. Michael. Safe memory reclamation for dynamic lock-free objects using atomic reads and writes. In Proceedings of the 21st Annual ACM Symposium on the Principles of Distributed Computing, 2002.Google Scholar
- 11.M. Michael and M. Scott. Simple, fast, and practical non-blocking and blocking concurrent queue algorithms. In Proceedings of the 15th Annual ACM Symposium on the Principles of Distributed Computing, pages 267–276, 1996.Google Scholar
- 13.M. Moir. Practical implementations of non-blocking synchronization primitives. In Proceedings of the 16th Annual ACM Symposium on Principles of Distributed Computing, pages 219–228, 1997.Google Scholar
- 14.R. Treiber. Systems programming: Coping with parallelism. Technical Report RJ5118, IBM Almaden Research Center, 1986.Google Scholar
- 15.J. Valois. Lock-free linked lists using compare-and-swap. In Proceedings of the 14th Annual ACM Symposium on Principles of Dsitributed Computing, pages 214–22, 1995. See http://www.cs.sunysb.edu~valois for errata.
- 16.D. Weaver and T. Germond. The SPARC Architecture Manual Version 9. PTR Prentice Hall, Englewood Cliffs, NJ 07632, USA, 1994.Google Scholar