Non-Blocking Data Structures Handling Multiple Changes Atomically
dc.contributor.advisor | Ruppert, Eric | |
dc.creator | Shafiei, Niloufar | |
dc.date.accessioned | 2015-12-16T19:19:40Z | |
dc.date.available | 2015-12-16T19:19:40Z | |
dc.date.copyright | 2015-07-03 | |
dc.date.issued | 2015-12-16 | |
dc.date.updated | 2015-12-16T19:19:40Z | |
dc.degree.discipline | Computer Science | |
dc.degree.level | Doctoral | |
dc.degree.name | PhD - Doctor of Philosophy | |
dc.description.abstract | Here, we propose a new approach to design non-blocking algorithms that can apply multiple changes to a shared data structure atomically using Compare&Swap (CAS) instructions. We applied our approach to two data structures, doubly-linked lists and Patricia tries. In our implementations, only update operations perform CAS instructions; operations other than updates perform only reads of shared memory. Our doubly-linked list implements a novel specification that is designed to make it easy to use as a black box in a concurrent setting. In our doubly-linked list implementation, each process accesses the list via a cursor, which is an object in the process's local memory that is located at an item in the list. Our specification describes how updates affect cursors and how a process gets feedback about other processes' updates at the location of its cursor. We provide a detailed proof of correctness for our list implementation. We also give an amortized analysis for our list implementation, which is the first upper bound on amortized time complexity that has been proved for a concurrent doubly-linked list. In addition, we evaluate our list algorithms on a multi-core system empirically to show that they are scalable in practice. Our non-blocking Patricia trie implementation stores a set of keys, represented as bit strings, and allows processes to concurrently insert, delete and find keys. In addition, our implementation supports the replace operation, which deletes a key from the trie and adds a new key to the trie simultaneously. Since the correctness proof of our trie is similar to the correctness proof of our list implementation, we only provide a sketch of a correctness proof of our trie implementation here. We empirically evaluate our trie and compare our trie to some existing set implementations. Our empirical results show that our Patricia trie implementation consistently performs well under different scenarios. | |
dc.identifier.uri | http://hdl.handle.net/10315/30672 | |
dc.language.iso | en | |
dc.rights | Author owns copyright, except where explicitly noted. Please contact the author directly with licensing requests. | |
dc.subject | Computer science | |
dc.subject | Engineering | |
dc.subject.keywords | computer science | |
dc.subject.keywords | shared memory | |
dc.subject.keywords | data structure | |
dc.subject.keywords | shared data structure | |
dc.subject.keywords | concurrent data structure | |
dc.subject.keywords | concurrency | |
dc.subject.keywords | list | |
dc.subject.keywords | linked list | |
dc.subject.keywords | doubly-linked list | |
dc.subject.keywords | Patricia trie | |
dc.subject.keywords | tree | |
dc.subject.keywords | binary tree | |
dc.subject.keywords | non-blocking | |
dc.subject.keywords | wait-free | |
dc.subject.keywords | lock-free | |
dc.subject.keywords | distributed computing | |
dc.subject.keywords | distributed system | |
dc.subject.keywords | complexity | |
dc.subject.keywords | analysis | |
dc.subject.keywords | amortized analysis | |
dc.subject.keywords | cursor | |
dc.subject.keywords | descriptor | |
dc.subject.keywords | info object | |
dc.subject.keywords | descriptor object | |
dc.subject.keywords | non-blocking data structure | |
dc.subject.keywords | empirical evaluation | |
dc.subject.keywords | experiments | |
dc.subject.keywords | correctness proof | |
dc.subject.keywords | proof | |
dc.subject.keywords | potential function | |
dc.subject.keywords | general approach | |
dc.subject.keywords | multiple changes | |
dc.subject.keywords | linearizable | |
dc.subject.keywords | linearizability | |
dc.subject.keywords | correctness condition | |
dc.subject.keywords | performance | |
dc.subject.keywords | abstract data structure | |
dc.subject.keywords | trie | |
dc.subject.keywords | novel sequential specification | |
dc.subject.keywords | sequential specification | |
dc.subject.keywords | black box | |
dc.subject.keywords | modular approach | |
dc.subject.keywords | modular | |
dc.subject.keywords | sequence | |
dc.subject.keywords | sequence of items | |
dc.subject.keywords | replace operation | |
dc.subject.keywords | point contention | |
dc.subject.keywords | quadtree | |
dc.subject.keywords | GIS | |
dc.subject.keywords | Geographic Information System | |
dc.subject.keywords | general technique | |
dc.subject.keywords | help | |
dc.subject.keywords | helping mechanism | |
dc.subject.keywords | robust | |
dc.subject.keywords | robust cursor | |
dc.subject.keywords | sorted | |
dc.subject.keywords | sorted list | |
dc.subject.keywords | ordered list | |
dc.subject.keywords | active cursor | |
dc.subject.keywords | multi-core system | |
dc.subject.keywords | multi-core | |
dc.subject.keywords | multicore machine | |
dc.subject.keywords | uniformly distributed keys | |
dc.subject.keywords | non-uniformly distributed keys | |
dc.subject.keywords | move | |
dc.subject.keywords | move operation | |
dc.subject.keywords | update operation | |
dc.subject.keywords | move cursor | |
dc.subject.keywords | algorithm | |
dc.subject.keywords | distributed algorithm | |
dc.subject.keywords | implementation | |
dc.subject.keywords | non-blocking implementation | |
dc.title | Non-Blocking Data Structures Handling Multiple Changes Atomically | |
dc.type | Electronic Thesis or Dissertation |
Files
Original bundle
1 - 1 of 1
Loading...
- Name:
- Shafiei_Niloufar_2015_PhD.pdf
- Size:
- 2.03 MB
- Format:
- Adobe Portable Document Format