├── .gitignore ├── 07. Spin Locks and Contention.pdf ├── 08. Monitors and Blocking Synchronization.pdf ├── 09. Linked Lists - The Role of Locking.pdf ├── 11. Concurrent Stacks and Elimination.pdf ├── 13. Concurrent Hashing and Natural Parallelism.pdf ├── 14. Skiplists and Balanced Search.pdf ├── Articles ├── Data Structures in the Multicore Age.pdf ├── Is Multicore Hardware For General-Purpose Parallel Processing Broken.pdf ├── Real-world Concurrency.pdf ├── Scaling Synchronization in Multicore Programs.pdf ├── Software and the Concurrency Revolution.pdf ├── Solution of a Problem in Concurrent Programming Control.pdf ├── The Concurrency Challenge.pdf └── Turing Lecture - The Computer Science of Concurrency - The Early Years.pdf ├── Assignments ├── 01. Notion of a Monitor.pdf ├── 01. The Bakery Algorithm.pdf ├── 01. The Dekker Algorithm.pdf ├── 01. The Dining Philosophers Problem.pdf ├── 01. The Sleeping Barber Problem.pdf ├── 02. ABA Problem.pdf ├── 02. MCS Queue Lock.pdf ├── 03. Bitonic Counting Network.pdf └── 04. Elimination Backoff Stack.pdf ├── LICENSE ├── Presentations ├── 01. DDR, GDDR, HBM Memory.pdf └── 02. Leslie Lamport - Turing Lecture.pdf ├── Project ├── 01. Proposal.pdf ├── 02. Paper.pdf ├── 03. Implementation.pdf ├── 04. Presentation 1.pdf └── 05. Presentation 2.pdf ├── README.md └── Tutorials ├── 01. Fine-grained Locking.pdf ├── 02. Lock-based Stack.pdf ├── 03. N-ary Combining Tree.pdf ├── 04. Lock-based Array Queue.pdf ├── 05. N-gender Bathroom Lock.pdf └── 06. Savings Account.pdf /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled class file 2 | *.class 3 | 4 | # Log file 5 | *.log 6 | 7 | # BlueJ files 8 | *.ctxt 9 | 10 | # Mobile Tools for Java (J2ME) 11 | .mtj.tmp/ 12 | 13 | # Package Files # 14 | *.jar 15 | *.war 16 | *.nar 17 | *.ear 18 | *.zip 19 | *.tar.gz 20 | *.rar 21 | 22 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 23 | hs_err_pid* 24 | -------------------------------------------------------------------------------- /07. Spin Locks and Contention.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/07. Spin Locks and Contention.pdf -------------------------------------------------------------------------------- /08. Monitors and Blocking Synchronization.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/08. Monitors and Blocking Synchronization.pdf -------------------------------------------------------------------------------- /09. Linked Lists - The Role of Locking.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/09. Linked Lists - The Role of Locking.pdf -------------------------------------------------------------------------------- /11. Concurrent Stacks and Elimination.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/11. Concurrent Stacks and Elimination.pdf -------------------------------------------------------------------------------- /13. Concurrent Hashing and Natural Parallelism.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/13. Concurrent Hashing and Natural Parallelism.pdf -------------------------------------------------------------------------------- /14. Skiplists and Balanced Search.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/14. Skiplists and Balanced Search.pdf -------------------------------------------------------------------------------- /Articles/Data Structures in the Multicore Age.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/Articles/Data Structures in the Multicore Age.pdf -------------------------------------------------------------------------------- /Articles/Is Multicore Hardware For General-Purpose Parallel Processing Broken.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/Articles/Is Multicore Hardware For General-Purpose Parallel Processing Broken.pdf -------------------------------------------------------------------------------- /Articles/Real-world Concurrency.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/Articles/Real-world Concurrency.pdf -------------------------------------------------------------------------------- /Articles/Scaling Synchronization in Multicore Programs.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/Articles/Scaling Synchronization in Multicore Programs.pdf -------------------------------------------------------------------------------- /Articles/Software and the Concurrency Revolution.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/Articles/Software and the Concurrency Revolution.pdf -------------------------------------------------------------------------------- /Articles/Solution of a Problem in Concurrent Programming Control.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/Articles/Solution of a Problem in Concurrent Programming Control.pdf -------------------------------------------------------------------------------- /Articles/The Concurrency Challenge.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/Articles/The Concurrency Challenge.pdf -------------------------------------------------------------------------------- /Articles/Turing Lecture - The Computer Science of Concurrency - The Early Years.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/Articles/Turing Lecture - The Computer Science of Concurrency - The Early Years.pdf -------------------------------------------------------------------------------- /Assignments/01. Notion of a Monitor.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/Assignments/01. Notion of a Monitor.pdf -------------------------------------------------------------------------------- /Assignments/01. The Bakery Algorithm.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/Assignments/01. The Bakery Algorithm.pdf -------------------------------------------------------------------------------- /Assignments/01. The Dekker Algorithm.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/Assignments/01. The Dekker Algorithm.pdf -------------------------------------------------------------------------------- /Assignments/01. The Dining Philosophers Problem.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/Assignments/01. The Dining Philosophers Problem.pdf -------------------------------------------------------------------------------- /Assignments/01. The Sleeping Barber Problem.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/Assignments/01. The Sleeping Barber Problem.pdf -------------------------------------------------------------------------------- /Assignments/02. ABA Problem.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/Assignments/02. ABA Problem.pdf -------------------------------------------------------------------------------- /Assignments/02. MCS Queue Lock.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/Assignments/02. MCS Queue Lock.pdf -------------------------------------------------------------------------------- /Assignments/03. Bitonic Counting Network.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/Assignments/03. Bitonic Counting Network.pdf -------------------------------------------------------------------------------- /Assignments/04. Elimination Backoff Stack.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/Assignments/04. Elimination Backoff Stack.pdf -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020-21 Subhajit Sahu 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Presentations/01. DDR, GDDR, HBM Memory.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/Presentations/01. DDR, GDDR, HBM Memory.pdf -------------------------------------------------------------------------------- /Presentations/02. Leslie Lamport - Turing Lecture.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/Presentations/02. Leslie Lamport - Turing Lecture.pdf -------------------------------------------------------------------------------- /Project/01. Proposal.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/Project/01. Proposal.pdf -------------------------------------------------------------------------------- /Project/02. Paper.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/Project/02. Paper.pdf -------------------------------------------------------------------------------- /Project/03. Implementation.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/Project/03. Implementation.pdf -------------------------------------------------------------------------------- /Project/04. Presentation 1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/Project/04. Presentation 1.pdf -------------------------------------------------------------------------------- /Project/05. Presentation 2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/Project/05. Presentation 2.pdf -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | A Concurrent data structure is a particular way of storing and organizing 2 | data for access by multiple computing threads (or processes) on a computer. 3 | 4 | **Course**: Concurrent Data Structures, Monsoon 2020
5 | **Taught by**: Prof. Govindarajulu Regeti 6 | 7 |
8 | 9 | 10 | #### Programs (project) 11 | 12 | - [K-Compare Single-Swap](https://github.com/javaf/k-compare-single-swap) 13 | 14 | 15 | #### Reports 16 | 17 | - [Nonblocking k-compare-single-swap](https://gist.github.com/wolfram77/77758eb9f7d393598fc142d9559e5a5e) 18 | - [Concurrency in Distributed Systems, Leslie Lamport papers](https://gist.github.com/wolfram77/3507129650f2e56e00da013a7de93ddb) 19 | - [DDR, GDDR, HBM SDRAM Memory](https://gist.github.com/wolfram77/28da72ab511eacafbd55f3576fb03019) 20 | 21 | 22 | #### Exercises 23 | 24 | - [Dekker Algorithm](https://github.com/javaf/dekker-algorithm) 25 | - [Peterson Algorithm](https://github.com/javaf/peterson-algorithm) 26 | - [Bakery Algorithm](https://github.com/javaf/bakery-algorithm) 27 | - [Sleeping Barber Problem](https://github.com/javaf/sleeping-barber-problem) 28 | - [Dining Philosopher Problem](https://github.com/javaf/dining-philosophers-problem) 29 | - [Simple Semaphore](https://github.com/javaf/simple-semaphore) 30 | - [Monitor Example](https://github.com/javaf/monitor-example) 31 | 32 |
33 | 34 | - [Simple Reentrant Lock](https://github.com/javaf/simple-reentrant-lock) 35 | - [Simple Read Write Lock](https://github.com/javaf/simple-read-write-lock) 36 | - [FIFO Read Write Lock](https://github.com/javaf/fifo-read-write-lock) 37 | - [TAS Lock](https://github.com/javaf/tas-lock) 38 | - [TTAS Lock](https://github.com/javaf/ttas-lock) 39 | - [Backoff Lock](https://github.com/javaf/backoff-lock) 40 | - [Array Lock](https://github.com/javaf/array-lock) 41 | - [CLH Lock](https://github.com/javaf/clh-lock) 42 | - [MCS Lock](https://github.com/javaf/mcs-lock) 43 | - [Bathroom Lock](https://github.com/javaf/bathroom-lock) 44 | - [Savings Account](https://github.com/javaf/savings-account) 45 | 46 |
47 | 48 | - [Locked Queue](https://github.com/javaf/locked-queue) 49 | - [Array Queue](https://github.com/javaf/array-queue) 50 | - [Array Stack](https://github.com/javaf/array-stack) 51 | - [Backoff Stack](https://github.com/javaf/backoff-stack) 52 | - [Elimination Backoff Stack](https://github.com/javaf/elimination-backoff-stack) 53 | - [Coarse Set](https://github.com/javaf/coarse-set) 54 | - [Fine Set](https://github.com/javaf/fine-set) 55 | - [Optimistic Set](https://github.com/javaf/optimistic-set) 56 | 57 |
58 | 59 | - [Combining Tree](https://github.com/javaf/combining-tree) 60 | - [Bitonic Network](https://github.com/javaf/bitonic-network) 61 | - [Periodic Network](https://github.com/javaf/periodic-network) 62 | 63 | 64 | #### Books 65 | 66 | - [The Art of Multiprocessor Programming by Maurice Herlihy, Nir Shavit](https://github.com/mlearnf/the-art-of-multiprocessor-programming) 67 | - [The Art of Multiprocessor Programming: Concurrent Stacks and Elimination](https://gist.github.com/wolfram77/b11fbe5888f2f8c483c6d9c9fe1ef1a6) 68 | - [The Art of Multiprocessor Programming: Concurrent Hashing and Natural Parallelism](https://gist.github.com/wolfram77/78cd12e7974741c257cb134c2a4767dc) 69 | - [The Art of Multiprocessor Programming: Skiplists and Balanced Search](https://gist.github.com/wolfram77/933ab6a06975f00c6ff50d30ab486299) 70 | - [The Art of Multiprocessor Programming: Linked Lists: The Role of Locking](https://gist.github.com/wolfram77/4ccd18d495623c69d7348b392496b930) 71 | - [The Art of Multiprocessor Programming: Monitors and Blocking Synchronization](https://gist.github.com/wolfram77/67967f0d59f97fa34c1e73ba80076664) 72 | - [The Art of Multiprocessor Programming: Spin Locks and Contention](https://gist.github.com/wolfram77/db28f974dbc9a551637da86b1a312c9c) 73 | 74 | 75 | #### Research papers 76 | 77 | - [Nonblocking k-compare-single-swap](https://gist.github.com/wolfram77/0dc7ef397381b0d0bb33bd38331cb572) 78 | - [RISC-V offers simple, modular ISA](https://gist.github.com/wolfram77/333f712e250e3ef6fca913771f1c7a9e) 79 | - [Real-world Concurrency](https://gist.github.com/wolfram77/7e3201aa76545759d284b3ab2d910944) 80 | - [The Concurrency Challenge](https://gist.github.com/wolfram77/a0ed73c64f1954ff831a060be4c23092) 81 | - [Data Structures in the Multicore Age](https://gist.github.com/wolfram77/88b9d87dfcce95d7fd591f8c77be1c35) 82 | - [Software and the Concurrency Revolution](https://gist.github.com/wolfram77/c03196475788a7c3d000481dab6010da) 83 | - [Turing Lecture - The Computer Science of Concurrency - The Early Years](https://gist.github.com/wolfram77/cfb8376d29f7d2de04143fc5ce411bc6) 84 | - [Solution of a Problem in Concurrent Programming Control](https://gist.github.com/wolfram77/9e38862624bfb9875dcbaec25471e7e6) 85 | 86 | 87 | #### Articles 88 | 89 | - [High Bandwidth Memory](https://gist.github.com/wolfram77/880ee660a5e0968f94a2de2e359c8ecc) 90 | - [Hybrid Memory Cube](https://gist.github.com/wolfram77/1a2833c64926ff8a132ea199ebff3b3c) 91 | - [GDDR5 SDRAM](https://gist.github.com/wolfram77/7d3f475d2c7b648eaea227b0fd3abb46) 92 | - [GDDR4 SDRAM](https://gist.github.com/wolfram77/386612cf26022af2a3892cce68fd5698) 93 | - [DDR4 SDRAM](https://gist.github.com/wolfram77/c35bea3ead3cd4f438c9b9fd4dede9b2) 94 | - [DDR3 SDRAM](https://gist.github.com/wolfram77/24203bd7552e9f363102f236298d8a5e) 95 | - [DDR SDRAM](https://gist.github.com/wolfram77/5c000fd37d7320d9fe10ec5b2da1dab9) 96 | - [ECC memory](https://gist.github.com/wolfram77/391e3d8393319c8c80bcfdcd984098db) 97 | - [Vector processor](https://gist.github.com/wolfram77/cd09c908ce45bd9927001a2688e10d34) 98 | 99 |
100 |
101 | 102 | 103 | ### References 104 | 105 | - [Timeline of Computer History :: Computer History Museum](https://www.computerhistory.org/timeline/memory-storage/) 106 | 107 |
108 | 109 | > **Tip**: Use Adobe Acrobat Reader DC to save PDF if highlighting is not 110 | > visible on GitHub or other PDF viewers. 111 | 112 | ![](https://ga-beacon.deno.dev/G-4FTHWYCNMC:Ze0vK3cdTmSz-bzSssU1-Q/github.com/iiithf/concurrent-data-structures) 113 | -------------------------------------------------------------------------------- /Tutorials/01. Fine-grained Locking.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/Tutorials/01. Fine-grained Locking.pdf -------------------------------------------------------------------------------- /Tutorials/02. Lock-based Stack.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/Tutorials/02. Lock-based Stack.pdf -------------------------------------------------------------------------------- /Tutorials/03. N-ary Combining Tree.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/Tutorials/03. N-ary Combining Tree.pdf -------------------------------------------------------------------------------- /Tutorials/04. Lock-based Array Queue.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/Tutorials/04. Lock-based Array Queue.pdf -------------------------------------------------------------------------------- /Tutorials/05. N-gender Bathroom Lock.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/Tutorials/05. N-gender Bathroom Lock.pdf -------------------------------------------------------------------------------- /Tutorials/06. Savings Account.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iiithf/concurrent-data-structures/cab35a9cbbd9a469e3fcefdbc9da2e237de847f5/Tutorials/06. Savings Account.pdf --------------------------------------------------------------------------------