Provides a mechanism to regulate access to resources. Semaphores are more general than locks because they aren't tied to a particular scalar. They can have values other than zero or one, and they can be incremented or decremented by some specified number.