|
ABSTRACT
This is a personal history of the early development of the monitor concept and its implementation in the programming language Concurrent Pascal. The paper explains how monitors evolved from the ideas of Dahl, Dijkstra, Hoare, and the author (1971--1973). At Caltech the author and his students developed and implemented Concurrent Pascal and used it to write several model operating systems (1974--1975). A portable implementation of Concurrent Pascal was widely distributed and used for system design (1976--1990). The monitor paradigm was also disseminated in survey papers and textbooks. The author ends the story by expressing his own mixed feelings about monitors and Concurrent Pascal.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
{Abrahams, 1978} Abrahams, P. W. Review of the Architecture of Concurrent Programs. Computing Reviews 19, Sept. 1978.
|
| |
2
|
|
| |
3
|
{Andrews, 1977} Andrews, G. R. and McGraw, J. R. Language features for process interaction. SIGPLAN Notices 12, Mar. 1977, pp. 114--127.
|
 |
4
|
|
| |
5
|
|
| |
6
|
{Appelbe, 1985} Appelbe, W. F. and Hansen, K. A survey of systems programming languages: concepts and facilities. Software---Practice and Experience 15, Feb. 1985, pp. 169--190.
|
 |
7
|
|
| |
8
|
{Bauer, 1976} Bauer, F. L. and Samelson, K. Language hierarchies and interfaces. Proceedings of an International Summer School at Marktoberdorf, Germany, July 23-August 2, 1975. Lecture Notes in Computer Science 46, New York: Springer-Verlag, 1976.
|
| |
9
|
{Bell, 1983} Bell, D. H., Kerridge, J. M., Simpson, D., and Willis, N. Parallel Programming---A Bibliography. New York: Wiley Heyden, 1983.
|
 |
10
|
|
| |
11
|
|
| |
12
|
{Bergland, 1981} Bergland, G. D. and Gordon, R. D., Eds. Software Design Strategies. Los Angeles: IEEE Computer Society, 1981.
|
| |
13
|
{Bernstein, 1981} Bernstein, A. J. and Ensor, J. R. A Modula based language supporting hierarchical development and verification. Software---Practice and Experience 11, Mar. 1981, pp. 237--255.
|
| |
14
|
|
 |
15
|
|
| |
16
|
{Bochmann,} Bochmann, G. V. and Joachim, T. The development and structure of an X.25 implementation. IEEE Transactions on Software Engineering 5, May 1979, pp. 429--439.
|
| |
17
|
|
| |
18
|
{Brinch Hansen, 1969} Brinch Hansen, P. RC 4000 Software: Multiprogramming System. Regnecentralen, Copenhagen, Denmark, April 1969; revised version in Brinch Hansen {1973b}, pp. 237--286.
|
| |
19
|
{Brinch Hansen, 1971a} Brinch Hansen, P. An outline of a course on operating system principles. Seminar on Operating Systems Techniques, Belfast, Northern Ireland, Aug. 1971. In Hoare {1972a}, pp. 29--36. Review: Computing Reviews, 26738, (1973).
|
 |
20
|
|
| |
21
|
{Brinch Hansen, 1971c} Brinch Hansen, P. Multiprogramming with monitors. Pittsburgh, PA: Carnegie-Mellon University, Nov. 1971. Privately circulated.
|
| |
22
|
{Brinch Hansen, 1972a} Brinch Hansen, P. A comparison of two synchronizing concepts. Acta Informatica 1, 1972, pp. 190--199. Submitted November 1971. Review: Computing Reviews, 26837, (1974).
|
 |
23
|
|
| |
24
|
{Brinch Hansen, 1973a} Brinch Hansen, P. A reply to comments on "A comparison of two synchronizing concepts." Acta Informatica 2, 1973, pp. 189--190.
|
| |
25
|
|
| |
26
|
{Brinch Hansen, 1973c} Brinch Hansen, P. On September 6, 1973, I sent Mike McKeag "a copy of a preliminary document that describes my suggestion for an extension of Pascal with concurrent processes and monitors" {McKeag 1991}. No longer available.
|
 |
27
|
|
| |
28
|
{Brinch Hansen, 1974a} Brinch Hansen, P. Concurrent Pascal: a programming language for operating system design. Information Science, Pasadena, CA: California Institute of Technology, Apr. 1974. Referenced in Silberschatz {1977}. No longer available.
|
| |
29
|
{Brinch Hansen, 1974b} Brinch Hansen, P. Deamy---a structured operating system. Information Science, Pasadena, CA: California Institute of Technology, May 1974. Referenced in Brinch Hansen {1975c}.
|
| |
30
|
{Brinch Hansen, 1974c} Brinch Hansen, P. A programming methodology for operating system design. Invited paper, Proceedings of the IFIP Congress 74, Aug. 1974, pp. 394--397. Amsterdam, The Netherlands: North-Holland. Review: Computing Reviews, 27985, 1975.
|
 |
31
|
|
| |
32
|
{Brinch Hansen, 1975a} Brinch Hansen, P. Concurrent Pascal report. Information Science, Pasadena, CA: California Institute of Technology, June 1975. Also in Brinch Hansen {1977b}, pp. 231--270.
|
| |
33
|
{Brinch Hansen, 1975b} Brinch Hansen, P. and Hartmann, A. C. Sequential Pascal report. Information Science, Pasadena, CA: California Institute of Technology, July 1975.
|
| |
34
|
{Brinch Hansen, 1975c} Brinch Hansen, P. The Solo operating system. Information Science, Pasadena, CA: California Institute of Technology, June--July 1975. Also in Software---Practice and Experience 6, April--June 1976, pp. 141--200; Brinch Hansen {1977b}, pp. 69--142. Review: Computing Reviews, 31363, 1977.
|
| |
35
|
{Brinch Hansen, 1975d} Brinch Hansen, P. Universal types in Concurrent Pascal. Information Processing Letters 3, Jul. 1975, pp. 165--166.
|
| |
36
|
{Brinch Hansen, 1975e} Brinch Hansen, P. Concurrent Pascal machine. Information Science, Pasadena, CA: California Institute of Technology, Oct. 1975. Also in Brinch Hansen {1977b}, pp. 271--297.
|
| |
37
|
{Brinch Hansen, 1975f} Brinch Hansen, P. A real-time scheduler. Information Science, Pasadena, CA: California Institute of Technology, Nov. 1975. Also in Brinch Hansen {1977b}, pp. 189--227.
|
| |
38
|
{Brinch Hansen, 1976a} Brinch Hansen, P. The job stream system. Information Science, Pasadena, CA: California Institute of Technology, Jan. 1976. Also in Brinch Hansen {1977b}, pp. 148--188.
|
| |
39
|
{Brinch Hansen, 1976b} Brinch Hansen, P. Concurrent Pascal implementation notes. Information Science, Pasadena, CA: California Institute of Technology, 1976. Referenced in Powell {1979}. No longer available.
|
| |
40
|
{Brinch Hansen, 1977a} Brinch Hansen, P. Experience with modular concurrent programming. IEEE Transactions on Software Engineering 3, Mar. 1977, pp. 156--159.
|
| |
41
|
|
| |
42
|
{Brinch Hansen, 1977c} Brinch Hansen, P. Network---a multiprocessor program. IEEE Computer and Software Applications Conference, Chicago, IL, Nov. 1977, pp. 336--340. Also in IEEE Transactions on Software Engineering 4, May 1978, pp. 194--199. Review: Computing Reviews, 33840, 1978.
|
| |
43
|
{Brinch Hansen, 1978a} Brinch Hansen, P. and Staunstrup, J. Specification and implementation of mutual exclusion. IEEE Transactions on Software Engineering 4, Sept. 1978, pp. 365--370.
|
 |
44
|
|
| |
45
|
{Brinch Hansen, 1978c} Brinch Hansen, P. A keynote address on concurrent programming. IEEE Computer Software and Applications Conference, Chicago, IL, Nov. 1978, pp. 1--6. Also in Computer 12, May 1979, pp. 50--56; Selected Reprints in Software, M. V. Zelkowitz, Ed., IEEE Computer Society, Los Angeles, CA, 1982, pp. 42--48. Review: Computing Reviews, 35247, 1979.
|
| |
46
|
{Brinch Hansen, 1978d} Brinch Hansen, P. Reproducible testing of monitors. Software---Practice and Experience 8, Nov.-Dec. 1978, pp. 721--729.
|
| |
47
|
{Brinch Hansen, 1980} Brinch Hansen, P. and Fellows, J. A. The Trio operating system. Computer Science Department, University of Southern California, Los Angeles, CA, June 1980. Also in Software---Practice and Experience 10, Nov. 1980, pp. 943--948. Review: Computing Reviews, 37637, 1981.
|
| |
48
|
{Brinch Hansen, 1981} Brinch Hansen, P. The design of Edison. Software---Practice and Experience 11, Apr. 1981, pp. 363--396.
|
| |
49
|
|
| |
50
|
|
| |
51
|
{Bryant, 1979} Bryant, R. E. and Dennis, J. B. Concurrent programming. In Wegner {1979}, pp. 584--610.
|
 |
52
|
|
| |
53
|
|
| |
54
|
{Coleman, 1979} Coleman, D., Gallimore, R. M., Hughes, J. W., and Powell, M. S. An assessment of Concurrent Pascal. Software---Practice and Experience 9, Oct. 1979, pp. 827--837. Also in Gehani {1988}, pp. 351--364.
|
| |
55
|
{Coleman, 1980} Coleman, D. Concurrent Pascal---an appraisal. In McKeag {1980}, pp. 213--227.
|
 |
56
|
|
| |
57
|
{Courtois, 1972} Courtois, P. J., Heymans, F., and Parnas. D. L. Comments on "A comparison of two synchronizing concepts." Acta Informatica 1, 1972, pp. 375--376.
|
| |
58
|
|
| |
59
|
{Dahl, 1972b} Dahl, O.-J., and Hoare, C. A. R. 1972b. Hierarchical program structures. In Dahl {1972a}, pp. 175--220.
|
| |
60
|
{Deitel, 1984} Deitel, H. M. An Introduction to Operating Systems. Revised first edition, Reading, MA: Addison-Wesley, 1984.
|
| |
61
|
{Dijkstra, 1965} Dijkstra, E. W. Cooperating sequential processes. Mathematical Department. Technological University, Eindhoven, The Netherlands, Sept. 1965. Also in Genuys {1968}, pp. 43--112.
|
 |
62
|
|
| |
63
|
{Dijkstra, 1971} Dijkstra, E. W. Hierarchical ordering of sequential processes. Acta Informatica 1, 1971, pp. 115--138. Also in Hoare {1972a}, pp. 72--93.
|
| |
64
|
{Discussion 1971} Discussion. Discussion of conditional critical regions and monitors. Seminar on Operating Systems Techniques, Belfast, Northern Ireland, Aug. 1971. In Hoare (1972a), pp. 110--113.
|
| |
65
|
{Dunman, 1982} Dunman, B. R., Schack, S. R., and Wood, P. T. A mainframe implementation of Concurrent Pascal. Software---Practice and Experience 12, Jan. 1982, pp. 85--90.
|
| |
66
|
|
| |
67
|
|
| |
68
|
{Genuys, 1968} Genuys, F., Ed. Programming Languages. New York: Academic Press, 1968.
|
| |
69
|
|
| |
70
|
{Graef, 1979} Graef, N., Kretschmer, H., Löhr, K.-P., and Morawetz, B. How to design and implement small time-sharing systems using Concurrent Pascal. Software---Practice and Experience 9, Jan. 1979, pp. 17--24.
|
| |
71
|
|
 |
72
|
|
| |
73
|
|
| |
74
|
|
 |
75
|
|
| |
76
|
{Hoare, 1971a} Hoare, C. A. R. Towards a theory of parallel programming. Queen's University, Belfast, Northern Ireland, Aug. 1971. Privately circulated. Not to be confused with Hoare {1971b} of the same title.
|
| |
77
|
{Hoare, 1971b} Hoare, C. A. R. Towards a theory of parallel programming. Seminar on Operating Systems Techniques, Belfast, Northern Ireland, Aug. 1971. In Hoare {1972a}, pp. 61--71. Also in Gries {1978}, pp. 202--214. Not to be confused with Hoare {1971a} of the same title.
|
| |
78
|
{Hoare, 1972a} Hoare, C. A. R. and Perrott, R. H., Eds. Operating Systems Techniques, Proceedings of a seminar at Queen's University, Belfast, Aug. 30--Sept. 3, 1971. New York: Academic Press, 1972.
|
| |
79
|
{Hoare, 1972b} Hoare, C. A. R. Proof of correctness of data representations. Acta Informatica 1, 1972, pp. 271--281. Submitted Feb. 1972. Also in Bauer {1976}, pp. 183--193; Gries {1978}, pp. 269--281; Hoare {1989}, pp. 103--115.
|
| |
80
|
{Hoare, 1973a} Hoare, C. A. R. A pair of synchronising primitives. On January 11, 1973, Hoare gave Jim Horning a copy of this undated, unpublished draft {Horning 1991}.
|
| |
81
|
{Hoare, 1973b} Hoare, C. A. R. A structured paging system. Computer Journal 16, Aug. 1973, pp. 209--214. Submitted Oct. 1972. Also in Hoare {1989}, pp. 133--151.
|
 |
82
|
|
| |
83
|
{Hoare, 1974b} Hoare, C. A. R. Hints on programming language design. In Computer Systems Reliability, C. Bunyan, Ed., Berkshire, England: Infotech International, 1974, pp. 505--534. Also in Wasserman {1980}, pp. 43--52; Hoare {1989}, pp. 193--216.
|
| |
84
|
{Hoare, 1976} Hoare, C. A. R. Hints on the design of a programming language for real-time command and control. In Real-time Software: International State of the Art Report, J. P. Spencer, Ed., Berkshire, England: Infotech International, 1976, pp. 685--699.
|
 |
85
|
|
| |
86
|
|
| |
87
|
{Holt, 1978} Holt, R. C., Graham, G. S., Lazowska, E. D., and Scott, M. A. Structured Concurrent Programming with Operating Systems Applications. Reading, MA: Addison-Wesley, 1978.
|
 |
88
|
|
| |
89
|
{Holt, 1983} Holt, R. C. Concurrent Euclid, the Unix System and Tunis. Reading, MA: Addison-Wesley, 1983.
|
 |
90
|
|
| |
91
|
{Horning, 1991} Horning, J. J. Personal communication, May 1991.
|
| |
92
|
|
| |
93
|
|
 |
94
|
|
| |
95
|
|
| |
96
|
|
| |
97
|
{Kaubisch, 1976} Kaubisch, W. H., Perrott, R. H., and Hoare, C. A. R. Quasiparallel programming. Software---Practice and Experience 6, July-Sept. 1976, pp. 341--356.
|
| |
98
|
{Keedy, 1978} Keedy, J. L. On structuring operating systems with monitors. Australian Computer Journal 10, Feb. 1978, pp. 23--27.
|
| |
99
|
{Kerridge, 1982} Kerridge, J. M. A Fortran implementation of Concurrent Pascal. Software---Practice and Experience 12, Jan. 1982, pp. 45--56.
|
 |
100
|
|
| |
101
|
|
 |
102
|
|
| |
103
|
|
| |
104
|
|
 |
105
|
|
| |
106
|
{Kruijer, 1982b} Kruijer, H. S. M. A multi-user operating system for transaction processing written in Concurrent Pascal. Software---Practice and Experience 12, May 1982, pp. 445--454.
|
| |
107
|
{Kuhn, 1981} Kuhn, R. H. and Padua, D. A., Eds. Parallel Processing. Los Angeles, CA: IEEE Computer Society, Aug. 1981.
|
 |
108
|
|
 |
109
|
|
| |
110
|
B Liskov , E Moss , A Snyder , R Atkinson , J C. Schaffert , T Bloom , R Scheifler, CLU reference manual, Springer-Verlag New York, Inc., New York, NY, 1984
|
 |
111
|
|
| |
112
|
{Löhr, 1977} Löhr, K.-P. Beyond Concurrent Pascal. SIGPLAN Notices 12, Nov. 1977, pp. 128--137.
|
| |
113
|
{Lynch, 1991} Lynch, W. C. Personal communication, Oct. 1991.
|
 |
114
|
|
| |
115
|
|
| |
116
|
{McKeag, 1991} McKeag, R. M. Personal communication, Aug. 1991.
|
| |
117
|
{Maddux, 1979} Maddux, R. A. and Mills, H. D. Review of The Architecture of Concurrent Programs. IEEE Computer 12, May 1979, pp. 102--103.
|
| |
118
|
{Mattson, 1980} Mattson, S. E. Implementation of Concurrent Pascal on LSI-11. Software---Practice and Experience 10, Mar. 1980, pp. 205--218.
|
| |
119
|
{Møller-Nielsen, 1984} Møller-Nielsen, P. and Staunstrup, J. Experiments with a multiprocessor. Computer Science Department, Aarhus University, Aarhus, Denmark, Nov. 1984.
|
| |
120
|
{Narayana, 1979} Narayana, K. T., Prasad, V. R., and Joseph, M. Some aspects of concurrent programming in CCNPascal. Software---Practice and Experience 9, Sept. 1979, pp. 749--770.
|
| |
121
|
{Neal, 1978} Neal, D. and Wallentine, V. Experiences with the portability of Concurrent Pascal. Software---Practice and Experience 8, May-June 1978, pp. 341--354.
|
| |
122
|
{Nehmer, 1979} Nehmer, J. The implementation of concurrency for a PL/I-like language. Software---Practice and Experience 9, Dec. 1979, pp. 1043--1057.
|
| |
123
|
{Nori, 1974} Nori, K. V., Ammann, U., Jensen, K., and Naegeli, H. H. The Pascal P compiler: implementation notes. Institut für Informatik, ETH, Zurich, Switzerland, Dec. 1974.
|
| |
124
|
|
 |
125
|
|
| |
126
|
|
| |
127
|
{Peterson, 1983} Peterson, J. L. and Silberschatz, A. Operating Systems Concepts. Reading, MA: Addison-Wesley, 1983.
|
| |
128
|
|
 |
129
|
|
| |
130
|
{Powell, 1979} Powell, M. S. Experience of transporting and using the Solo operating system. Software---Practice and Experience 9, Jul. 1979, pp. 561--570.
|
| |
131
|
{Ravn, 1982} Ravn, A. P. Use of Concurrent Pascal in systems programming teaching. Microprocessing and Microprogramming 10, 1982, pp. 33--35.
|
| |
132
|
|
| |
133
|
{Ringstöm, 1990} Ringstöm, J. Predula: a multi-paradigm parallel programming environment. Department of Computer and Information Science, Linköping University, Linköping, Sweden, Nov. 1990.
|
| |
134
|
{Roubine, 1980} Roubine, O. and Heliard, J.-C. Parallel processing in Ada. In McKeag {1980}, pp. 193--212. Also in Gehani {1988}, pp. 142--159.
|
| |
135
|
{Saib, 1983} Saib, S. H. and Fritz, R. E., Eds. The Ada Programming Language. Los Angeles, CA: IEEE Computer Society, 1983.
|
| |
136
|
|
| |
137
|
|
| |
138
|
{Shaw, 1981} Shaw, M., Ed. Alphard: Form and Content. New York: Springer-Verlag, 1981. Quotes: "The preliminary language report appeared as a ... technical report {in February 1978}. No final report was issued;" . . . "We curtailed development of the compiler in 1979 when it became clear that another iteration on the language design was necessary" (pp. 191 and 315).
|
| |
139
|
{Silberschatz, 1977} Silberschatz, A., Kieburtz, R. B., and Bernstein, A. J. Extending Concurrent Pascal to allow dynamic resource management. IEEE Transactions on Software Engineering 3, May 1977, pp. 210--217.
|
| |
140
|
|
 |
141
|
|
| |
142
|
|
| |
143
|
|
| |
144
|
|
| |
145
|
{Tsujino, 1984} Tsujino, Y., Ando, M., Araki, T., and Tohura, N. Concurrent C: a programming language for distributed multiprocessor systems. Software---Practice and Experience 14, Nov. 1984, pp. 1061--1078.
|
| |
146
|
{Turski, 1978} Turski, W. M. Computer Programming Methodology. Philadelphia, PA: Heyden, 1978.
|
| |
147
|
{Wasserman, 1980} Wasserman, A. I., Ed. Programming Language Design. Los Angeles, CA: IEEE Computer Society, Oct. 1980.
|
| |
148
|
{Wegner, 1979} Wegner, P., Ed. Research Directions in Software Technology. Cambridge, MA: MIT Press, 1979.
|
| |
149
|
{Welsh, 1979} Welsh, J. and Bustard, D. W. Pascal-Plus---another language for modular multiprogramming. Software---Practice and Experience 9, Nov. 1979, pp. 947--957.
|
| |
150
|
|
 |
151
|
|
| |
152
|
{Whiddett, 1983} Whiddett, R. J. Dynamic distributed systems. Software---Practice and Experience 13, Apr. 1983, pp. 355--371.
|
| |
153
|
|
| |
154
|
{White, 1976} White, J. E. A high-level framework for network-based resource sharing. National Computer Conference, Montvale, NJ: AFIPS Press, Jun. 1976, pp. 561--570.
|
| |
155
|
|
| |
156
|
{Wilson, 1988} Wilson, L. B. and Clark, R. G. Comparative Programming Languages. Reading, MA: Addison-Wesley, 1988.
|
| |
157
|
{Wirth, 1971} Wirth, N. The programming language Pascal. Acta Informatica 1, 1971, pp. 35--63.
|
| |
158
|
{Wirth, 1977} Wirth, N. Modula: a programming language for modular multiprogramming. Software---Practice and Experience 7, 1977, pp. 3--35. Also in Horowitz {1983b}, pp. 273--305.
|
| |
159
|
|
|