On the transfer of control between contexts

  • B. W. Lampson
  • J. G. Mitchell
  • E. H. Satterthwaite
Structures De Controle Control Structures
Part of the Lecture Notes in Computer Science book series (LNCS, volume 19)


We describe a single primitive mechanism for transferring control from one module to another, and show how this mechanism, together with suitable facilities for record handling and storage allocation, can be used to construct a variety of higher-level transfer disciplines. Procedure and function calls, coroutine linkages, non-local gotos, and signals can all be specified and implemented in a compatible way. The conventions for storage allocation and name binding associated with control transfers are also under the programmer's control. Two new control disciplines are defined : a generalization of coroutines, and a facility for handling errors and unusual conditions which arise during program execution. Examples are drawn from the Modular Programming Language, in which all of the facilities described are being implemented.


Procedure Call Object File Program Counter Signal Code Control Transfer 
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.


  1. Balzer, R.M., "PORTS — A Method for Dynamic interprogram Communication and Job Control", Proc AFIPS Conf. 39 (1971 SJCC).Google Scholar
  2. Bensoussan, A. et al., "The Multics Virtual Memory: Concepts and Design", Comm ACM 15, 5 (May 1972).Google Scholar
  3. Bobrow, D.G. and Wegbreit, B., "A model and Stack implementation of Multiple Environments", Comm. ACM 16, 10 (Oct 1973).Google Scholar
  4. Brinch Hansen, P., "The Nucleus of a Multiprogramming System", Comm. ACM 13, 4 (April 1970).Google Scholar
  5. Conway, M.E., "Design of a Separable Transition-diagram Compiler", Comm. ACM 6, 7 (July 1963).Google Scholar
  6. Dennis, J.B., "Programming Generality, Parallelism and Computer Architecture", Proc. IFIP Congress 1968, North-Holland Publishing Co., Amsterdam, 1969.Google Scholar
  7. Dijkstra, E.W., "Cooperating Sequential Processes", in Programming Languages, Genuys, ed., Academic Press, New York, 1967.Google Scholar
  8. Fisher, D.A., Control Structures for Programming Languages, Ph. D. Thesis, Carnegie-Mellon University, May 1970 (AD 708511)Google Scholar
  9. Hoare, C.A.R. and Dahl, O-J., "Hierarchical Program Structures", in Structured Programming, Academic Press, New York, 1972.Google Scholar
  10. Knuth, D., Fundamental Algorithms, Addison Wesley, Reading, Mass., 1968, p. 425.Google Scholar
  11. Krutar, R.A., "Conversational Systems Programming", in Sigplan Notices 6, 12 (Dec 1971).Google Scholar
  12. Lampson, B.W., "On Reliable and Extendable Operating Systems", in The Fourth Generation, Infotech, Maidenhead, Berks., 1971Google Scholar
  13. Mcllroy, M.D., "Coroutines: Semantics in Search of a Syntax", Bell Telephone Laboratories, Murray Hill, N.J., unpublished report.Google Scholar
  14. Organick, E.I., The Multics System An Examination of its Structure, MIT Press, Cambridge, Mass., 1972.Google Scholar
  15. Saltzer, J.H., Traffic Control in a Multiplexed Computer System, Sc.D. Thesis, MIT, 1966 (MAC TR-30).Google Scholar
  16. Wang, A. and Dahl, O-J., "Coroutine Sequencing in a Block Structured Environment", BIT 11 (1971), p. 425.Google Scholar
  17. Wegbreit, B., "The Treatment of Data Types in EL/1", Comm. ACM 17, 4 (April 1974).Google Scholar
  18. Wirth, N., "The Programming Language Pascal", Acta Informatica 1, 1 (1971).Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1974

Authors and Affiliations

  • B. W. Lampson
    • 1
  • J. G. Mitchell
    • 1
  • E. H. Satterthwaite
    • 1
  1. 1.Xerox Research CenterPalo AltoUSA

Personalised recommendations