This is a brilliant free textbook about synchronization for concurrent programming. It doesn't only present the essential knowledges, problems and solutions, but also the underlying patterns that are useful for synchronization problems.
Interesting, I was just tackling semaphores on Windows this past month. The result was an open source class, written in VB6, that uses semaphores to communicate across the user boundary in Windows. (<a href="http://www.vbforums.com/showthread.php?t=634635" rel="nofollow">http://www.vbforums.com/showthread.php?t=634635</a>)
Thanks for the kind words about the book! If you are interested in this topic, there is a video of me giving a talk about it at greenteapress.com/semaphores. The thread simulator I demonstrate in the talk is available from allendowney.com/swampy. As always, comments are welcome.
Downey's PDF is presented as a series of puzzles with hints and answers. It makes for an enjoyable few hours sharpening your concurrency skills. Covers much more ground than the "igloo book". Uses Python and C for examples -- much nicer than reading old-style Pascal code.
Great material, I'm studying operating systems and this really helps me. It'd be great to find similar material about other OS topics(scheduling, I/O...).