Mutexes are used to restrict access by multiple threads to a single resource. Mutexes are mutual-exclusive locks. If one thread owns the lock, then another thread must wait until the lock is released.
Semaphores are more of a funnel gate which allows up to X number of threads to access a shared resource before blocking access.
Semaphores start out with a maximum lock count. When a thread locks the semaphore this lock count is reduced until it reaches zero. When no more locks are available and a thread attempts to obtain one, that thread is blocked until one of the other threads releases its lock.
Naturally a semaphore with a max lock count of 1 is considered a mutex.
Maggotboy