|
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