A simple abstraction for complex concurrent indexes
File(s)DTR11-10.pdf (1.35 MB)
Published version
Author(s)
da Rocha Pinto, Pedro Miguel
Dinsdale-Young, Thomas
Dodds, Mike
Gardner, Philippa
Wheelhouse, Mark
Type
Report
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 that are 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 BLink trees. The complexity of these algorithms, in
particular the BLink tree algorithm, can be completely hidden
from the client’s view by our abstract specification.
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 that are 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 BLink trees. The complexity of these algorithms, in
particular the BLink tree algorithm, can be completely hidden
from the client’s view by our abstract specification.
Date Issued
2011-01-01
Citation
Departmental Technical Report: 11/10, 2011, pp.1-38
Publisher
Department of Computing, Imperial College London
Start Page
1
End Page
38
Journal / Book Title
Departmental Technical Report: 11/10
Copyright Statement
© 2011 The Author(s). This report is available open access under a CC-BY-NC-ND (https://creativecommons.org/licenses/by-nc-nd/4.0/)
Publication Status
Published
Article Number
11/10