lecture 9 -- assignment 4 goals of the assignment 1. learn about producer-consumer problem (the implementation) and understand empirically about deadlocks (the experiment) 2. use inter-process operations (semaphores, signaling, shared memory) 3. manage and carry out a significant programming/debugging problem (planning, pacing, confidence) re: #2, you can use any language you like, i am not tied to you using the Unix/C conventions. (though, sample code is provided for C) subproblems: * implementing/understanding ring buffers * using the shared memory segment * using/understanding semaphores * interprocess comms (signals?) * formatting output * running the experiment * makefile/coordinating code runs recommendation: Make headway on understanding each piece separately before trying to bring it all together! In other words, create for yourself a set of small code modules that independently demonstrate to yourself your understanding of each piece of the problem. Then, tackle integration -- getting it all to work together. In other words, make sure you understand the pieces before you try to bring them together.