|
|
Formal verification of concurrent programs with
read-write locks |
Ming FU,Yu ZHANG,Yong LI, |
School of Computer Science
and Technology, University of Science and Technology of China, Hefei
230027, China;Suzhou Institute for
Advanced Study, University of Science and Technology of China, Suzhou
215123, China; |
|
|
Abstract Read-write locking is an important mechanism to improve concurrent granularity, but it is difficult to reason about the safety of concurrent programs with read-write locks. Concurrent separation logic (CSL) provides a simple but powerful technique for locally reasoning about concurrent programs with mutual exclusive locks. Unfortunately, CSL cannot be directly applied to reasoning about concurrent programs with read-write locks due to the different concurrent control mechanisms. This paper focuses on extending CSL and presenting a proof-carrying code (PCC) system for reasoning about concurrent programs with read-write locks. We extend the heap model with a writing permission set, denoted as logical heap, then define “strong separation” and “weak separation” over logical heap. Following CSL’s local-reasoning idea, we develop a novel program logic to enforce weak separations of heap between different threads and provide verification of concurrent programs with read-write locks.
|
Keywords
verification
concurrent separation logic
mutual exclusive locks
read-write locks
|
Issue Date: 05 March 2010
|
|
|
Hearn O P W. Resources, concurrency, and local reasoning. Theoretical Computer Science, 2007, 375(1―3): 271―307
|
|
Hoare C A R. Towards a theory of parallel programming. In: Hoare C A R and Perrott R H, eds. Operating Systems Techniques. Academic Press, 1972, 61―71
|
|
The Coq Development Team. The Coq proof assistant reference manual. The Coq release v8.0, October2004
|
|
Necula G.Proof-carryingcode. In: Proceedings of the 24th ACM SIGPLAN-SIGACTSymposium on Principles of Programming Languges. ACM Press, January1997, 106―119
|
|
Reynolds J C. Separation logic: A logic for shared mutable data structures. In: Proceedings of the 17th IEEE Symposium on Logicin Computer Science, July2002, 55―74
|
|
Yu D C, Shao Z. Verification of safety propertiesfor concurrent assembly code. In: Proceedingsof the 9th ACM SIGPLAN International Conference on Functional Programming, September2004, 19―21
|
|
Hearn O PW. Resources, concurrency and local reasoning. In: Proceedings of the 15th International Conference on Concurrency Theory, 2004, LNCS, 3170: 49―67
|
|
Wright A K, Felleisen M. A syntactic approach to typesoundness. Information and Computation, 1994, 115(1): 38―94
doi: 10.1006/inco.1994.1093
|
|
The Coq Development Team. The Coq proof assistant reference manual. The Coq release v7.1, October2001
|
|
Owicki S, Gries D. Verifying properties of parallelprograms: an axiomatic approach. Communicationsof the ACM, 1976, 19(5): 279―285
doi: 10.1145/360051.360224
|
|
Jones C B. Tentative steps toward a development method for interfering programs. ACM Transactions on Programming Languages and Systems, 1983, 5(4): 596―619
doi: 10.1145/69575.69577
|
|
Feng X, Shao Z. Modular verification of concurrentassembly code with dynamic thread creation and termination. In: Proceedings of the 10th ACM SIGPLAN internationalconference on Functional programming, 2005, 26―28
|
|
Feng X, Ferreira R, Shao Z. On the relationship between concurrent separation logicand assume-guarantee reasoning. In: Proceedingsof the 16th European Symposium on Programming, 2007, 173―188
|
|
Brookes S. Asemantics for concurrent separation logic. Theoretical Computer Science, 2007, 375: 227―270
doi: 10.1016/j.tcs.2006.12.034
|
|
Ishtiaq S S, Hearn O P W. BI as an assertion languagefor mutable data structures. In: Proceedingsof the 28th ACM SIGPLAN-SIGACT symposium on Principles of ProgrammingLanguages, 2001, 14―26
|
|
Vafeiadis V, Parkinson M J. A marriage of rely/guaranteeand separation logic. In: Proceedings ofthe 18th International Conference on Concurrency Theory, 2007, 256―271
|
|
Bornat R, Calcagno C, Hearn O PW, et al. Permission accounting in separation logic. In: Proceedings of the 32nd ACM SIGPLAN-SIGACTSymposium on Principles of Programming Languages, 2005, 259―270
|
|
Viewed |
|
|
|
Full text
|
|
|
|
|
Abstract
|
|
|
|
|
Cited |
|
|
|
|
|
Shared |
|
|
|
|
|
Discussed |
|
|
|
|