Monitors: An Operating System Structuring Concept

  • C. A. R. Hoare


This paper develops Brinch Hansen’s concept of a monitor as a method of structuring an operating system. It introduces a form of synchronization, describes a possible method of implementation in terms of semaphores and gives a suitable proof rule. Illustrative examples include a single resource scheduler, a bounded buffer, an alarm clock, a buffer pool, a disk head optimizer, and a version of the problem of readers and writers.


Proof Rule Signal Operation Alarm Clock Procedure Release Buffer Pool 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. Brinch Hansen, P. 1972a. Structured multiprogramming. Communications of the ACM 15, 7 (July), 574–578.CrossRefGoogle Scholar
  2. Brinch Hansen. P. 1972b. A comparison of two synchronizing concepts. Acta Informatica 1, 190–199,CrossRefGoogle Scholar
  3. Brinch Hansen, P. 1973. Operating System Principles. Prentice-Hall, Englewood Cliffs, NJ, (July).zbMATHGoogle Scholar
  4. Courtois, P.J., Heymans, F. and Parnas, D.L. 1971a. Concurrent control with readers and writers. Communications of the ACM 14, 10 (October), 667–668.CrossRefGoogle Scholar
  5. Courtois, P.J., Heymans, F. and Parnas, D.L. 1971b. Comments on “A comparison of two synchronizing concepts.” Acta Informatica1, 375–376.CrossRefGoogle Scholar
  6. Dahl, O.-J. 1972. Hierarchical program structures. In Structured Programming, O.-J. Dahl, E.W. Dijkstra and C.A.R. Hoare, Eds., Academic Press, New York, 175–220.Google Scholar
  7. Dijkstra, E.W. 1968a. Cooperating sequential processes. In Programming Languages, F. Genuys, Ed., Academic Press, New York, 43–112.Google Scholar
  8. Dijkstra, E.W. 1968b. A constructive approach to the problem of program correctness. BIT8, 174–186.zbMATHCrossRefGoogle Scholar
  9. Dijkstra, E.W. 1972a. Hierarchical ordering of sequential processes. In Operating Systems Techniques, C.A.R. Hoare and R.H. Perrott, Eds., Academic Press, New York, 72–93.Google Scholar
  10. Dijkstra, E.W. 1972b. Information streams sharing a finite buffer. Information Processing Letters 1, 5 (October), 179–180.CrossRefGoogle Scholar
  11. Dijkstra, E.W. 1972c. A class of allocation strategies inducing bounded delays only. AFIPS Spring Joint Computer Conference 40, AFIPS Press, Montvale, NJ, 933–936.Google Scholar
  12. Hoare, C.A.R. 1972a. Towards a theory of parallel programming. In Operating Systems Techniques, C.A.R. Hoare and R.H. Perrott, Eds., Academic Press, New York, 61–71.Google Scholar
  13. Hoare, C.A.R. 1972b. Proof of correctness of data representations. Acta Informatica1, 271–281.zbMATHCrossRefGoogle Scholar
  14. Hoare, C.A.R. 1973. A structured paging system. Computer Journal 16, 3 (August), 209–215.zbMATHCrossRefGoogle Scholar
  15. Wirth, N. 1971. The programming language Pascal. Acta Informatica1, 35–63.zbMATHCrossRefGoogle Scholar

Copyright information

© Springer Science+Business Media New York 1974

Authors and Affiliations

  • C. A. R. Hoare

There are no affiliations available

Personalised recommendations