Note: I am not posting anything but a skeleton here because what I cover exactly will be largely dependant on questions. I may fill this in later with some details from the lecture.
Be familiar with the well-known problems: Dining philosophers, Readers-Writers, Producers-Consumers, etc. More importantly, understand how to walk through a concurrent algorithm to test it and find any mistakes. Also be able to walk through a given scenario and explain the result.
Understand and be ready to explain or test the satisfaction of:
In general, read pages 192-222 of the Dinosaur book.
Know the differences between counting and binary semaphores. Understand how they work at an implementation level, and how to use them to enforce safe access to shared resources. Be aware that binary semaphores and counting semaphores are different in terms of what happens if several processes are waiting. Understand that whether or not semaphores are FIFO is implementation dependant.
It also wouldn't hurt to have at least some idea how CCRs and Monitors would be implemented with semaphores.
Understand how they enforce access and why they are safer from user-error than semaphores. Know that await() will block until the condition is true, but while it blocks other processes can enter the region.
I'll walk through my solution (PDF) to the Unisex Bathroom Problem (PDF) from two years ago.
Understand the structure of a monitor. Conceptually, these are the easiest to work with since they are the highest-level construct. The easiest way I've found to think about them is as a class which is restricted to only one process using it at a time. Understand how wait and signal on condition variables works, and again remember that while a process is blocked on a wait, it is not considered to be "in" the monitor, so another process can enter.
Since this is the newest construct, I'll spend the most lecture time going over them. I will walk through the example on page 219 of the Dinosaur book, and show the structure of a semaphore implementation of a monitor (pg 220). I will also talk about the Searchers/Inserters/Deleters problem from 2001's homework 4 if there is time.
Stuart Morgan, 2003