Mundy, D.H., Computing Laboratory, University of Newcastle upon Tyne
This thesis presents two sets of principles for the organisation of distributed computing systems. Details of models of computation based on these principles are given, together with proposals for programming languages on each model of computation.
The recursive control flow principles are based on the concept of recursive structuring. A recursive control flow computing system comprises a group of subordinate computing systemsconnected together by a communication medium. Each subordinate computing system may either be a computing system which consists of a processing unit, a memory component, and some input/output devices, or is itself a recursive control flow computing system. The memory components of all the subordinate computing systems within a recursive control flow computing systema re arranged in a hierachy. Using suitable addresses, any part of the hierachy is accessible to any sequence of instructions which may be executed by the processing unit of a subordinate computing system. This global accessibility gives rise to serious difficulties in the understanding of the meaning of programs written in a programming language based on the recursive control flow model of computation. Reasoning about a particular program in isolation is difficult because of the potential interference between the execution different programs cannot be ignored.
The alternative principles, decentralised control flow, restrict the global accessibility of the memory components of the subordinate computing systems. The concept of objects forms the basis of the principles. Information may flow along unnamed channels between instances of these objects, this being the only way in which one instance of an object may communicate with some other instance of an object. Reasoning about a particular program written in a programming language based on the decentralised control flow model of computation is easier since it is guaranteed that there will be no interference between the execution of different programs.