Skip to main content

The Invention of Concurrent Programming

  • Chapter
The Origin of Concurrent Programming

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 84.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 139.00
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book
USD 109.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

Bibliography

  1. • G. R. Andrews and F. B. Schneider 1983. Concepts and notations for concurrent programming. Computing Surveys 15, 1 (March), 3–43.

    MATH  Google Scholar 

  2. • G. R. Andrews 1991. Concurrent Programming: Principles and Practice. Benjamin/Cummings, Redwood City, CA.

    Google Scholar 

  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. • 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. • J. Bishop 1986. Data Abstraction in Programming Languages. Addison-Wesley, Reading, MA.

    Google Scholar 

  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. ° P. Brinch Hansen 1967a. The logical structure of the RC 4000 computer. BIT 7, 3, 191–199.

    Google Scholar 

  8. ° P. Brinch Hansen 1967b. The RC 4000 real-time control system at Pulawy. BIT 7, 4. 279–288.

    Google Scholar 

  9. ° P. Brinch Hansen 1968. The Structure of the RC 4000 Monitor. Regnecentralen, Copenhagen, Denmark (February).

    Google Scholar 

  10. * P. Brinch Hansen 1969. RC 4000 Software: Multiprogramming System. Regnecentralen, Copenhagen, Denmark, (April). Article 3.

    Google Scholar 

  11. • P. Brinch Hansen 1970. The nucleus of a multiprogramming system. Communications of the ACM 13, 4 (April), 238–241, 250.

    MATH  Google Scholar 

  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. • P. Brinch Hansen 1972a. A comparison of two synchronizing concepts. Acta Informatica 1, 3 (1972), 190–199.

    Google Scholar 

  14. * P. Brinch Hansen 1972b. Structured multiprogramming. Communications of the ACM 15, 7 (July), 574–578. Article 7.

    Google Scholar 

  15. • P. Brinch Hansen 1973a. Testing a multiprogramming system. Software-Practice and Experience 3, 2 (April-June), 145–150.

    Google Scholar 

  16. • P. Brinch Hansen 1973b. Operating System Principles. Prentice-Hall, Englewood Cliffs, NJ (May).

    MATH  Google Scholar 

  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. ° 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. ° P. Brinch Hansen 1973e. Concurrent programming concepts. ACM Computing Surveys 5, 4, (December), 223–245.

    MATH  Google Scholar 

  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. * 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. * 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. * 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. ° P. Brinch Hansen 1975d. Concurrent Pascal report. Information science, California Institute of Technology, Pasadena, CA, (June).

    Google Scholar 

  25. Also in P. Brinch Hansen 1977b, The Architecture of Concurrent Programs, Prentice-Hall, Englewood Cliffs, NJ, (July), 231–270.

    MATH  Google Scholar 

  26. ° P. Brinch Hansen and A. C. Hartmann 1975e. Sequential Pascal report. Information science, California Institute of Technology, Pasadena, CA, (July).

    Google Scholar 

  27. ° P. Brinch Hansen 1975f. Concurrent Pascal machine. Information Science, California Institute of Technology, Pasadena, CA, (October).

    Google Scholar 

  28. Also in P. Brinch Hansen 1977b, The Architecture of Concurrent Programs, Prentice-Hall, Englewood Cliffs, NJ, (July), 271–297.

    MATH  Google Scholar 

  29. ° 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. ° 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. • P. Brinch Hansen 1977a. Experience with modular concurrent programming, IEEE Transactions on Software Engineering 3, 2 (March), 156–159.

    Google Scholar 

  32. • P. Brinch Hansen 1977b. The Architecture of Concurrent Programs. PrenticeHall, Englewood Cliffs, NJ, (July).

    MATH  Google Scholar 

  33. * 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. • P. Brinch Hansen 1978a. Network: A multiprocessor program. IEEE Transactions on Software Engineering 4, 3 (May), 194–199.

    MATH  Google Scholar 

  35. • P. Brinch Hansen and J. Staunstrup 1978b. Specification and implementation of mutual exclusion. IEEE Transactions on Software Engineering 4, 4 (September), 365–370.

    MATH  Google Scholar 

  36. * P. Brinch Hansen 1978c. Distributed Processes: a concurrent programming concept. Communications of the ACM 21, 11 (November), 934–941. Article 16.

    MATH  Google Scholar 

  37. • 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. • P. Brinch Hansen 1978e. Reproducible testing of monitors. Software-Practice and Experience 8, 6 (November-December), 721–729.

    MATH  Google Scholar 

  39. • 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. • P. Brinch Hansen and J. A. Fellows 1980. The Trio operating system. Software-Practice and Experience 10, 11 (November), 943–948.

    Google Scholar 

  41. • P. Brinch Hansen 1981. The design of Edison. Software-Practice and Experience 11, 4 (April), 363–396.

    Google Scholar 

  42. * P. Brinch Hansen 1987a. Joyce-A programming language for distributed systems. Software-Practice and Experience 17, 1 (January), 29–50. Article 17.

    MATH  Google Scholar 

  43. • P. Brinch Hansen 1987b. A Joyce implementation. Software-Practice and Experience 17, 4 (April 1987), 267–276.

    MATH  Google Scholar 

  44. ° 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. • P. Brinch Hansen 1989a. The Joyce language report. Software-Practice and Experience 19, 6 (June), 553–578.

    MATH  Google Scholar 

  46. • P. Brinch Hansen 1989b. A multiprocessor implementation of Joyce. Software-Practice and Experience 19, 6 (June), 579–592.

    MATH  Google Scholar 

  47. • 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. • P. Brinch Hansen 1993a. Monitors and Concurrent Pascal: a personal history. SIGPLAN Notices 28, 3 (March), 1–35.

    Google Scholar 

  49. 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. • 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. • 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. ° P. Brinch Hansen 1993d. Letter to D. L. Parnas, (December 17).

    Google Scholar 

  53. • P. Brinch Hansen 1994a. Do hypercubes sort faster than tree machines? Concurrency-Practice and Experience 6, 2 (April), 143–151.

    Google Scholar 

  54. • P. Brinch Hansen 1994b. The programming language SuperPascal. Software-Practice and Experience 24, 5 (May), 467–483.

    Google Scholar 

  55. * 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. • P. Brinch Hansen 1994d. Interference control in SuperPascal-a block-structured parallel language. The Computer Journal 37, 5, 399–406.

    Google Scholar 

  57. • P. Brinch Hansen 1995a. Studies in Computational Science: Parallel Programming Paradigms. Prentice Hall, Englewood Cliffs, NJ, (March).

    Google Scholar 

  58. * P. Brinch Hansen 1995b. Efficient parallel recursion, SIGPLAN Notices 30, 12 (December), 9–16. Article 19.

    Google Scholar 

  59. • P. Brinch Hansen 1996. The Search for Simplicity: Essays in Parallel Programming. IEEE Computer Society Press, Los Alamitos, CA, (April).

    Google Scholar 

  60. • P. Brinch Hansen 1999. Java’s insecure parallelism. SIGPLAN Notices 34, 4 (April), 38–45.

    Google Scholar 

  61. • 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. • P. Brinch Hansen Ed. 2001. Classic Operating Systems: From Batch Processing to Distributed Systems. Springer-Verlag, New York, (January).

    Google Scholar 

  63. • 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. • 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. • N. Carriero and D. Gelernter 1989. Linda in context. Communications of the ACM 32, 4 (April), 444–458.

    Google Scholar 

  66. • R. S. Cok 1991. Parallel Programs for the Transputer. Prentice Hall, Englewood Cliffs, NJ.

    Google Scholar 

  67. • M. I. Cole 1989. Algorithmic Skeletons: Structured Management of Parallel Computation. MIT Press, Cambridge, MA.

    MATH  Google Scholar 

  68. • 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. ° 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. • 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. ° 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. • 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. ° 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. ° E. W. Dijkstra 1960. Recursive programming. Numerische Mathematik 2, 312–318.

    MathSciNet  MATH  Google Scholar 

  75. * E. W. Dijkstra 1965. Cooperating sequential processes. Technological University, Eindhoven, The Netherlands, (September).

    Google Scholar 

  76. Also in F. Genuys Ed. 1968. Programming Languages, Academic Press, New York, 43–112. Article 1.

    MATH  Google Scholar 

  77. * E. W. Dijkstra 1968. The structure of the THE multiprogramming system. Communications of the ACM 11, 5 (May), 341–346. Article 2.

    MATH  Google Scholar 

  78. * E. W. Dijkstra 1971. Hierarchical ordering of sequential processes. Acta Informatica 1, 2 (October), 115–138. Article 4.

    MathSciNet  Google Scholar 

  79. • 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. • E. W. Dijkstra 1972b. Information streams sharing a finite buffer. Information Processing Letters 1, 5 (October), 179–180.

    Google Scholar 

  81. * 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. • E. W. Dijkstra 1975b. Guarded commands, nondeterminacy and formal derivation of programs. Commmunication of the ACM 18, 8 (August), 453–457.

    MathSciNet  MATH  Google Scholar 

  83. • 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. ° 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. ° 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. ° J. Gosling, B. Joy and G. Steele 1996. The Java Language Specification. AddisonWesley, Reading, MA.

    MATH  Google Scholar 

  87. • J. S. Greenfield 1991. Distributed programming with cryptography applications. Lecture Notes in Computer Science 870, Springer-Verlag, New York.

    Google Scholar 

  88. ° A. N. Habermann 1967. On the harmonious cooperation of abstract machines. Ph.D. thesis. Technological University, Eindhoven, The Netherlands.

    Google Scholar 

  89. • A. N. Habermann 1972. Synchronization of communicating processes. Communications of the ACM 15, 3 (March), 171–176.

    Google Scholar 

  90. • 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. ° J. M. Havender 1968. Avoiding deadlock in multitasking systems. IBM Systems Journal 7, 2, 74–88.

    Google Scholar 

  92. • 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. ° 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. * 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. • C. A. R. Hoare 1972. Proof of correctness of data representations. Acta Informatica 1, 271–281.

    MATH  Google Scholar 

  96. ° 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. • C. A. R. Hoare 1973b. A structured paging system. Computer Journal 16, (August), 209–214.

    MATH  Google Scholar 

  98. ° C. A. R. Hoare 1973c. Letter to R. M. McKeag, (October 10).

    Google Scholar 

  99. • 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. * C. A. R. Hoare 1974b. Monitors: an operating system structuring concept. Communications of the ACM 17, 10 (October), 549–557. Article 9.

    MATH  Google Scholar 

  101. ° C. A. R. Hoare 1976a. The structure of an operating system. In Language Hierarchies and Interfaces, Springer-Verlag, 1976, 242–265.

    Google Scholar 

  102. • 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. * C. A. R. Hoare 1978. Communicating sequential processes. Communications of the ACM 21, 8 (August) 1978, 666–677. Article 15.

    MathSciNet  MATH  Google Scholar 

  104. ° 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.

    MathSciNet  MATH  Google Scholar 

  105. • C. A. R. Hoare 1985. Communicating Sequential Processes. Prentice-Hall, Englewood Cliffs, NJ.

    MATH  Google Scholar 

  106. ° 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. • J. H. Howard 1976. Proving monitors. Communications of the ACM 19, 5 (May), 273–274.

    MATH  Google Scholar 

  108. • M. E. C. Hull 1987. occam-a programming language for multiprocessor systems. Computer Languages 12, 1, 27–37.

    MATH  Google Scholar 

  109. ° 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. ° Inmos 1988a. Transputer Reference Manual. Prentice Hall, Englewood Cliffs, NJ.

    Google Scholar 

  111. • Inmos 1988b. occam 2 Reference Manual, Prentice Hall, Englewood Cliffs, NJ.

    Google Scholar 

  112. • 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. • W. H. Kaubisch, R. H. Perrott and C. A. R. Hoare 1976. Quasiparallel programming. Software-Practice and Experience 6, (July-September), 341–356.

    MATH  Google Scholar 

  114. • J. M. Kerridge 1982. A Fortran implementation of Concurrent Pascal. Software-Practice and Experience 12, 1 (January), 45–55.

    Google Scholar 

  115. • J. L. W. Kessels 1977. An alternative to event queues for synchronization in monitors. Communications of the ACM 20, 7 (July), 500–503.

    MATH  Google Scholar 

  116. ° T. Kilburn, R. B. Payne and D. J. Howarth 1961. The Atlas supervisor. AFIPS Computer Conference 20, 279–294.

    Google Scholar 

  117. ° 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.

    MATH  Google Scholar 

  118. • 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. • 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. ° S. K. Langer 1967. An Introduction to Symbolic Logic. Dover Publications, New York.

    Google Scholar 

  121. • S. Lauesen 1975. A large semaphore based operating system. Communications of the ACM 18, 7 (July), 377–389.

    MATH  Google Scholar 

  122. ° D. Lea 1997. Concurrent Programming in Java: Design Principles and Patterns. Addison-Wesley, Reading, MA.

    MATH  Google Scholar 

  123. ° 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. • B. H. Liskov 1972. The design of the Venus operating system. Communications of the ACM 15, 3 (March), 144–149.

    Google Scholar 

  125. ° R. A. Maddux and H. D. Mills 1979. Review of “The Architecture of Concurrent Programs.” IEEE Computer 12, (May), 102–103.

    Google Scholar 

  126. ° 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. • 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. • 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. ° S. E. Madnick and J. J. Donovan 1974. Operating Systems. McGraw-Hill, New York.

    MATH  Google Scholar 

  130. • 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. ° P. Naur Ed. 1960. Report on the algorithmic language Algol 60. Communications of the ACM 3, 5 (May), 299–314.

    Google Scholar 

  132. • P. Naur Ed. 1963a. Revised report on the algorithmic language Algol 60. Communications of the ACM 6, 1 (January), 1–17.

    Google Scholar 

  133. • P. Naur 1963b. The design of the Gier Algol compiler. BIT 3, 2–3, 123–140 and 145–166.

    Google Scholar 

  134. ° P. Naur and B. Randell Eds. 1969. Software Engineering. NATO Scientific Affairs Division. Brussels, Belgium (October).

    Google Scholar 

  135. • P. Naur 1974. Concise Survey of Computer Methods. Studentlitteratur, Lund, Sweden.

    Google Scholar 

  136. ° P. Naur 1975. Review of “Operating System Principles.” BIT 15, 455–457.

    MathSciNet  Google Scholar 

  137. • D. Neal and V. Wallentine 1978. Experiences with the portability of Concurrent Pascal. Software-Practice and Experience 8, 3 (May-June), 341–354.

    MATH  Google Scholar 

  138. ° E. I. Organick 1972. The Multics System: An Examination of Its Structure. MIT Press, Cambridge, MA.

    Google Scholar 

  139. ° E. I. Organick 1973. Computer System Organization: The B5700/B6700 Series. Academic Press, New York.

    Google Scholar 

  140. ° D. L. Parnas 1993. Letter to P. Brinch Hansen, November 23.

    Google Scholar 

  141. • R. H. Perrott 1987. Parallel Programming. Addison-Wesley, Reading, MA.

    Google Scholar 

  142. ° G. Pólya 1957. How to Solve It. Doubleday, Garden City, NY.

    Google Scholar 

  143. • M. S. Powell 1979. Experience of transporting and using the Solo operating system. Software-Practice and Experience 9, 7 (July), 561–570.

    MATH  Google Scholar 

  144. • 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. • C. W. Reynolds 1990. Signalling regions: multiprocessing in a shared memory reconsidered. Software-Practice and Experience 20, 4 (April), 325–356.

    Google Scholar 

  146. ° 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. ° 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. • 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. ° A. C. Shaw 1974. The Logical Design of Operating Systems. Prentice-Hall, Englewood Cliffs, NJ.

    MATH  Google Scholar 

  150. ° 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. • A. Silberschatz, J. Peterson and P. Galvin 1992. Operating System Concepts (third edition). Addison-Wesley Publishing, Reading, MA, 1992.

    Google Scholar 

  152. • C. R. Snow 1992. Concurrent Programming. Cambridge University Press, New York.

    MATH  Google Scholar 

  153. • 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. • 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. ° 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. ° A. Trew and G. Wilson Eds. 1991. Past, Present, Parallel: A Survey of Available Parallel Computing Systems. Springer-Verlag, New York.

    MATH  Google Scholar 

  157. • J. Welsh and D. W. Bustard 1979. Pascal-Plus-another language for modular multiprogramming. Software-Practice and Experience 9, 11 (November), 947–957.

    MATH  Google Scholar 

  158. • R. L. Wexelblat Ed. 1981. History of Programming Languages. Academic Press, New York.

    MATH  Google Scholar 

  159. ° J. E. White 1976. A high-level framework for network-based resource sharing. National Computer Conference, (June), 561–570.

    Google Scholar 

  160. ° N. Wirth 1969. Letter to P. Brinch Hansen, (July 14).

    Google Scholar 

  161. • N. Wirth 1971. The programming language Pascal. Acta Informatica 1, 35–63.

    MATH  Google Scholar 

  162. • N. Wirth 1977a. Modula: a programming language for modular multiprogramming. Software-Practice and Experience 7, 1 (January-February), 3–35.

    MathSciNet  MATH  Google Scholar 

  163. • N. Wirth 1977b. The use of Modula. Software-Practice and Experience 7, 1 (January-February), 37–65.

    MATH  Google Scholar 

  164. • N. Wirth 1977c. Design and implementation of Modula. Software-Practice and Experience 7, 1 (January-February), 67–84.

    MATH  Google Scholar 

  165. ° 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 

Download references

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2001 Springer Science+Business Media New York

About this chapter

Cite this chapter

Hansen, P.B. (2001). The Invention of Concurrent Programming. In: Hansen, P.B. (eds) The Origin of Concurrent Programming. Springer, New York, NY. https://doi.org/10.1007/978-1-4757-3472-0_1

Download citation

  • DOI: https://doi.org/10.1007/978-1-4757-3472-0_1

  • Publisher Name: Springer, New York, NY

  • Print ISBN: 978-1-4419-2986-0

  • Online ISBN: 978-1-4757-3472-0

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics