only allowing one process to access a shared-resource at a time.
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.
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)