System Administrator Manual
7.0 Legion core objects
The Legion core object model specifies the composition and functionality of Legion's core objects--those objects that cooperate to create, locate, manage, and remove objects in the Legion system. Legion provides implementations of the objects that comprise the core, but users are not obligated to use them.
Although the object model includes, and relies on, a few single logical Legion objects, access to these objects is limited because of heavy caching and hierarchical organization of lower level objects. Objects can be replicated to reduce any contention, and an increase in the number of Legion computing resources will not increase competition for the few "centralized" Legion objects.
In the Legion object model, each Legion object belongs to a class, and each class is itself a Legion object. All Legion objects export a common set of object-mandatory member functions, including save_state() and restore_state(). Class objects export an additional set of class-mandatory member functions, including create(), derive(), and inherit_from(). The power of the object model comes from the important role of Legion classes. Much of what is usually considered system-level responsibility is delegated to user-level class objects. Legion classes are responsible for creating and locating their instances and subclasses, and for selecting appropriate security and object placement policies. The core Legion objects simply provide mechanisms for user-level classes to implement the policies and algorithms that they choose. Assuming that we define the operations on core objects appropriately (i.e., that they are the right set of primitive operations to enable a wide enough range of policies to be implemented), this philosophy effectively eliminates the danger of imposing inappropriate policy decisions, and opens up a much wider range of possibilities for the applications developer.
7.1 Core class objects
There are six core objects: LegionObject, LegionBindingAgent, LegionHost, LegionVault, ContextObject, and ImplementationObject. From these, the core class types--hosts, vaults, and binding agents--are derived. The core classes set the minimal interface that the core objects export. Every core object is an instance of some class that is eventually derived from one of the class objects above.
- Legion object: The Legion object is the common unit of the Legion system. The core LegionObject provides the fundamental characteristics and object-mandatory functions of all Legion objects.
- Binding agents: Binding agents are Legion objects that map each LOID to its LOA (Legion Object Address). A <LOID, LOA> pair is called a binding. Binding agents can cache bindings and organize themselves in hierarchies and software combining trees in order to implement the binding mechanism in a scalable and efficient manner.
- Context objects: Context objects map context names to LOIDs, allowing users to name objects with arbitrary high-level string names and enabling multiple disjoint name spaces to exist within Legion. All objects have a current context and a root context, which define parts of the name space in which context names are evaluated.
- Host objects: Host objects represent processors in Legion. One or more host objects run on each computing resource that is included in Legion. Host objects create and manage processes for active Legion objects on their host. Classes invoke the member functions on host objects in order to activate instances on the computing resources that the hosts represent. Representing computing resources with Legion objects abstracts the heterogeneity that results from different operating systems having different mechanisms for creating processes. Further, it provides resource owners with the ability to manage and control their resources as they see fit.
- Vault objects: Just as a host object represents computing resources and maintains active Legion objects, a vault object represents persistent storage, but only for the purpose of maintaining the state, in OPRs, of the inert Legion objects that the vault object supports.
- Implementation objects: Implementation objects allow other Legion objects to run as processes in the system. An implementation object typically contains machine code that is executed when a request to create or activate an object is made. More specifically, an implementation object is generally maintained as an executable file that a host object can execute when it receives a request to activate or create an object. An implementation object (or the name of an implementation object) is transferred from a class object to a host object to enable the host to create processes with the appropriate characteristics.
For more detailed information on the Legion core objects, please see "About the Legion core object model" in the Developer Manual.
Back to System Management sectional index
Back to System Administrator Manual Table of Contents