Naming and Binding of Objects

2 Overview A property of a computer system that determines its ease of use and its range of applicability is the way it creates and manages the objects of computation. An important aspect of object management is the scheme by which a system names objects. Names for objects are required so that programs can refer to the objects, so that objects can be shared, and so that objects can be located at some future time. This chapter introduces several rather general concepts surrounding names, and then explores in depth their applicability to two naming structures commonly encountered inside computer systems: addressing architectures and file systems. It examines naming functions that are usually implemented (or desired) in these two areas, and some of the design tradeoffs encountered in a variety of contemporary computer systems. It ends with a brief discussion of some current research topics in the area of naming. Glossary bind-to choose a specific lower-level implementation for a particular higher-level semantic construct. In the case of names, binding is choosing a mapping from a name to a particular object, usually identified by a lower-level name. catalog-an object consisting of a table of bindings between symbolic names and objects. A catalog is an example of a context (q.v.). closure-abstractly, the mechanism that connects an object that refers to other objects by name with the context in which those names are bound. component-an object that is contained by another object. context-a particular set of bindings of names to objects: a name is always interpreted relative to some context. indirect entry-in a naming network, an entry in a catalog that binds a name, instead of to an object, to the path name of some catalog entry elsewhere in the naming network. library-a shared catalog (or set of catalogs) that contains objects such as programs and data to which several users refer. A computer system usually has a system library, which contains commonly used programs. 3 limited context-a context in which only a few names can be expressed, and therefore names must be reused. modular sharing-sharing of an object without the need to know of the implementation of the shared object. From the point of view of naming, modular sharing is sharing without need to know of the names used by the shared object. name-in practice, a character-or bit-string identifier that is used to refer to an object on which computation is performed. Abstractly, …

[1]  Daniel L. Murphy Storage organization and management in TENEX , 1972, AFIPS '72 (Fall, part I).

[2]  A. Retrospective,et al.  The UNIX Time-sharing System , 1977 .

[3]  Robert C. Daley,et al.  The Multics virtual memory , 1972, Commun. ACM.

[4]  Donald E. Knuth,et al.  The Art of Computer Programming, Volume I: Fundamental Algorithms, 2nd Edition , 1997 .

[5]  D A Henderson The Binding Model: A Semantic Base for Modular Programming Systems , 1975 .

[6]  Peter Henderson,et al.  A lazy evaluator , 1976, POPL.

[7]  W LampsonButler,et al.  Reflections on an operating system design , 1976 .

[8]  William A. Wulf,et al.  HYDRA , 1974, Commun. ACM.

[9]  Jerome H. Saltzer,et al.  A hardware architecture for implementing protection rings , 1971, SOSP '71.

[10]  Anatol W. Holt,et al.  Program organization and record keeping for dynamic storage allocation , 1961, IFIP Congress.

[11]  J. K. Iliffe,et al.  A Dynamic Storage Allocation Scheme , 1962, Comput. J..

[12]  Roger M. Needham,et al.  Protection systems and protection implementations , 1899, AFIPS '72 (Fall, part I).

[13]  P. A. Crisman,et al.  The compatible time-sharing system : a programmer's guide , 1965 .

[14]  Richard William Watson,et al.  Timesharing system design concepts , 1970 .

[15]  Robert H. Thomas,et al.  A resource sharing executive for the ARPANET , 1973, AFIPS National Computer Conference.

[16]  David D. Redell,et al.  NAMING AND PROTECTION IN EXTENDABLE OPERATING SYSTEMS , 1974 .

[17]  Robert S. Fabry,et al.  Capability-based addressing , 1974, CACM.

[18]  Jerome H. Saltzer,et al.  A hardware architecture for implementing protection rings , 1972, CACM.

[19]  Jack B. Dennis,et al.  Virtual memory, processes, and sharing in Multics , 1967, CACM.

[20]  Tom Kilburn,et al.  One-Level Storage System , 1962, IRE Trans. Electron. Comput..

[21]  F. J. Corbató,et al.  The Compatible Time-Sharing System: A Programmer's Guide , 1963 .

[22]  Joel Moses The function of FUNCTION in LISP or why the FUNARG problem should be called the environment problem , 1970, SIGS.

[23]  Jack B. Dennis,et al.  Segmentation and the Design of Multiprogrammed Computer Systems , 1965, JACM.

[24]  Elliott I. Organick,et al.  The multics system: an examination of its structure , 1972 .

[25]  Alexander G. Fraser,et al.  On the meaning of names in programming systems , 1971, CACM.

[26]  Philippe Janson,et al.  REMOVING THE DYNAMIC LINKER FROM THE SECURITY KERNEL OF A COMPUTING UTILITY , 1974 .

[27]  Roger M. Needham,et al.  The CAP filing system , 1977, SOSP '77.

[28]  Elliott I. Organick,et al.  Computer System Organization: The B5700/B6700 Series , 1973 .

[29]  R. G. Bratt MINIMIZING THE NAMING FACILITIES REQUIRING PROTECTION IN A COMPUTING UTILITY , 1975 .