The Invention of Concurrent Programming

  • Per Brinch Hansen
Chapter

Abstract

The author selects classic papers written by the computer scientists who made the major breakthroughs in concurrent programming. These papers cover the pioneering era of the field from the semaphores of the mid 1960s to the remote procedure calls of the late 1970s. The author summarizes the classic papers and puts them in historical perspective.

Keywords

Programming Language Critical Section Mutual Exclusion Concurrent Programming Assembly Language 
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.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

Bibliography

  1. 1.
    • G. R. Andrews and F. B. Schneider 1983. Concepts and notations for concurrent programming. Computing Surveys 15, 1 (March), 3–43.MATHGoogle Scholar
  2. 2.
    • G. R. Andrews 1991. Concurrent Programming: Principles and Practice. Benjamin/Cummings, Redwood City, CA.Google Scholar
  3. 3.
    ° G. R. Andrews 1993. Reviewers’ comments. In P. Brinch Hansen, Monitors and Concurrent Pascal: a personal history. SIGPLAN Notices 28, 3 (March 1993), 1–35.Google Scholar
  4. 4.
    • H. E. Bal, J. G. Steiner and A. S. Tanenbaum 1989. Programming languages for distributed computing systems. A CM Computing Surveys 21, (September), 261–322.Google Scholar
  5. 5.
    • J. Bishop 1986. Data Abstraction in Programming Languages. Addison-Wesley, Reading, MA.Google Scholar
  6. 6.
    • J. Boyle, R. Butler, Terrence Disz, Barnett Glickfeld, Ewing Lusk, Ross Overbeek, James Patterson and Rick Stevens 1987. Portable Programs for Parallel Processors. Holt, Rinehart and Winston, New York.Google Scholar
  7. 7.
    ° P. Brinch Hansen 1967a. The logical structure of the RC 4000 computer. BIT 7, 3, 191–199.Google Scholar
  8. 8.
    ° P. Brinch Hansen 1967b. The RC 4000 real-time control system at Pulawy. BIT 7, 4. 279–288.Google Scholar
  9. 9.
    ° P. Brinch Hansen 1968. The Structure of the RC 4000 Monitor. Regnecentralen, Copenhagen, Denmark (February).Google Scholar
  10. 10.
    * P. Brinch Hansen 1969. RC 4000 Software: Multiprogramming System. Regnecentralen, Copenhagen, Denmark, (April). Article 3. Google Scholar
  11. 11.
    • P. Brinch Hansen 1970. The nucleus of a multiprogramming system. Communications of the ACM 13, 4 (April), 238–241, 250.MATHGoogle Scholar
  12. 12.
    * P. Brinch Hansen 1971a. An outline of a course on operating system principles. In C. A. R. Hoare and R. H. Perrott Eds. 1972, Operating Systems Techniques, Proceedings of a Seminar at Queen’s University, Belfast, Northern Ireland, August-September 1971, Academic Press, New York, 29–36. Article 6. Google Scholar
  13. 13.
    • P. Brinch Hansen 1972a. A comparison of two synchronizing concepts. Acta Informatica 1, 3 (1972), 190–199.Google Scholar
  14. 14.
    * P. Brinch Hansen 1972b. Structured multiprogramming. Communications of the ACM 15, 7 (July), 574–578. Article 7. Google Scholar
  15. 15.
    • P. Brinch Hansen 1973a. Testing a multiprogramming system. Software-Practice and Experience 3, 2 (April-June), 145–150.Google Scholar
  16. 16.
    • P. Brinch Hansen 1973b. Operating System Principles. Prentice-Hall, Englewood Cliffs, NJ (May).MATHGoogle Scholar
  17. 17.
    * P. Brinch Hansen 1973c. Class Concept. In Operating System Principles, P. Brinch Hansen, Prentice Hall, Englewood Cliffs, NJ, (July 1973), 226–232. Article 8. Google Scholar
  18. 18.
    ° P. Brinch Hansen 1973d. 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” (R. M. McKeag, letter to P. Brinch Hansen, July 3, 1991). No longer available.Google Scholar
  19. 19.
    ° P. Brinch Hansen 1973e. Concurrent programming concepts. ACM Computing Surveys 5, 4, (December), 223–245.MATHGoogle Scholar
  20. 20.
    ° P. Brinch Hansen 1974a. Concurrent Pascal: a programming language for operating system design. Information Science, California Institute of Technology, Pasadena, CA, (April). (Referenced in A. Silberschatz, R. B. Kieburtz and A. J. Bernstein 1977. Extending Concurrent Pascal to allow dynamic resource management. IEEE Transactions on Software Engineering 3, (May), 210–217.)Google Scholar
  21. 21.
    * P. Brinch Hansen 1975a. The programming language Concurrent Pascal. IEEE Transactions on Software Engineering 1, 2 (June), 199–207. Original version: Information Science, California Institute of Technology, Pasadena, CA, (November 1974). Article 10. Google Scholar
  22. 22.
    * P. Brinch Hansen 1975b. The Solo operating system: a Concurrent Pascal program. Information Science, California Institute of Technology, Pasadena, CA, (June-July). Also in Software-Practice and Experience 6, 2 (April-June 1976), 141–149. Article 11. Google Scholar
  23. 23.
    * P. Brinch Hansen 1975c. The Solo operating system: processes, monitors and classes. Information Science, California Institute of Technology, Pasadena, CA, (June-July). Also in Software-Practice and Experience 6, 2 (April-June 1976), 165–200. Article 12. Google Scholar
  24. 24.
    ° P. Brinch Hansen 1975d. Concurrent Pascal report. Information science, California Institute of Technology, Pasadena, CA, (June).Google Scholar
  25. 24a.
    Also in P. Brinch Hansen 1977b, The Architecture of Concurrent Programs, Prentice-Hall, Englewood Cliffs, NJ, (July), 231–270.MATHGoogle Scholar
  26. 25.
    ° P. Brinch Hansen and A. C. Hartmann 1975e. Sequential Pascal report. Information science, California Institute of Technology, Pasadena, CA, (July).Google Scholar
  27. 26.
    ° P. Brinch Hansen 1975f. Concurrent Pascal machine. Information Science, California Institute of Technology, Pasadena, CA, (October).Google Scholar
  28. 26a.
    Also in P. Brinch Hansen 1977b, The Architecture of Concurrent Programs, Prentice-Hall, Englewood Cliffs, NJ, (July), 271–297.MATHGoogle Scholar
  29. 27.
    ° P. Brinch Hansen 1976a. Innovation and trivia in program engineering. Guest Editorial, Software-Practice and Experience 6, 2 (April-June), 139–140.Google Scholar
  30. 28.
    ° P. Brinch Hansen 1976b. Concurrent Pascal implementation notes. Information Science, California Institute of Technology, Pasadena, CA. No longer available. (Referenced in M. S. Powell, Experience of transporting and using the Solo operating system. Software-Practice and Experience 9, 7 (July 1979), 561–570.)Google Scholar
  31. 29.
    • P. Brinch Hansen 1977a. Experience with modular concurrent programming, IEEE Transactions on Software Engineering 3, 2 (March), 156–159.Google Scholar
  32. 30.
    • P. Brinch Hansen 1977b. The Architecture of Concurrent Programs. PrenticeHall, Englewood Cliffs, NJ, (July).MATHGoogle Scholar
  33. 31.
    * P. Brinch Hansen 1977c. Design Principles. In P. Brinch Hansen, The Architecture of Concurrent Programs, Prentice Hall, Englewood Cliffs, NJ, (July), 3–14. Article 13. Google Scholar
  34. 32.
    • P. Brinch Hansen 1978a. Network: A multiprocessor program. IEEE Transactions on Software Engineering 4, 3 (May), 194–199.MATHGoogle Scholar
  35. 33.
    • P. Brinch Hansen and J. Staunstrup 1978b. Specification and implementation of mutual exclusion. IEEE Transactions on Software Engineering 4, 4 (September), 365–370.MATHGoogle Scholar
  36. 34.
    * P. Brinch Hansen 1978c. Distributed Processes: a concurrent programming concept. Communications of the ACM 21, 11 (November), 934–941. Article 16. MATHGoogle Scholar
  37. 35.
    • P. Brinch Hansen 1978d. A keynote address on concurrent programming. IEEE Computer Software and Applications Conference, Chicago, IL, (November), 1–6. Also in Computer 12, 5 (May 1979), 50–56.Google Scholar
  38. 36.
    • P. Brinch Hansen 1978e. Reproducible testing of monitors. Software-Practice and Experience 8, 6 (November-December), 721–729.MATHGoogle Scholar
  39. 37.
    • P. Brinch Hansen 1979. The end of a heroic era. In P. Wegner Ed. Research Directions in Software Technology, MIT Press, Cambridge, MA, 646–649.Google Scholar
  40. 38.
    • P. Brinch Hansen and J. A. Fellows 1980. The Trio operating system. Software-Practice and Experience 10, 11 (November), 943–948.Google Scholar
  41. 39.
    • P. Brinch Hansen 1981. The design of Edison. Software-Practice and Experience 11, 4 (April), 363–396.Google Scholar
  42. 40.
    * P. Brinch Hansen 1987a. Joyce-A programming language for distributed systems. Software-Practice and Experience 17, 1 (January), 29–50. Article 17. MATHGoogle Scholar
  43. 41.
    • P. Brinch Hansen 1987b. A Joyce implementation. Software-Practice and Experience 17, 4 (April 1987), 267–276.MATHGoogle Scholar
  44. 42.
    ° P. Brinch Hansen and A. Rangachari 1988. Joyce performance on a multiprocessor. School of Computer and Information Science. Syracuse University, NY, (September).Google Scholar
  45. 43.
    • P. Brinch Hansen 1989a. The Joyce language report. Software-Practice and Experience 19, 6 (June), 553–578.MATHGoogle Scholar
  46. 44.
    • P. Brinch Hansen 1989b. A multiprocessor implementation of Joyce. Software-Practice and Experience 19, 6 (June), 579–592.MATHGoogle Scholar
  47. 45.
    • P. Brinch Hansen 1990. The nature of parallel programming. In M. A. Arbib and J. A. Robinson Eds., Natural and Artificial Parallel Computation, MIT Press, Cambridge, MA, 31–46.Google Scholar
  48. 46.
    • P. Brinch Hansen 1993a. Monitors and Concurrent Pascal: a personal history. SIGPLAN Notices 28, 3 (March), 1–35.Google Scholar
  49. 46a.
    Also in T. J. Bergin and R. G. Gibson Eds. 1996, History of Programming Languages II, Addison-Wesley Publishing, Reading, MA, 121–172.Google Scholar
  50. 47.
    • P. Brinch Hansen 1993b. Model programs for computational science: a programming methodology for multicomputers. Concurrency-Practice and Experience 5, 5 (August), 407–423.Google Scholar
  51. 48.
    • P. Brinch Hansen 1993c. Parallel cellular automata: a model program for computational science. Concurrency-Practice and Experience 5, 5(August), 425–448.Google Scholar
  52. 49.
    ° P. Brinch Hansen 1993d. Letter to D. L. Parnas, (December 17).Google Scholar
  53. 50.
    • P. Brinch Hansen 1994a. Do hypercubes sort faster than tree machines? Concurrency-Practice and Experience 6, 2 (April), 143–151.Google Scholar
  54. 51.
    • P. Brinch Hansen 1994b. The programming language SuperPascal. Software-Practice and Experience 24, 5 (May), 467–483.Google Scholar
  55. 52.
    * P. Brinch Hansen 1994c. SuperPascal-A publication language for parallel scientific computing. Concurrency-Practice and Experience 6, 5 (August), 461–483. Article 18. Google Scholar
  56. 53.
    • P. Brinch Hansen 1994d. Interference control in SuperPascal-a block-structured parallel language. The Computer Journal 37, 5, 399–406.Google Scholar
  57. 54.
    • P. Brinch Hansen 1995a. Studies in Computational Science: Parallel Programming Paradigms. Prentice Hall, Englewood Cliffs, NJ, (March).Google Scholar
  58. 55.
    * P. Brinch Hansen 1995b. Efficient parallel recursion, SIGPLAN Notices 30, 12 (December), 9–16. Article 19. Google Scholar
  59. 56.
    • P. Brinch Hansen 1996. The Search for Simplicity: Essays in Parallel Programming. IEEE Computer Society Press, Los Alamitos, CA, (April).Google Scholar
  60. 57.
    • P. Brinch Hansen 1999. Java’s insecure parallelism. SIGPLAN Notices 34, 4 (April), 38–45.Google Scholar
  61. 58.
    • P. Brinch Hansen 2000. The evolution of operating systems. In P. Brinch Hansen Ed. 2001, Classic Operating Systems: From Batch Processing to Distributed Systems, Springer-Verlag, New York, (January), 1–34.Google Scholar
  62. 59.
    • P. Brinch Hansen Ed. 2001. Classic Operating Systems: From Batch Processing to Distributed Systems. Springer-Verlag, New York, (January).Google Scholar
  63. 60.
    • C. Bron 1972. Allocation of virtual store in the THE multiprogramming system. In C. A. R. Hoare and R. H. Perrott Eds., Operating Systems Techniques, Academic Press, New York, 168–184.Google Scholar
  64. 61.
    • R. H. Campbell and A. N. Habermann 1974. The specification of process synchronization by path expressions. Lecture Notes in Computer Science 16, SpringerVerlag, New York, 89–102.Google Scholar
  65. 62.
    • N. Carriero and D. Gelernter 1989. Linda in context. Communications of the ACM 32, 4 (April), 444–458.Google Scholar
  66. 63.
    • R. S. Cok 1991. Parallel Programs for the Transputer. Prentice Hall, Englewood Cliffs, NJ.Google Scholar
  67. 64.
    • M. I. Cole 1989. Algorithmic Skeletons: Structured Management of Parallel Computation. MIT Press, Cambridge, MA.MATHGoogle Scholar
  68. 65.
    • D. Coleman 1980. Concurrent Pascal-an appraisal. In R. M. McKeag and A. M. Macnaghten Eds., On the Construction of Programs, Cambridge University Press, New York, 213–227.Google Scholar
  69. 66.
    ° Cosine Report 1971, An Undergraduate Course on Operating Systems Principles, P. J. Denning, J. B. Dennis, B. Lampson, A. N. Haberman, R. R. Muntz and D. Tsichritzis Eds., Commission on Education, National Academy of Engineering, Washington, DC, (June).Google Scholar
  70. 67.
    • P. J. Courtois, F. Heymans and D. L. Parnas 1971. Concurrent control with “readers” and “writers.” Communications of the ACM 14, 10 (October), 667–668.Google Scholar
  71. 68.
    ° O.-J. Dahl and K. Nygaard 1963. Preliminary presentation of the Simula language (as of May 18, 1963) and some examples of network descriptions. Norwegian Computing Center, Oslo, Norway.Google Scholar
  72. 69.
    • O.-J. Dahl and C. A. R. Hoare 1972. Hierarchical program structures. In O.-J. Dahl, E. W. Dijkstra and C. A. R. Hoare, Eds., Structured Programming, Academic Press, New York, 175–220.Google Scholar
  73. 70.
    ° O.-J. Dahl 1993. Reviewers’ comments. In P. Brinch Hansen, Monitors and Concurrent Pascal: a personal history. SIGPLAN Notices 28, 3 (March), 1–35.Google Scholar
  74. 71.
    ° E. W. Dijkstra 1960. Recursive programming. Numerische Mathematik 2, 312–318.MathSciNetMATHGoogle Scholar
  75. 72.
    * E. W. Dijkstra 1965. Cooperating sequential processes. Technological University, Eindhoven, The Netherlands, (September).Google Scholar
  76. 72a.
    Also in F. Genuys Ed. 1968. Programming Languages, Academic Press, New York, 43–112. Article 1. MATHGoogle Scholar
  77. 73.
    * E. W. Dijkstra 1968. The structure of the THE multiprogramming system. Communications of the ACM 11, 5 (May), 341–346. Article 2. MATHGoogle Scholar
  78. 74.
    * E. W. Dijkstra 1971. Hierarchical ordering of sequential processes. Acta Informatica 1, 2 (October), 115–138. Article 4. MathSciNetGoogle Scholar
  79. 75.
    • E. W. Dijkstra 1972a. Notes on structured programming, In O.-J. Dahl, E. W. Dijkstra and C. A. R. Hoare, Eds., Structured Programming, Academic Press, New York, 1–82.Google Scholar
  80. 76.
    • E. W. Dijkstra 1972b. Information streams sharing a finite buffer. Information Processing Letters 1, 5 (October), 179–180.Google Scholar
  81. 77.
    * E. W. Dijkstra 1975a. A synthesis emerging?, (July). In E. W. Dijkstra 1982, Selected Writings on Computing: A Personal Perspective, Springer-Verlag, New York, 147–160. Article 14. Google Scholar
  82. 78.
    • E. W. Dijkstra 1975b. Guarded commands, nondeterminacy and formal derivation of programs. Commmunication of the ACM 18, 8 (August), 453–457.MathSciNetMATHGoogle Scholar
  83. 79.
    • E. W. Dijkstra and C. S. Scholten 1982. A class of simple communication patterns. In E. W. Dijkstra, Selected Writings on Computing: A Personal Perspective, Springer-Verlag, New York, 334–337.Google Scholar
  84. 80.
    ° Discussions 1971. Discussions of conditional critical regions and monitors. In C. A. R. Hoare and R. H. Perrott Eds. 1972, Operating Systems Techniques, Proceedings of a Seminar at Queen’s University, Belfast, Northern Ireland, August-September 1971. Academic Press, New York, 100–113.Google Scholar
  85. 81.
    ° J. A. Fellows 1993. Reviewers’ comments. In P. Brinch Hansen, Monitors and Concurrent Pascal: a personal history. SIGPLAN Notices 28, 3 (March), 1–35.Google Scholar
  86. 82.
    ° J. Gosling, B. Joy and G. Steele 1996. The Java Language Specification. AddisonWesley, Reading, MA.MATHGoogle Scholar
  87. 83.
    • J. S. Greenfield 1991. Distributed programming with cryptography applications. Lecture Notes in Computer Science 870, Springer-Verlag, New York.Google Scholar
  88. 84.
    ° A. N. Habermann 1967. On the harmonious cooperation of abstract machines. Ph.D. thesis. Technological University, Eindhoven, The Netherlands.Google Scholar
  89. 85.
    • A. N. Habermann 1972. Synchronization of communicating processes. Communications of the ACM 15, 3 (March), 171–176.Google Scholar
  90. 86.
    • A. C. Hartmann 1975. A Concurrent Pascal compiler for minicomputers. Ph.D. thesis, Information Science, California Institute of Technology, Pasadena, CA, (September). Also published as Lecture Notes in Computer Science 50, (1977), SpringerVerlag, New York.Google Scholar
  91. 87.
    ° J. M. Havender 1968. Avoiding deadlock in multitasking systems. IBM Systems Journal 7, 2, 74–88.Google Scholar
  92. 88.
    • C. C. Hayden 1979. Distributed processes: experience and architectures. Ph.D. thesis, Computer Science Department, University of Southern California, Los Angeles, CA.Google Scholar
  93. 89.
    ° C. C. Hayden 1993. Reviewers’ comments. In P. Brinch Hansen, Monitors and Concurrent Pascal: a personal history. SIGPLAN Notices 28, 3 (March), 1–35.Google Scholar
  94. 90.
    * C. A. R. Hoare 1971. Towards a theory of parallel programming. In C. A. R. Hoare and R. H. Perrott Eds. 1972, Operating Systems Techniques, Proceedings of a Seminar at Queen’s University, Belfast, Northern Ireland, August-September 1971. Academic Press, New York, 61–71. Article 5. Google Scholar
  95. 91.
    • C. A. R. Hoare 1972. Proof of correctness of data representations. Acta Informatica 1, 271–281.MATHGoogle Scholar
  96. 92.
    ° C. A. R. Hoare 1973a. A pair of synchronising primitives. On January 11, 1973, Hoare gave Jim Horning a copy of this undated, unpublished draft (J. J. Horning, personal communication, May 1991).Google Scholar
  97. 93.
    • C. A. R. Hoare 1973b. A structured paging system. Computer Journal 16, (August), 209–214.MATHGoogle Scholar
  98. 94.
    ° C. A. R. Hoare 1973c. Letter to R. M. McKeag, (October 10).Google Scholar
  99. 95.
    • C. A. R. Hoare 1974a. Hints on programming language design. In C. Bunyan Ed., Computer Systems Reliability, Infotech International, Berkshire, England, 505–534.Google Scholar
  100. 96.
    * C. A. R. Hoare 1974b. Monitors: an operating system structuring concept. Communications of the ACM 17, 10 (October), 549–557. Article 9. MATHGoogle Scholar
  101. 97.
    ° C. A. R. Hoare 1976a. The structure of an operating system. In Language Hierarchies and Interfaces, Springer-Verlag, 1976, 242–265.Google Scholar
  102. 98.
    • C. A. R. Hoare 1976b. Hints on the design of a programming language for realtime command and control. In J. P. Spencer Ed., Real-time Software: International State of the Art Report, Infotech International, Berkshire, England, 685–699.Google Scholar
  103. 99.
    * C. A. R. Hoare 1978. Communicating sequential processes. Communications of the ACM 21, 8 (August) 1978, 666–677. Article 15. MathSciNetMATHGoogle Scholar
  104. 100.
    ° C. A. R. Hoare 1981. A calculus of total correctness for communicating sequential processes. The Science of Computer Programming 1, 1–2 (October), 49–72.MathSciNetMATHGoogle Scholar
  105. 101.
    • C. A. R. Hoare 1985. Communicating Sequential Processes. Prentice-Hall, Englewood Cliffs, NJ.MATHGoogle Scholar
  106. 102.
    ° J. J. Horning 1972. Preliminary report to Karl Karlstrom, computer science editor, Prentice-Hall, on the manuscript of “Operating System Principles” by P. Brinch Hansen, (May 1).Google Scholar
  107. 103.
    • J. H. Howard 1976. Proving monitors. Communications of the ACM 19, 5 (May), 273–274.MATHGoogle Scholar
  108. 104.
    • M. E. C. Hull 1987. occam-a programming language for multiprocessor systems. Computer Languages 12, 1, 27–37.MATHGoogle Scholar
  109. 105.
    ° IBM 1965. IBM operating system/360 concepts and facilities. In S. Rosen, Ed., Programming Systems and Languages, McGraw-Hill, New York, 598–646.Google Scholar
  110. 106.
    ° Inmos 1988a. Transputer Reference Manual. Prentice Hall, Englewood Cliffs, NJ.Google Scholar
  111. 107.
    • Inmos 1988b. occam 2 Reference Manual, Prentice Hall, Englewood Cliffs, NJ.Google Scholar
  112. 108.
    • G. Kahn and D. B. McQueen 1977. Coroutines and networks of parallel processes. In B. Gilchrist Ed., Information Processing 77, North-Holland Publishing, Ansterdam, The Netherlands, 993–998.Google Scholar
  113. 109.
    • W. H. Kaubisch, R. H. Perrott and C. A. R. Hoare 1976. Quasiparallel programming. Software-Practice and Experience 6, (July-September), 341–356.MATHGoogle Scholar
  114. 110.
    • J. M. Kerridge 1982. A Fortran implementation of Concurrent Pascal. Software-Practice and Experience 12, 1 (January), 45–55.Google Scholar
  115. 111.
    • J. L. W. Kessels 1977. An alternative to event queues for synchronization in monitors. Communications of the ACM 20, 7 (July), 500–503.MATHGoogle Scholar
  116. 112.
    ° T. Kilburn, R. B. Payne and D. J. Howarth 1961. The Atlas supervisor. AFIPS Computer Conference 20, 279–294.Google Scholar
  117. 113.
    ° D. Knuth and J. L. McNeley 1964. SOL-A symbolic language for general-purpose systems simulation. IEEE Transactions on Electronic Computers 13, 8 (August), 401–408.MATHGoogle Scholar
  118. 114.
    • H. S. M. Kruijer 1982. A multi-user operating system for transaction processing written in Concurrent Pascal. Software-Practice and Experience 12, 5 (May), 445–454.Google Scholar
  119. 115.
    • B. W. Lampson and D. D. Redell 1980. Experience with processes and monitors in Mesa. Communications of the ACM 23, 2 (February), 105–117.Google Scholar
  120. 116.
    ° S. K. Langer 1967. An Introduction to Symbolic Logic. Dover Publications, New York.Google Scholar
  121. 117.
    • S. Lauesen 1975. A large semaphore based operating system. Communications of the ACM 18, 7 (July), 377–389.MATHGoogle Scholar
  122. 118.
    ° D. Lea 1997. Concurrent Programming in Java: Design Principles and Patterns. Addison-Wesley, Reading, MA.MATHGoogle Scholar
  123. 119.
    ° P. J. Leach, P. H. Levine, B. P. Douros, J. A. Hamilton, D. L. Nelson and B. L. Stumpf 1983. The architecture of an integrated local network. IEEE Journal on Selected Areas in Communications 1, 5, 842–856.Google Scholar
  124. 120.
    • B. H. Liskov 1972. The design of the Venus operating system. Communications of the ACM 15, 3 (March), 144–149.Google Scholar
  125. 121.
    ° R. A. Maddux and H. D. Mills 1979. Review of “The Architecture of Concurrent Programs.” IEEE Computer 12, (May), 102–103.Google Scholar
  126. 122.
    ° R. M. McKeag 1972. A survey of system structure and synchronization techniques. Department of Computer Science, Queen’s University of Belfast, Northern Ireland, (October). (Supplemented January 1973.)Google Scholar
  127. 123.
    • R. M. McKeag 1976. THE multiprogramming system. In R. M. McKeag and R. Wilson Eds., Studies in Operating Systems, Academic Press, New York, 145–184.Google Scholar
  128. 124.
    • R. M. McKeag 1980. A structured operating system. In J. Welsh and R. M. McKeag, Structured System Programming, Prentice Hall, Englewood Cliffs, NY, 229–315.Google Scholar
  129. 125.
    ° S. E. Madnick and J. J. Donovan 1974. Operating Systems. McGraw-Hill, New York.MATHGoogle Scholar
  130. 126.
    • D. May 1989. The influence of VLSI technology on computer architecture. In R. Elliott and C. A. R. Hoare Eds., Scientific Applications of Multiprocessors, PrenticeHall, Englewood Cliffs, NJ, 21–36.Google Scholar
  131. 127.
    ° P. Naur Ed. 1960. Report on the algorithmic language Algol 60. Communications of the ACM 3, 5 (May), 299–314.Google Scholar
  132. 128.
    • P. Naur Ed. 1963a. Revised report on the algorithmic language Algol 60. Communications of the ACM 6, 1 (January), 1–17.Google Scholar
  133. 129.
    • P. Naur 1963b. The design of the Gier Algol compiler. BIT 3, 2–3, 123–140 and 145–166.Google Scholar
  134. 130.
    ° P. Naur and B. Randell Eds. 1969. Software Engineering. NATO Scientific Affairs Division. Brussels, Belgium (October).Google Scholar
  135. 131.
    • P. Naur 1974. Concise Survey of Computer Methods. Studentlitteratur, Lund, Sweden.Google Scholar
  136. 132.
    ° P. Naur 1975. Review of “Operating System Principles.” BIT 15, 455–457.MathSciNetGoogle Scholar
  137. 133.
    • D. Neal and V. Wallentine 1978. Experiences with the portability of Concurrent Pascal. Software-Practice and Experience 8, 3 (May-June), 341–354.MATHGoogle Scholar
  138. 134.
    ° E. I. Organick 1972. The Multics System: An Examination of Its Structure. MIT Press, Cambridge, MA.Google Scholar
  139. 135.
    ° E. I. Organick 1973. Computer System Organization: The B5700/B6700 Series. Academic Press, New York.Google Scholar
  140. 136.
    ° D. L. Parnas 1993. Letter to P. Brinch Hansen, November 23.Google Scholar
  141. 137.
    • R. H. Perrott 1987. Parallel Programming. Addison-Wesley, Reading, MA.Google Scholar
  142. 138.
    ° G. Pólya 1957. How to Solve It. Doubleday, Garden City, NY.Google Scholar
  143. 139.
    • M. S. Powell 1979. Experience of transporting and using the Solo operating system. Software-Practice and Experience 9, 7 (July), 561–570.MATHGoogle Scholar
  144. 140.
    • C. W. Reynolds 1988. The historical evolution of monitors and their languages. Department of Mathematics and Computer Science, James Madison University, Harrisonburg, VA, (August).Google Scholar
  145. 141.
    • C. W. Reynolds 1990. Signalling regions: multiprocessing in a shared memory reconsidered. Software-Practice and Experience 20, 4 (April), 325–356.Google Scholar
  146. 142.
    ° C. W. Reynolds 1993. Reviewers’ comments. In P. Brinch Hansen, Monitors and Concurrent Pascal: a personal history. SIGPLAN Notices 28, 3 (March 1993), 1–35.Google Scholar
  147. 143.
    ° D. T. Ross 1974. In search of harmony: After-dinner talk. In W. L. van der Poel and L. A. Maarssen Eds., Machine Oriented Higher Level Languages. North-Holland Publishing Company, Amsterdam, The Netherlands, 445–447.Google Scholar
  148. 144.
    • O. Roubine and J.-C. Heliard 1980. Parallel processing in Ada. In R. M. McKeag and A. M. Macnaghten Eds., On the Construction of Programs, Cambridge University Press, New York, 193–212.Google Scholar
  149. 145.
    ° A. C. Shaw 1974. The Logical Design of Operating Systems. Prentice-Hall, Englewood Cliffs, NJ.MATHGoogle Scholar
  150. 146.
    ° S. K. Shrivastava and F. Panzieri 1982. The design of a reliable remote procedure call mechanism. IEEE Transactions on Computers 31, 7 (July), 692–697.Google Scholar
  151. 147.
    • A. Silberschatz, J. Peterson and P. Galvin 1992. Operating System Concepts (third edition). Addison-Wesley Publishing, Reading, MA, 1992.Google Scholar
  152. 148.
    • C. R. Snow 1992. Concurrent Programming. Cambridge University Press, New York.MATHGoogle Scholar
  153. 149.
    • F. Stepczyk and D. Heimbigner 1979. Application of a concurrent programming language. In P. Wegner Ed., Research Directions in Software Technology, MIT Press, Cambridge, MA, 666–671.Google Scholar
  154. 150.
    • A. S. Tanenbaum and R. van Renesse 1988. A critique of the remote procedure call mechanism. In R. Speth Ed., Research into Networks and Distributed Applications, Elsevier Science Publishers, Amsterdam, The Netherlands, 775–782.Google Scholar
  155. 151.
    ° B. H. Tay and A. L. Ananda 1990. A survey of remote procedure calls. Operating Systems Review 24, 3 (July), 68–79.Google Scholar
  156. 152.
    ° A. Trew and G. Wilson Eds. 1991. Past, Present, Parallel: A Survey of Available Parallel Computing Systems. Springer-Verlag, New York.MATHGoogle Scholar
  157. 153.
    • J. Welsh and D. W. Bustard 1979. Pascal-Plus-another language for modular multiprogramming. Software-Practice and Experience 9, 11 (November), 947–957.MATHGoogle Scholar
  158. 154.
    • R. L. Wexelblat Ed. 1981. History of Programming Languages. Academic Press, New York.MATHGoogle Scholar
  159. 155.
    ° J. E. White 1976. A high-level framework for network-based resource sharing. National Computer Conference, (June), 561–570.Google Scholar
  160. 156.
    ° N. Wirth 1969. Letter to P. Brinch Hansen, (July 14).Google Scholar
  161. 157.
    • N. Wirth 1971. The programming language Pascal. Acta Informatica 1, 35–63.MATHGoogle Scholar
  162. 158.
    • N. Wirth 1977a. Modula: a programming language for modular multiprogramming. Software-Practice and Experience 7, 1 (January-February), 3–35.MathSciNetMATHGoogle Scholar
  163. 159.
    • N. Wirth 1977b. The use of Modula. Software-Practice and Experience 7, 1 (January-February), 37–65.MATHGoogle Scholar
  164. 160.
    • N. Wirth 1977c. Design and implementation of Modula. Software-Practice and Experience 7, 1 (January-February), 67–84.MATHGoogle Scholar
  165. 161.
    ° W. A. Wulf, E. S. Cohen, W. M. Corwin, A. K. Jones, R. Levin, C. Pierson, and F. J. Pollack 1974. Hydra: the kernel of a multiprocessor operating system. Communications of the ACM 17, 6 (June), 337–345.Google Scholar

Copyright information

© Springer Science+Business Media New York 2001

Authors and Affiliations

  • Per Brinch Hansen

There are no affiliations available

Personalised recommendations