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
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
Colvin, R., Dongol, B.: PVS files for lock-freedom of the Treiber stack, http://www.itee.uq.edu.au/~nbverif/Lockfreedom_Proofs/Treiber/
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)
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)
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)
Chandy, K.M., Misra, J.: Parallel Program Design: A Foundation. Addison-Wesley Longman Publishing Co., Inc., Redwood City, CA, USA (1988)
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)
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)
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)
Dongol, B., Mooij, A.J.: Streamlining progress-based derivations of concurrent programs. Formal Aspects of Computing (to appear)
Doherty, S.: Modelling and verifying non-blocking algorithms that use dynamically allocated memory. Master’s thesis, Victoria University of Wellington (2003)
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)
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)
Fix, L., Grumberg, O.: Verification of temporal properties. J. Log. Comput. 6(3), 343–361 (1996)
Gao, H., Hesselink, W.H.: A general lock-free algorithm using compare-and-swap. Inf. Comput. 205(2), 225–241 (2007)
Gries, D., Schneider, F.B.: A logical approach to discrete math. Springer, New York (1993)
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)
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)
Michael, M.M.: Hazard pointers: Safe memory reclamation for lock-free objects. IEEE Trans. Parallel Distrib. Syst. 15(6), 491–504 (2004)
Misra, J.: A Discipline of Multiprogramming. Springer, Heidelberg (2001)
Moir, M.: Practical implementations of non-blocking synchronization primitives. In: PODC, pp. 219–228 (August 1997)
Manna, Z., Pnueli, A.: Temporal Verification of Reactive and Concurrent Systems: Specification. Springer, New York (1992)
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)
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)
Treiber, R.K.: Systems programming: Coping with parallelism, Technical Report RJ 5118, IBM Almaden Res. Ctr. (1986)
Author information
Authors and Affiliations
Editor information
Rights 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)