Abstract
This paper presents a brief formal semantics of constructors for ordered sequences (cons) and for unordered multisets (frons) followed by a detailed operational semantics for both. A multiset is a generalization of a list structure which lacks order a priori; its order is determined by the a posteriori migration of computationally convergent elements to the front. The introductory material includes an example which demonstrates that a multiset of yet-unconverged values and a timing primitive may be used to implement the scheduler for an operating system in an applicative style. The operational semantics, given in PASCAL-like code, is described in two detailed steps: first a uniprocessor implementation of the cons/frons constructors and the first/rest probes, followed by an extension to a multiprocessor implementation. The center of either implementation is the EUREKA structure transformation, which brings convergent elements to the fore while preserving order of shared structures. The multiprocessor version is designed to run on an arbitrary number of processors with only one semaphore but makes heavy use of the sting memory store primitive. Stinging is a conditional store operation which is carried out independently of its dispatching processor so that shared nodes may be somewhat altered without interfering with other processors. An appendix presents the extension of this code to a ‚fair“ implementation of multisets.
Preview
Unable to display preview. Download preview PDF.
References
D.P. Friedman and D.S. Wise. CONS should not evaluate its arguments. In Automata, Languages and Programming, S. Michaelson and R. Milner (eds.), Edinburgh, Edinburgh University Press (1976), 257–284.
D.P. Friedman and D.S. Wise. Applicative multiprogramming. Technical Rept. No. 72, Computer Science Dept., Indiana University (December, 1978).
D.P. Friedman and D.S. Wise. A conditional, interlock-free store instruction. Preliminary version in M.P. Pursley and J.B. Cruz, Jr. (eds.), Proc. 16th Allerton Conf. on Communication, Control, and Computing, Univ. of Ill., Urbana (1978), 578–584.
P. Henderson and J.H. Morris, Jr. A lazy evaluator. Proc. 3rd ACM Symp. on Principles of Programming Languages (1976), 95–103.
L. Lamport. Time, clocks, and the ordering of events in a distributed system. Comm. ACM 21, 7 (July, 1978), 558–565.
J. McCarthy. A basis for a mathematical theory of computation. In Computer Programming and Formal Systems, P. Braffort and D. Hirschberg (eds.), Amsterdam, North-Holland (1963), 33–70.
Z. Manna. Mathematical Theory of Computation, New York, McGraw-Hill (1974), 418.
J. Vuillemin. Correct and optimal implementation of recursion in a simple programming language. J. Comp. Sys. Sci. 9, 3 (June, 1974), 332–354.
C. Wadsworth. Semantics and Pragmatics of Lambda-calculus, Ph.D. dissertation, Oxford (1971).
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1979 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Friedman, D.P., Wise, D.S. (1979). An approach to fair applicative multiprogramming. In: Kahn, G. (eds) Semantics of Concurrent Computation. Lecture Notes in Computer Science, vol 70. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0022471
Download citation
DOI: https://doi.org/10.1007/BFb0022471
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-09511-8
Online ISBN: 978-3-540-35163-4
eBook Packages: Springer Book Archive