An environment is a set of name-value bindings, maintained for a particular user, that are provided to a process at runtime. This can provide a great deal of flexibility in tailoring the behavior of programs to a particular user's preferences. It can also serve as a simple means of interprocess communication . To be useful, however, the environment must take into account the natural structure of a user's work. Groups of cooperating processes form jobs and should share certain bindings. At the same time. processes in different jobs running on the same machine should share other bindings. A Oat name space for bindings does not provide sufficient structure to handle these overlapping sets of shared bindings. The PPM Environment Manager provides an environment with a variety of contexts, allowing bindings to be, for example, machine-specif ic or application-spe cific. The environment, however, remains simple to use. The PPM Environment Manager was designed to support multiprocess programs, distributed programs, and programs offloaded in a network of machines. A prototype has been implemented on top of UNIX 4.3BSD.
EnvironmentsInformation that is useful to or necessary for a running program may not be determinable when the program is written, compiled, and linked. For example, a program may need to know• the login name of the user running the program • the home directory of the user • the desired time to wait for some response before giving up • the address of a service • the user's preferred font size for displayed output One approach to providing this information at runtime is to bind a value to a logical name known to a program and to have the program call a routine to evaluate this binding. Following this approach, we would like to give each user fine-grained control over exactly the information provided to each program that he runs. We would like, at the same time, to make it easy for the user