├── .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 | 
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
--------------------------------------------------------------------------------