- " a concurrency construct that contains both the data and procedures to perform allocation of a particular serially reusable shared resource or group of resources"
- only one process is allowed to enter the monitor
- if a process calls the monitor and a resource is already allocated the monitor calls wait (outside of monitor)
- when a process releases a resource the monitor calls signal (and grants the resource to a process waiting for it)
- it gives priority to waiting versus new