System and method for distributing processing of a single-process application having first and second objects in a network having local and remote processes
AssigneeThe Aerospace Corporation
InventorMatthew T. Presley
Life of this patent
Estimating the term…
Abstract
A computer system and method are provided for making modifications to runtime coding of object-oriented software that enables distributed execution by automatically modifying object class definitions as the objects are loaded into the executing process. The code modifications cause instances of the classes to interact with a distributed runtime system that allows all objects to be transparently migrated between processes, thereby permitting load balancing and periodic maintenance, without manual recoding of the application source code and without need for a priori knowledge of the program flow.
Claims20
A method for distributing processing of a single-process application in a network having local and remote processes, the single-process application comprising at least first and second objects, each of the first and second objects having pre-existing class definitions, the method comprising the steps of:
- initiating a runtime system on each of the local and remote processes;
- upon loading the single-process application, modifying the pre-existing class definitions to generate modified class definitions such that the runtime system is invoked when an object of that class is instantiated and at the start and end of each object function;
- instantiating instances of the first and second objects on the local process using the modified class definitions;
- responsive to an invocation, coordinating the runtime systems on the local and remote processes to migrate the second object instance to the remote process while transforming the second object instance on the local process into an object proxy;
- executing the first object instance including invoking the second object instance on the remote process via the object proxy, invocation of the second object instance being mediated by the runtime systems on the local and remote processes;
- coordinating the runtime systems on the local and remote processes to migrate the first object instance to the remote process while generating an object proxy for the first object instance on the local process;
- and
- after migrating the first object instance to the remote process, shutting down the local process without disrupting execution of the application.
A computer system that enables distributed processing of a single-process application, the single-process application comprising at least first and second objects using first and second processes, each of the first and second objects having pre-existing class definitions, the computer system comprising:
- a runtime system;
- a class modifier routine programmed to modify the pre-existing class definitions to generate modified class definitions upon loading the single-process application such that the runtime system is invoked when an object of that class is instantiated and at the start and end of each object function;
- and
- at least one processor configured to execute the single-process application, the class modifier routine, and the first and second processes, and to instantiate the first and second objects using the modified class definitions,
- the runtime system being programmed to identify and track at least the second object instance, to migrate the second object instance from the first process to the second process, and to transform the second object instance on the first process into an object proxy responsive to an invocation,
- the processor being configured to execute instances of the runtime system associated with each of the first and second processes and to execute the first object instance including invoking the second object instance on the second process via the object proxy, the invocation of the second object instance being mediated by instances of the runtime system associated with each of the first and second processes, and
- the processor further being configured to coordinate the instances of the runtime system associated with the first and second processes to migrate the first object instance to the second process while generating an object proxy for the first object instance on the first process and, after migrating the first object instance to the second process, to shut down the first process without disrupting execution of the application.
Dependencies are inferred from the claim text.