Abstract
Indexes are ubiquitous. Examples include associative arrays, dictionaries, maps and hashes used in applications such as databases, file systems and dynamic languages. Abstractly, a sequential index can be viewed as a partial function from keys to values. Values can be queried by their keys, and the index can be mutated by adding or removing mappings. Whilst appealingly simple, this abstract specification is insufficient for reasoning about indexes accessed concurrently. We present an abstract specification for concurrent indexes. We verify several representative concurrent client applications using our specification, demonstrating that clients can reason abstractly without having to consider specific underlying implementations. Our specification would, however, mean nothing if it were not satisfied by standard implementations of concurrent indexes. We verify that our specification is satisfied by algorithms based on linked lists, hash tables and B-Link trees. The complexity of these algorithms, in particular the B-Link tree algorithm, can be completely hidden from the client's view by our abstract specification.
- Blelloch, G. E. Programming parallel algorithms. Commun. ACM 39 (March 1996), 85--97. Google ScholarDigital Library
- Boyland, J. Checking interference with fractional permissions. In Static Analysis (2003). Google ScholarDigital Library
- Calcagno, C., Gardner, P., and Zarfaty, U. Context Logic and tree update. In POPL (2005), ACM. Google ScholarDigital Library
- da Rocha Pinto, P. Reasoning about Concurrent Indexes. Master's thesis, Imperial College London, Sept. 2010.Google Scholar
- da Rocha Pinto, P., Dinsdale-Young, T., Dodds, M., Gardner, P., and Wheelhouse, M. A simple abstraction for complex concurrent indexes. Tech. rep., Imperial College London, 2011.Google Scholar
- Dillig, I., Dillig, T., and Aiken, A. Precise reasoning for programs using containers. SIGPLAN Not. 46 (2011). Google ScholarDigital Library
- Dinsdale-Young, T., Dodds, M., Gardner, P., Parkinson, M., and Vafeiadis,V. Concurrent abstract predicates. In ECOOP (2010). Google ScholarDigital Library
- Dinsdale-Young, T., Gardner, P., and Wheelhouse, M. Abstraction and Refinement for Local Reasoning. In VSTTE (2010). Google ScholarDigital Library
- Dodds, M., Feng, X., Parkinson, M., and Vafeiadis, V. Deny-guarantee reasoning. In ESOP (2009). Google ScholarDigital Library
- Feng, X., Ferreira, R., and Shao, Z. On the relationship between concurrent separation logic andassume-guarantee reasoning. In ESOP (2007). Google ScholarDigital Library
- Filipovic, I., O'Hearn, P., Rinetzky, N., and Yang, H. Abstraction for concurrent objects. In ESOP (2010). Google ScholarDigital Library
- Herlihy, M. P., and Wing, J. M. Linearizability: a correctness condition for concurrent objects. ACM Trans. Program. Lang. Syst. 12 (July 1990), 463--492. Google ScholarDigital Library
- Hoare, C. A. R. Proof of a structured program: 'The sieve of Eratosthenes'. The Computer Journal 15, 4 (1972), 321--325.Google ScholarCross Ref
- Kuncak, V., Lam, P., Zee, K., and Rinard, M. C. Modular pluggable analyses for data structure consistency. IEEE Trans. Softw. Eng. 32 (December 2006), 988--1005. Google ScholarDigital Library
- Malecha, G., Morrisett, G., Shinnar, A., and Wisnesky, R. Toward a verified relational database management system. In POPL (2010). Google ScholarDigital Library
- O'Hearn, P. W. Resources, concurrency, and local reasoning. Theor. Comput. Sci. 375 (April 2007), 271--307. Google ScholarDigital Library
- Parkinson, M., and Bierman, G. Separation logic and abstraction. In POPL (2005). Google ScholarDigital Library
- Philippou, A., and Walker, D. A process-calculus analysis of concurrent operations on b-trees. J. Comput. Syst. Sci. 62, 1 (2001), 73--122. Google ScholarDigital Library
- Reynolds, J. Separation logic: a logic for shared mutable data structures. In LICS (2002). Google ScholarDigital Library
- Sagiv, Y. Concurrent operations on B*-trees with overtaking. Journal of Computer and System Sciences 33 (October 1986). Google ScholarDigital Library
- Sexton, A., and Thielecke, H. Reasoning about B-trees with operational semantics and separationlogic. ENTCS 218 (2008). Google ScholarDigital Library
- Turon, A. J., and Wand, M. A separation logic for refining concurrent objects. In POPL (2011). Google ScholarDigital Library
- Vafeiadis, V., and Parkinson, M. A marriage of rely/guarantee and separation logic. CONCUR (2007). Google ScholarDigital Library
Index Terms
- A simple abstraction for complex concurrent indexes
Recommendations
A simple abstraction for complex concurrent indexes
OOPSLA '11: Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applicationsIndexes are ubiquitous. Examples include associative arrays, dictionaries, maps and hashes used in applications such as databases, file systems and dynamic languages. Abstractly, a sequential index can be viewed as a partial function from keys to ...
Specification, Refinement and Verification of Concurrent Systems—An Integration of Object-Z and CSP
This paper presents a method of formally specifying, refining and verifying concurrent systems which uses the object-oriented state-based specification language Object-Z together with the process algebra CSP. Object-Z provides a convenient way of ...
Execution privatization for scheduler-oblivious concurrent programs
OOPSLA '12: Proceedings of the ACM international conference on Object oriented programming systems languages and applicationsMaking multithreaded execution less non-deterministic is a promising solution to address the difficulty of concurrent programming plagued by the non-deterministic thread scheduling. In fact, a vast category of concurrent programs are scheduler-oblivious:...
Comments