The monitor is an extension of early operating system designs. Early operating systems provided resource control by running users programs uninterruptedly, by having complete control of I/O and by having exclusive use of some parts of memory. This gothic monitor may be provided as a more decentralized tool for the applications programmer: A monitor is a collection of procedures with private data, plus an initialization routine. Entry to the procedures in a monitor is defined to be mutually exclusive (i.e. a strict monitor has only one client at a time). To proved synchronisation between processes calling these routines, are a pair of routines like semaphores. Since the monitor has private (safe) data to count events with, we only require the blocking and waking functionality. This is shown in figure #fnmon#367>.

Figure: Monitors