there is a set of processes and only one of them is able to access a given resource or perform a given function at any time.
only allowing one process to access a shared-resource at a time.
messages and delay are necessary to get granted the permission to access the resource (this means entering the critical section) or to release the permission (exiting it)