Skip to main content

Verifying Lock-Freedom Using Well-Founded Orders

  • Conference paper

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 4711))

Abstract

Lock-free algorithms are designed to improve the performance of concurrent programs by maximising the potential for processes to operate in parallel. Lock-free algorithms guarantee that within the system as a whole, some process will eventually complete its operation (as opposed to guaranteeing that all operations will eventully complete). Since lock-free algorithms potentially allow a high degree of interference between concurrent processes, and because their progress property is non-trivial, it is difficult to be assured of their correctness without a formal, machine-checked verification. In this paper we describe a method for proving the lock-free progress property. The approach is based on the construction of a well-founded ordering on the set of processes. The method is demonstrated using a well-known lock-free stack algorithm as an example, and we describe how the proof was checked using a theorem prover.

This is a preview of subscription content, log in via an institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Colvin, R., Dongol, B.: PVS files for lock-freedom of the Treiber stack, http://www.itee.uq.edu.au/~nbverif/Lockfreedom_Proofs/Treiber/

  2. Colvin, R., Doherty, S., Groves, L.: Verifying concurrent data structures by simulation. In: Proceedings of the REFINE 2005 Workshop. Electronic Notes in Theoretical Computer Science, vol. 137, pp. 93–110 (2005)

    Google Scholar 

  3. Colvin, R., Groves, L.: Formal verification of an array-based nonblocking queue. In: 10th International Conference on Engineering of Complex Computer Systems, pp. 507–516. IEEE Computer Society Press, Los Alamitos (2005)

    Chapter  Google Scholar 

  4. Colvin, R., Groves, L., Luchangco, V., Moir, M.: Formal verification of a lazy concurrent list-based set algorithm. In: Ball, T., Jones, R.B. (eds.) CAV 2006. LNCS, vol. 4144, pp. 475–488. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  5. Chandy, K.M., Misra, J.: Parallel Program Design: A Foundation. Addison-Wesley Longman Publishing Co., Inc., Redwood City, CA, USA (1988)

    MATH  Google Scholar 

  6. Doherty, S., Detlefs, D., Groves, L., Flood, C.H., Luchangco, V., Martin, P.A., Moir, M., Shavit, N., Steele, Jr., G.L.: DCAS is not a silver bullet for nonblocking algorithm design. In: Gibbons, P., Adler, M. (eds.) Proceedings of the 16th Annual ACM Symposium on Parallel Algorithms, pp. 216–224. ACM Press, New York (2004)

    Google Scholar 

  7. Doherty, S., Groves, L., Luchangco, V., Moir, M.: Formal verification of a practical lock-free queue algorithm. In: de Frutos-Escrig, D., Núñez, M. (eds.) FORTE 2004. LNCS, vol. 3235, pp. 97–114. Springer, Heidelberg (2004)

    Google Scholar 

  8. Dongol, B., Mooij, A.J.: Progress in deriving concurrent programs: Emphasizing the role of stable guards. In: Uustalu, T. (ed.) MPC 2006. LNCS, vol. 4014, pp. 140–161. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  9. Dongol, B., Mooij, A.J.: Streamlining progress-based derivations of concurrent programs. Formal Aspects of Computing (to appear)

    Google Scholar 

  10. Doherty, S.: Modelling and verifying non-blocking algorithms that use dynamically allocated memory. Master’s thesis, Victoria University of Wellington (2003)

    Google Scholar 

  11. Dongol, B.: Formalising progress properties of non-blocking programs. In: Liu, Z., He, J. (eds.) ICFEM 2006. LNCS, vol. 4260, pp. 284–303. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  12. Dongol, B.: Towards simpler proofs of lock-freedom. In: AWCVS’06. 1st International Workshop - Asian Working Conference on Verified Software, October 2006, pp. 136–147 (2006)

    Google Scholar 

  13. Fix, L., Grumberg, O.: Verification of temporal properties. J. Log. Comput. 6(3), 343–361 (1996)

    Article  MATH  MathSciNet  Google Scholar 

  14. Gao, H., Hesselink, W.H.: A general lock-free algorithm using compare-and-swap. Inf. Comput. 205(2), 225–241 (2007)

    Article  MATH  MathSciNet  Google Scholar 

  15. Gries, D., Schneider, F.B.: A logical approach to discrete math. Springer, New York (1993)

    MATH  Google Scholar 

  16. Herlihy, M., Luchangco, V., Moir, M.: The repeat offender problem: A mechanism for supporting dynamic-sized, lock-free data structures. In: Malkhi, D. (ed.) DISC 2002. LNCS, vol. 2508, pp. 339–353. Springer, Heidelberg (2002)

    Chapter  Google Scholar 

  17. Herlihy, M., Luchangco, V., Moir, M.: Obstruction-free synchronization: Double-ended queues as an example. In: 23rd IEEE International Conference on Distributed Computing Systems, p. 522. IEEE Computer Society Press, Los Alamitos (2003)

    Chapter  Google Scholar 

  18. Michael, M.M.: Hazard pointers: Safe memory reclamation for lock-free objects. IEEE Trans. Parallel Distrib. Syst. 15(6), 491–504 (2004)

    Article  Google Scholar 

  19. Misra, J.: A Discipline of Multiprogramming. Springer, Heidelberg (2001)

    MATH  Google Scholar 

  20. Moir, M.: Practical implementations of non-blocking synchronization primitives. In: PODC, pp. 219–228 (August 1997)

    Google Scholar 

  21. Manna, Z., Pnueli, A.: Temporal Verification of Reactive and Concurrent Systems: Specification. Springer, New York (1992)

    Google Scholar 

  22. Michael, M.M., Scott, M.L.: Nonblocking algorithms and preemption-safe locking on multiprogrammed shared memory multiprocessors. J. Parallel Distrib. Comput. 51(1), 1–26 (1998)

    Article  MATH  Google Scholar 

  23. Owre, S., Rajan, S., Rushby, J.M., Shankar, N., Srivas, M.K.: PVS: Combining specification, proof checking, and model checking. In: Alur, R., Henzinger, T.A. (eds.) CAV 1996. LNCS, vol. 1102, pp. 411–414. Springer, Heidelberg (1996)

    Google Scholar 

  24. Treiber, R.K.: Systems programming: Coping with parallelism, Technical Report RJ 5118, IBM Almaden Res. Ctr. (1986)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Cliff B. Jones Zhiming Liu Jim Woodcock

Rights and permissions

Reprints and permissions

Copyright information

© 2007 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Colvin, R., Dongol, B. (2007). Verifying Lock-Freedom Using Well-Founded Orders. In: Jones, C.B., Liu, Z., Woodcock, J. (eds) Theoretical Aspects of Computing – ICTAC 2007. ICTAC 2007. Lecture Notes in Computer Science, vol 4711. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-75292-9_9

Download citation

  • DOI: https://doi.org/10.1007/978-3-540-75292-9_9

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-75290-5

  • Online ISBN: 978-3-540-75292-9

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics