Concurrent programming : Microcomputers

  • R. H. Perrott
Part of the Lecture Notes in Computer Science book series (LNCS, volume 126)


This paper considers the construction of algorithms in a concurrent programming environment where several microcomputers share the same memory or each microcomputer has its own local memory. Not only does a programmer require the abstractions of a sequential programming language but also a means of specifying and controlling parallel activity.

There are two major situations in which processes or tasks need to be controlled; when they are competing for a shared variable or when they are co-operating to their mutual benefit. Two major techniques have been proposed to solve these problems namely, monitors with condition variables and message passing primitives. The evolution of both techniques is examined.

Finally two concurrent programming languages, namely Pascal Plus and Ada which are based on these techniques are considered. The Bounded Buffer Problem is used to illustrate the different program design and construction methods required when using such techniques.


Shared Variable Message Passing Critical Section Mutual Exclusion Boolean Expression 
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.

7. References

  1. 1.
    Brinch Hansen, P. (1972a). A comparison of two synchronising concepts. Acta Informatica 1. 190–199.CrossRefGoogle Scholar
  2. 2.
    Brinch Hansen, P. (1972b). Structured multiprogramming. Comm. ACM. 15, 574–578.CrossRefGoogle Scholar
  3. 3.
    Brinch Hansen, P. (1973). Operating Systems Principles. Prentice-Hall, Englewood Cliffs, New Jersey.Google Scholar
  4. 4.
    Brinch Hansen, P. (1978). Distributed Processes. Comm. ACM. 21, 11, 934–940.CrossRefGoogle Scholar
  5. 5.
    Conway, M.E. (1963). Design of a separate transition-diagram compiler. Comm. ACM. 6, 7, 396–408.CrossRefGoogle Scholar
  6. 6.
    Dijkstra, E.W. (1965). Solution of a problem in concurrent programming control. Comm. ACM. 8, 569.CrossRefGoogle Scholar
  7. 7.
    Dijkstra, E.W. (1968). Co-operating Sequential Processes. in Programming Languages. (F. Genuys, ed.), 43–112. Academic Press, London and New York.Google Scholar
  8. 8.
    Dijkstra, E.W. (1972). Hierarchical Ordering of Sequential Processes. in Operating Systems Techniques. (C.A.R. Hoare and R.H. Perrott, eds.) 72–9, Academic Press, London and New York.Google Scholar
  9. 9.
    Dijkstra, E.W. (1975). Guarded commands, non-determinacy, and formal derivation of problems. Comm. ACM. 18, 8, 453–457.CrossRefGoogle Scholar
  10. 10.
    Hoare, C.A.R. (1972). Towards a theory of parallel programming. in Operating Systems Techniques. (C.A.R. Hoare and R.H. Perrott, eds.) 6I–7, Academic Press, London and New York.Google Scholar
  11. 11.
    Hoare, C.A.R. (1974). Monitors: An operating system structuring concept. Comm. ACM. 17, 10, 549–557.CrossRefGoogle Scholar
  12. 12.
    Hoare, C.A.R. (1978). Communicating sequential processes. Comm. ACM. 21, 8, 666–677.CrossRefGoogle Scholar
  13. 13.
    Ichbiah, J.D. et al. (1979). Preliminary ADA Reference Manual. Sigplan Notices, 14, 6.Google Scholar
  14. 14.
    Welsh, J. and Bustard, D.W. (1979). Pascal-Plus — Another Language for Modular Multi-programming. Software — Practice and Experience, 9, 947–957.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1981

Authors and Affiliations

  • R. H. Perrott
    • 1
  1. 1.Department of Computer ScienceThe Queen's UniversityBelfast

Personalised recommendations