CSCI 356 - Operating Systems - Fall 2012
Programming Assignment #2
Learn to implement a semaphore using a monitor construct with a condition variable. This assignment may be implemented using C, Java, or Python.
Linux Tutorial: POSIX Threads (for C programming)
Note that compilation on Linux requires passing the
-lpthread switch to
If using Java, note that the monitor is implemented by declaring both the
release methods to be synchronized, then calling the built-in
wait() function inside a loop that checks the counter variable (in the
acquire method). In the
release method, be sure to call the built-in
notifyAll() function after incrementing the counter.
In Python, use
threading.Condition to implement the monitor.
Implement a semaphore class (or, if using C, a set of functions that operate on a shared semaphore variable) using a monitor. Verify that your solution works by testing it with the Dining Philosophers problem, following the example code.
Note that this assignment is intentionally under-specified. I will be out of town on Monday, October 15th, and Wednesday, October 17th. I want you to practice approaching a difficult programming assignment and see what forward progress you can make before I return. We will continue working on this assignment during the week of October 22nd.
You MAY work together, as usual.