|
1 | 1 | # Complementary Programs for course "Linux Kernel Internals"
|
2 | 2 |
|
| 3 | +This distribution is a collection of programs that are generally unrelated, |
| 4 | +except in that they all deal with the concurrent programming. The main |
| 5 | +purpose of these programs is to be illustrative and educational. |
| 6 | + |
3 | 7 | ## Project Listing
|
4 |
| -- [tpool](tpool/): A lightweight thread pool. |
5 |
| -- [tinync](tinync/): A tiny `nc` implementation using coroutine. |
6 |
| -- [fiber](fiber/): A user-level thread (fiber) using `clone` system call. |
7 |
| -- [picosh](picosh/): A minimalist UNIX shell. |
8 |
| -- [httpd](httpd/): A multi-threaded web server. |
9 |
| -- [ringbuffer](ringbuffer/): A lock-less ring buffer. |
10 |
| -- [mbus](mbus/): A concurrent message bus. |
11 |
| -- [spmc](spmc/): A concurrent single-producer/multiple-consumer queue. |
12 |
| -- [map-reduce](map-reduce/): word counting using MapReduce. |
13 |
| -- [mpmc](mpmc/): A multiple-producer/multiple-consumer (MPMC) queue. |
14 |
| -- [channel](channel/): A Linux futex based Go channel implementation. |
15 |
| -- [redirect](redirect/): An I/O multiplexer to monitor stdin redirect using `timerfd` and `epoll`. |
16 |
| -- [rcu\_list](rcu_list/): A concurrent linked list utilizing the simplified RCU algorithm. |
17 |
| -- [ringbuf\_shm](ringbuf_shm/): An optimized lock-free ring buffer with shared memory. |
18 |
| -- [qsbr](qsbr/): An implementation of Quiescent state based reclamation (QSBR). |
19 |
| -- [preempt\_sched](preempt_sched/): A preemptive userspace multitasking based on a SIGALRM signal. |
| 8 | +* [Coroutine](https://en.wikipedia.org/wiki/Coroutine) |
| 9 | + - [tinync](tinync/): A tiny `nc` implementation using coroutine. |
| 10 | + - [fiber](fiber/): A user-level thread (fiber) using `clone` system call. |
| 11 | + - [preempt\_sched](preempt_sched/): A preemptive userspace multitasking based on a SIGALRM signal. |
| 12 | +* Multi-threading Paradigms |
| 13 | + - [tpool](tpool/): A lightweight thread pool. |
| 14 | +* [Producer–consumer problem](https://en.wikipedia.org/wiki/Producer%E2%80%93consumer_problem) |
| 15 | + - [spmc](spmc/): A concurrent single-producer/multiple-consumer queue. |
| 16 | + - [mpmc](mpmc/): A multiple-producer/multiple-consumer (MPMC) queue. |
| 17 | + - [channel](channel/): A Linux futex based Go channel implementation. |
| 18 | +* [Lock-Free](https://en.wikipedia.org/wiki/Non-blocking_algorithm) Data Structure |
| 19 | + - [ringbuffer](ringbuffer/): A lock-less ring buffer. |
| 20 | + - [ringbuf\_shm](ringbuf_shm/): An optimized lock-free ring buffer with shared memory. |
| 21 | + - [mbus](mbus/): A concurrent message bus. |
| 22 | +* [Synchronization](https://en.wikipedia.org/wiki/Synchronization_(computer_science)) |
| 23 | + - [rcu\_list](rcu_list/): A concurrent linked list utilizing the simplified RCU algorithm. |
| 24 | + - [qsbr](qsbr/): An implementation of Quiescent state based reclamation (QSBR). |
| 25 | +* Applications |
| 26 | + - [httpd](httpd/): A multi-threaded web server. |
| 27 | + - [map-reduce](map-reduce/): word counting using MapReduce. |
| 28 | + - [redirect](redirect/): An I/O multiplexer to monitor stdin redirect using `timerfd` and `epoll`. |
| 29 | + - [picosh](picosh/): A minimalist UNIX shell. |
20 | 30 |
|
21 | 31 | ## License
|
22 | 32 |
|
|
0 commit comments