Lectures, Assignments, and Exercises
2.1 proc
2.2 ipc
2.3 vm
2.4 fs
2.5 io
2.6 virt
2.7 sec
2.8 perf
2.9 Paper
2.10 Presentation
2.11 Midterm
2.12 Final

2.2 ipc

This exercise is optional. Refer to the exercise policy for details.
Implement a threaded multi-consumer/multi-producer queue using a finite ring buffer and the POSIX threading API for mutexes. Parameterize your implementation (number of consumers, producers, size of queue, etc) such that you can experiment on it. Discover parameters that always (100%), never (0%), randomly (50%), mostly (75%), and infrequently (25%) end in deadlock.