Semaphore

If I create a semaphore and then I fork a number of child processes then all the child process use that same semaphore.
Since the process address spaces are different rfom each other then how all the child process are able to access the same semaphore?
I understand that semaphore/mutex is at os level out of process context.
Am I correct?
Where in which part of type/memory is this semaphore located?