Here are some great emails from Linus Torvalds, writing specifically on semaphores.

I have mentioned in the past that among the concurrency constructs I know, semaphores are my weakest link – I can mutex-lock all day but you make me semaphore, and I get pretty baffled. Part of that is the counting semaphore model, and part of it is… Well I don’t enough to even comment otherwise.

These emails are interesting to read, and goes at least part of explaining a semaphore.