http://www.geeksforgeeks.org/archives/9102 discusses in details.
Mutex
is locking mechanism used to synchronize access to a resource.
Semaphore
is signaling mechanism.
Its up to to programmer if he/she wants to use binary semaphore in place of mutex.