Resource control in a demand-driven data-flow model

Data-flow models are well-known as representations for achieving asynchronous and concurrent execution of applicative programs. Heretofore, the main focus of interest in data-flow models has been on determinate and value-oriented computations; efforts at handling indeterminate computations, especially the problems of resource control, have been few. This dissertation examines some practical and theoretical aspects of resource control in one particular class of data-flow models. The execution model here is based on a demand-driven principle, and the high-level programming language is based on the concept of 'function graphs', and is thus called Function Graph Language (FGL). The main emphasis of this work is on a reliable, efficient, and flexible approach to defining shared data objects and synchronization of the processes that use them. It is shown that a demand-driven model of execution provides many computational advantages for designing primatives for synchronization. In keeping with the applicative style, an expression-based language, called Resource Expressions, is introduced, so that properties of synchronization, such as mutual exclusion, priority, etc., may be specified in a high-level form. The formal semantics of this language are based on the concept of 'execution graphs'. The translation of Resource Expressions into the primitives for implementation and its correctness proof are presented. Using the specifications in this abstract implementation, an actual implementation in terms of the primitive operators is subsequently derived. This implementation takes advantage of the demand-driven model is representing potentially-infinite execution graphs, and also exploits concurrency in the arbitration and execution of operations.