Concurrent programming : Microcomputers
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.
KeywordsShared Variable Message Passing Critical Section Mutual Exclusion Boolean Expression
Unable to display preview. Download preview PDF.
- 3.Brinch Hansen, P. (1973). Operating Systems Principles. Prentice-Hall, Englewood Cliffs, New Jersey.Google Scholar
- 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.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
- 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
- 13.Ichbiah, J.D. et al. (1979). Preliminary ADA Reference Manual. Sigplan Notices, 14, 6.Google Scholar
- 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