This paper introduces the concept of monitors as a method for structuring an operating system, focusing on synchronization and resource allocation. Monitors are described as a form of synchronization primitive, implemented using semaphores, and include proof rules for their correctness. The paper provides several examples to illustrate the use of monitors, such as a single resource scheduler, a bounded buffer, an alarm clock, a buffer pool, a disk head optimizer, and a version of the readers and writers problem. The author discusses the implementation of monitors using semaphores, the introduction of condition variables, and the importance of mutual exclusion to ensure correct behavior. The paper also explores the use of scheduled waits for more complex scheduling strategies and concludes with a discussion on the potential benefits and challenges of using monitors in operating systems.This paper introduces the concept of monitors as a method for structuring an operating system, focusing on synchronization and resource allocation. Monitors are described as a form of synchronization primitive, implemented using semaphores, and include proof rules for their correctness. The paper provides several examples to illustrate the use of monitors, such as a single resource scheduler, a bounded buffer, an alarm clock, a buffer pool, a disk head optimizer, and a version of the readers and writers problem. The author discusses the implementation of monitors using semaphores, the introduction of condition variables, and the importance of mutual exclusion to ensure correct behavior. The paper also explores the use of scheduled waits for more complex scheduling strategies and concludes with a discussion on the potential benefits and challenges of using monitors in operating systems.