Distributed agent software system and method having enhanced process mobility and communication in a computer network
First Claim
1. A distributed software system for use with a plurality of computer machines connected as a network, the system comprising:
- a plurality of bases, each base providing a local address space and computer resources on one of the plurality of computer machines;
at least one agent comprising a protection domain and a global object space, wherein the protection domain of the at least one agent resides on at least one of the plurality of bases;
a plurality of objects contained within the protection domain of the at least one agent, a first object residing on a first base of the plurality of bases and a second object residing on a second base of the plurality of bases, wherein the global object space includes a mapping of symbolic references of objects within the at least one agent to corresponding physical addresses of said objects, whereby the first object on the first base may access the second object on the second base without knowledge of the physical address of the second object on the second base by obtaining a symbolic reference to the second object from the first object and obtaining the corresponding physical address of the second object using the mapping of the global object space; and
at least one runtime system connected to the first base and the second base, the at least one runtime system facilitating migration of agents and objects from at least the first base to at least the second base.
3 Assignments
0 Petitions
Accused Products
Abstract
A distributed software system and method are provided for use with a plurality of potentially heterogeneous computer machines connected as a network. The system may comprise at least one agent comprising a protection domain, wherein the protection domain of the at least one agent resides on at least two of the plurality of computer machines. A plurality of objects is contained within the protection domain of the at least one agent, a first object residing on a first of the at least two computer machines and a second object residing on a second of the at least two computer machines. The objects are selectively movable among the at least two computer machines by a programmer of the system. The first object on the first computer machine may access the second object on the second computer machine in a location-transparent or network-transparent manner; that is, without knowledge of the physical address of the second object on the second computer machine and regardless of the selective movement of either the first object or the second object among the first and second computer machines. The agent is mobile and may migrate, in whole or in part, to any other machine or machines in the network. Each distributed agent may be distributed among one, several or many of the machines of the network. Migration of agents, even during process execution, is straightforward and maintains consistency across the network. Specifically, other agents may continue to access a particular agent after it has migrated without any prior notification to the agents themselves.
-
Citations
69 Claims
-
1. A distributed software system for use with a plurality of computer machines connected as a network, the system comprising:
-
a plurality of bases, each base providing a local address space and computer resources on one of the plurality of computer machines;
at least one agent comprising a protection domain and a global object space, wherein the protection domain of the at least one agent resides on at least one of the plurality of bases;
a plurality of objects contained within the protection domain of the at least one agent, a first object residing on a first base of the plurality of bases and a second object residing on a second base of the plurality of bases, wherein the global object space includes a mapping of symbolic references of objects within the at least one agent to corresponding physical addresses of said objects, whereby the first object on the first base may access the second object on the second base without knowledge of the physical address of the second object on the second base by obtaining a symbolic reference to the second object from the first object and obtaining the corresponding physical address of the second object using the mapping of the global object space; and
at least one runtime system connected to the first base and the second base, the at least one runtime system facilitating migration of agents and objects from at least the first base to at least the second base. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
an object memory which stores objects in the subagent;
a task memory which stores task frames in the subagent;
program code for the agent to which the subagent belongs;
a subagent control storage comprising;
an agent identifier indicating the agent to which the subagent belongs;
an object table having a mapping which maps symbolic references of objects to corresponding physical addresses of said objects in the object memory;
a task stack which stores a plurality of task thread pointers in the task memory;
and wherein the at least one runtime system further comprises; an agent manager for each base managing a plurality of subagent control storages of subagents residing on the corresponding base;
an object manager for each base managing a plurality of object memories for a plurality of subagents residing on the corresponding base;
an object serializer for each base serializing objects for transmitting the objects across the network to at least one base other than the corresponding base;
a task executer for each base reading program code, creating task stacks in task memories, and executing the program code;
a task serializer for each base serializing task stacks for transmitting the stacks across the network to at least one base other than the corresponding base;
a remote access controller for each base receiving remote object access messages from a task executer on at least one base other than the corresponding base and sending remote object access requests to at least one base other than the corresponding base; and
a communication system coordinating physical communication between the computer machines.
-
-
3. The distributed software system of claim 2, wherein the program code is stored as class files in the subagent.
-
4. The distributed software system of claim 2, wherein the runtime system further facilitates migration of tasks from the first base to the second base.
-
5. The distributed software system of claim 1, wherein the first object is a task and the second object is a data object.
-
6. The distributed software system of claim 1, wherein the global object space is implemented using global identifiers for addressing each object.
-
7. The distributed software system of claim 1, wherein:
-
the first object is a first task residing within the protection domain of the at least one agent and executing within the first base; and
the second object is a second task residing within the protection domain of the at least one agent and executing within the second base, wherein the first task and the second task execute concurrently on the first and second bases, respectively, and within the same protection domain of the at least one agent.
-
-
8. The distributed software system of claim 1, wherein each base may provide the local address and computer resources to a plurality of agents simultaneously.
-
9. The distributed software system of claim 1, wherein the first base and the second base are located in heterogeneous computer machines.
-
10. A distributed software system for use with a plurality of computer machines connected as a network, the system comprising:
-
a plurality of bases, each base providing a local address space and computer resources on one of a plurality of computer machines;
at least one agent comprising a protection domain, wherein the protection domain of the at least one agent resides on at least one of the plurality of bases;
a plurality of objects contained within the protection domain of the at least one agent, a first object residing on a first base of the plurality of bases and a second object residing on a second base of the plurality of bases, wherein the first object on the first base may access the second object on the second base without knowledge of the physical address of the second object on the second base, wherein the access by the first object of the second object is a method call specifying at least one of an argument and a return value, wherein a symbolic reference to the at least one argument or return value may be passed to or returned from the called method to identify the at least one argument or return value, and wherein the physical address of the at least one argument or return value need not be passed to or returned from the called method to identify the at least one argunent or return value so as to render the method call network transparent; and
at least one runtime system connected to the first base and the second base, the at least one runtime system facilitating migration of agents and objects from at least the first base to at least the second base. - View Dependent Claims (11, 12)
-
-
13. A distributed software system for use with a plurality of computer machines connected as a network, the system comprising:
-
at least one agent comprising a protection domain and a global object space, wherein the protection domain of the at least one agent resides on at least two of the plurality of computer machines; and
a plurality of objects contained within the protection domain of the at least one agent, the objects being selectively movable among the plurality of computer machines by a programmer of the system, a first object residing on a first of the plurality of computer machines and a second object residing on a second of the plurality of computer machines, wherein the global object space includes a mapping of symbolic references of objects within the at least one agent to corresponding physical addresses of said objects, whereby the first object on the first computer machine may access the second object on the second computer machine without knowledge of the physical address of the second object on the second computer machine by obtaining a symbolic reference to the second object from the first object and obtaining the corresponding physical address of the second object using the mapping of the global object space, and regardless of the selective movement of either the first object or the second object among the first and second computer machines. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20, 21)
the first object is a first task residing within the protection domain of the at least one agent and executing within the first computer machine; and
the second object is a second task residing within the protection domain of the at least one agent and executing within the second computer machine, wherein the first task and the second task execute concurrently on the first and second computer machines, respectively, and within the same protection domain of the at least one agent.
-
-
17. The distributed software system of claim 13, further comprising:
a plurality of bases, each base providing a local address space and computer resources to at least one agent on one of the plurality of computer machines, wherein the at least one agent resides on at least one base.
-
18. The distributed software system of claim 17, wherein the at least one agent resides on at least a first base on the first computer machine and also on a second base on the second computer machine, and wherein the first object resides on the first base and the second object resides on the second base.
-
19. The distributed software system of claim 17, wherein each base may provide the local address and computer resources to a plurality of agents simultaneously.
-
20. The distributed software system of claim 17, wherein each base is implemented as an operating system-level process.
-
21. The distributed software system of claim 13, wherein the first computer machine and the second computer machine are heterogeneous.
-
22. A distributed software system for use with a plurality of computer machines connected as a network, the system comprising:
-
at least one agent comprising a protection domain, wherein the protection domain of the at least one agent resides on at least two of the plurality of computer machines; and
a plurality of objects contained within the protection domain of the at least one agent, the objects being selectively movable among the at least two computer machines by a programmer of the system, a first object residing on a first of the at least two computer machines and a second object residing on a second of the at least two computer machines, wherein the first object on the first computer machine may access the second object on the second computer machine without knowledge of the physical address of the second object on the second computer machine, and regardless of the selective movement of either the first object or the second object among the first and second computer machines, and wherein the access by the first object of the second object is a method call specifying at least one of an argument and a return value, wherein a symbolic reference to the at least one argument or return value may be passed to or returned from the called method to identify the at least one argument or return value, and wherein the physical address of the at least one argument or return value need not be passed to or returned from the called method to identify the at least one argument or return value so as to render the method call network transparent. - View Dependent Claims (23, 24)
-
-
25. A distributed software system for use with a plurality of computer machines connected as a network, the system comprising:
-
a plurality of bases, each base providing a local address space and computer resources on one of the plurality of computer machines;
at least one agent residing on a first base and comprising a protection domain, wherein the protection domain of the at least one agent resides on at least one of the plurality of bases;
at least one object residing within the protection domain of the at least one agent and including at least one anchored object, the at least one anchored object being instantiated on the first base from a base-dependent class and which is permanently unable to be moved from the first base to any other base; and
at least one runtime system connected to the plurality of bases, the at least one runtime system including a communication system which facilitates migration of agents and objects among the plurality of bases. - View Dependent Claims (26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39)
an object memory which stores objects in the subagent;
a task memory which stores task frames in the subagent;
program code for the agent to which the subagent belongs;
a subagent control storage comprising;
an agent identifier indicating the agent to which the subagent belongs;
an object table having a mapping which maps symbolic references of objects to corresponding physical addresses of said objects in the object memory;
a task stack which stores a plurality of task thread pointers in the task memory;
and wherein the at least one runtime system further comprises; an agent manager for each base managing a plurality of subagent control storages of subagents residing on the corresponding base;
an object manager for each base managing a plurality of object memories for a plurality of subagents residing on the corresponding base;
an object serializer for each base serializing objects for transmitting the objects across the network to at least one base other than the corresponding base;
a task executer for each base reading program code, creating task stacks in task memories, and executing the program code;
a task serializer for each base serializing task stacks for transmitting the stacks across the network to at least one base other than the corresponding base;
a remote access controller for each base receiving remote object access messages from a task executer on at least one base other than the corresponding base and sending remote object access requests to at least one base other than the corresponding base; and
a communication system coordinating physical communication between the computer machines.
-
-
27. The distributed software system of claim 26, wherein the program code is stored as class files in the subagent.
-
28. The distributed software system of claim 26, wherein the runtime system further facilitates migration of tasks among the plurality of bases.
-
29. The distributed software system of claim 25, wherein the at least one agent further comprises a first subagent residing on a first base and a second subagent simultaneously residing on a second base, and wherein the at least one agent migrates in part to a third base, whereby the first subagent remains on the first base and the second subagent migrates to the third base.
-
30. The distributed software system of claim 25, wherein the at least one agent further comprises a first subagent residing on a first base and a second subagent simultaneously residing on a second base, and wherein the at least one agent migrates in whole to a third base, whereby both the first and second subagent merge and migrate to the third base as one subagent.
-
31. The distributed software system of claim 25, wherein the at least one agent may be instructed to migrate from the first base to a second base by a first migrate method, whereby the at least one anchored object remains on the first base while the remainder of the at least one agent migrates to the second base.
-
32. The distributed software system of claim 31, wherein the at least one agent may be instructed to migrate from the first base to the second base by a second migrate method, whereby the at least one anchored object on the first base is abandoned while the remainder of the at least one agent migrates to the second base.
-
33. The distributed software system of claim 25, wherein the at least one agent may be instructed to migrate from the first base to a second base by a first migrate method, whereby the at least one anchored object is abandoned while the remainder of the at least one agent migrates to the second base.
-
34. The distributed software system of claim 25, further comprising at least one pinned object which is temporarily unable to be moved from the first base to any other base, the at least one pinned object residing in the at least one agent, and wherein the at least one agent may be instructed to migrate from the first base to a second base by a first migrate method, whereby the at least one pinned object remains on the first base while the remainder of the at least one agent migrates to the second base.
-
35. The distributed software system of claim 34, wherein the at least one agent may be instructed to migrate from the first base to the second base by a second migrate method, whereby the at least one pinned object on the first base is abandoned while the remainder of the at least one agent migrates to the second base.
-
36. The distributed software system of claim 25, further comprising at least one pinned object which is temporarily unable to be moved from the first base to any other base, the at least one pinned object residing in the at least one agent, and wherein the at least one agent may be instructed to migrate from the first base to a second base by a first migrate method, whereby the at least one pinned object on the first base is abandoned while the remainder of the at least one agent migrates to the second base.
-
37. The distributed software system of claim 36, wherein the at least one pinned object may be unpinned so as to permit the unpinned object to be moved from the first base to any other base, whereby the unpinned object on the first base may migrate to the second base when the at least one agent is instructed to migrate from the first base to the second base.
-
38. The distributed software system of claim 25, wherein a first agent residing on a first base possesses a reference to an object in a second agent residing on a second base, and wherein after the first agent migrates to a third base with the first agent reference, the first agent reference remains valid.
-
39. The distributed software system of claim 25, wherein a first agent residing on a first base possesses a reference to a first object in a second agent residing on a second base, wherein after the second agent migrates to a third base with the first object, a second object is created for permitting forwarding access from the first base to the actual location of the first object residing on the third base so that the first agent reference remains valid.
-
40. A distributed software system for use with a plurality of computer machines connected as a network, the system comprising:
-
a plurality of bases, each base providing a local address space and computer resources on one of the plurality of computer machines;
at least one agent comprising a protection domain, wherein the protection domain of the at least one agent resides on at least one of the plurality of bases;
at least one object residing within the protection domain of the at least one agent;
at least one runtime system connected to the plurality of bases, the at least one runtime system including a communication system which facilitates migration of agents and objects among the plurality of bases;
a first method calling protocol for calling, from a first base, a method to a first object residing on a second base, wherein the method is transmitted from the first base to the second base and wherein the method is executed on the second base where the first object resides; and
a second method calling protocol for calling, from the first base, a method to a second object residing on the second base, wherein the method is executed on the first base using method code on the first base corresponding to the second object method and a remote reference to the second object on the second base. - View Dependent Claims (41)
-
-
42. A method for implementing a network-centric computer software programming system for a network comprising a plurality of computer machines, the method comprising the steps of:
-
defining a plurality of object-oriented classes including an object class, an agent class, a base class and a task class;
defining an object migrate method in the object class that migrates a selected object instance to a location specified with the base class;
defining an agent migrate method in the agent class that migrates a selected agent process to a location specified with the base class, including migration of all object instances and task instances within the agent;
instantiating a first agent process according to the agent class, the first agent process including a plurality of task instances and object instances and distributed among the plurality of computer machines;
performing the object migrate method and the agent migrate method within the first agent process;
instantiating a first base and a second base according to the base class;
instantiating a task according to the task class on the first base;
instantiating an object according to the object class on the second base, the object having a method; and
defining a method calling protocol wherein calling, from the task on the first base, the method of the object on the second base includes executing the method on the first base using method code on the first base corresponding to the object method and a remote reference to the object on the second base. - View Dependent Claims (43, 44, 45, 46, 47, 48, 49, 50)
instantiating a first base instance according to the base class; and
instantiating a second agent process according to the agent class, wherein the first and second agent processes execute simultaneously on a base specified with the first base instance.
-
-
48. The method for implementing a network-centric computer software programming system for a network of computer machines according to claim 42, further comprising the step of defining a partial agent migrate method in the agent class that migrates a selected part of an agent process residing on a first base specified with a first base instance to a second base specified with a second base instance, including migration of all object instances and task instances on the first base within the selected part of the agent process.
-
49. The method for implementing a network-centric computer software programming system for a network of computer machines according to claim 44, further comprising the step of defining a whole agent migrate method in the agent class that migrates a selected whole agent process residing on a first base specified with a first base instance to a second base specified with a second base instance, including migration of all object instances and task instances within the selected agent process.
-
50. The method for implementing a network-centric computer software programming system for a network of computer machines according to claim 42, wherein the method code on the first base corresponding to the object method is stored in a class file on the first base.
-
52. A method for implementing a network-centric computer software programming system for a network comprising a plurality of computer machines, the method comprising the steps of:
-
defining a plurality of object-oriented classes including an object class, an agent class, a base class and a task class;
defining an object migrate method in the object class that migrates a selected object instance to a location specified with the base class;
defining an agent migrate method in the agent class that migrates a selected agent process to a location specified with the base class, including migration of all object instances and task instances within the agent;
instantiating a first agent process according to the agent class, the first agent process including a plurality of task instances and object instances and distributed among the plurality of computer machines;
performing the object migrate method and the agent migrate method within the first agent process;
instantiating a first base according to the base class;
instantiating a second agent process according to the agent class, the second agent process residing at least in part on the first base;
instantiating an anchored object from a base-dependent object class, the anchored object being associated with a second agent process located on a first base specified with a base instance and being unable to be moved to other bases; and
defining an agent migrate method in the agent class that migrates the second agent process to another base specified with a base instance, including migration of all task instances and object instances within the second agent process except for the anchored object. - View Dependent Claims (51)
-
-
53. A method for implementing a network-centric computer software programming system for a network comprising a plurality of computer machines, the method comprising the steps of:
-
defining a plurality of object-oriented classes including an object class, an agent class, a base class and a task class;
defining an object migrate method in the object class that migrates a selected object instance to a location specified with the base class;
defining an agent migrate method in the agent class that migrates a selected agent process to a location specified with the base class, including migration of all object instances and task instances within the agent;
instantiating a first agent process according to the agent class, the first agent process including a plurality of task instances and object instances and distributed among the plurality of computer machines;
performing the object migrate method and the agent migrate method within the first agent process;
instantiating a first base according to the base class;
instantiating a second agent process according to the agent class, the second agent process residing at least in part on the first base;
instantiating a first object according to the object class, the first object residing within the second agent process;
pinning the first object to the first base; and
defining an agent migrate method in the agent class that migrates the second agent process from the first base to another base specified with the base class, including migration of all task instances and object instances within the second agent process except for the pinned first object.
-
-
54. A method for implementing a network-centric computer software programming system for a network comprising a plurality of computer machines, the method comprising the steps of:
-
defining a plurality of object-oriented classes including an object class, an agent class, a base class and a task class;
defining an object migrate method in the object class that migrates a selected object instance to a location specified with the base class;
defining an agent migrate method in the agent class that migrates a selected agent process to a location specified with the base class, including migration of all object instances and task instances within the agent;
instantiating a first agent process according to the agent class, the first agent process including a plurality of task instances and object instances and distributed among the plurality of computer machines;
performing the object migrate method and the agent migrate method within the first agent process;
instantiating a first base and a second base according to the base class;
instantiating a task according to the task class on the first base;
instantiating an object according to the object class on the second base, the object having a method; and
defining a method calling protocol wherein calling, from the task on the first base, the method of the object on the second base includes transmitting the method from the first base to the second base and executing the method on the second base.
-
-
55. A distributed software system for use with a plurality of computer machines connected as a network, the system comprising:
-
a plurality of bases, each base providing a local address space and computer resources on one of the plurality of computer machines;
at least one agent residing on a first base and comprising a protection domain, wherein the protection domain of the at least one agent resides on at least one of the plurality of bases;
at least one object residing within the protection domain of the at least one agent and including at least one pinned object which is temporarily unable to be moved from the first base to any other base; and
at least one runtime system connected to the plurality of bases, the at least one runtime system including a communication system which facilitates migration of agents and objects among the plurality of bases. - View Dependent Claims (56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69)
an object memory which stores objects in the subagent;
a task memory which stores task frames in the subagent;
program code for the agent to which the subagent belongs;
a subagent control storage comprising;
an agent identifier indicating the agent to which the subagent belongs;
an object table having a mapping which maps symbolic references of objects to corresponding physical addresses of said objects in the object memory;
a task stack which stores a plurality of task thread pointers in the task memory;
and wherein the at least one runtime system further comprises; an agent manager for each base managing a plurality of subagent control storages of subagents residing on the corresponding base;
an object manager for each base managing a plurality of object memories for a plurality of subagents residing on the corresponding base;
an object serializer for each base serializing objects for transmitting the objects across the network to at least one base other than the corresponding base;
a task executer for each base reading program code, creating task stacks in task memories, and executing the program code;
a task serializer for each base serializing task stacks for transmitting the stacks across the network to at least one base other than the corresponding base;
a remote access controller for each base receiving remote object access messages from a task executer on at least one base other than the corresponding base and sending remote object access requests to at least one base other than the corresponding base; and
a communication system coordinating physical conununication between the computer machines.
-
-
57. The distributed software system of claim 56, wherein the program code is stored as class files in the subagent.
-
58. The distributed software system of claim 56, wherein the runtime system further facilitates migration of tasks among the plurality of bases.
-
59. The distributed software system of claim 55, wherein the at least one agent further comprises a first subagent residing on a first base and a second subagent simultaneously residing on a second base, and wherein the at least one agent migrates in part to a third base, whereby the first subagent remains on the first base and the second subagent migrates to the third base.
-
60. The distributed software system of claim 55, wherein the at least one agent further comprises a first subagent residing on a first base and a second subagent simultaneously residing on a second base, and wherein the at least one agent migrates in whole to a third base, whereby both the first and second subagent merge and migrate to the third base as one subagent.
-
61. The distributed software system of claim 55, further comprising at least one anchored object, the at least one anchored object being instantiated on the first base from a base-dependent class and which is permanently unable to be moved from the first base to any other base, the at least one anchored object residing in the at least one agent, and wherein the at least one agent may be instructed to migrate from the first base to a second base by a first migrate method, whereby the at least one anchored object remains on the first base while the remainder of the at least one agent migrates to the second base.
-
62. The distributed software system of claim 61, wherein the at least one agent may be instructed to migrate from the first base to the second base by a second migrate method, whereby the at least one anchored object on the first base is abandoned while the remainder of the at least one agent migrates to the second base.
-
63. The distributed software system of claim 55, further comprising at least one anchored object, the at least one anchored object being instantiated on the first base from a base-dependent class and which is permanently unable to be moved from the first base to any other base, the at least one anchored object residing in the at least one agent, and wherein the at least one agent may be instructed to migrate from the first base to a second base by a first migrate method, whereby the at least one anchored object is abandoned while the remainder of the at least one agent migrates to the second base.
-
64. The distributed software system of claim 55, wherein the at least one agent may be instructed to migrate from the first base to a second base by a first migrate method, whereby the at least one pinned object remains on the first base while the remainder of the at least one agent migrates to the second base.
-
65. The distributed software system of claim 64, wherein the at least one agent may be instructed to migrate from the first base to the second base by a second migrate method, whereby the at least one pinned object on the first base is abandoned while the remainder of the at least one agent migrates to the second base.
-
66. The distributed software system of claim 55, wherein the at least one agent may be instructed to migrate from the first base to a second base by a first migrate method, whereby the at least one pinned object on the first base is abandoned while the remainder of the at least one agent migrates to the second base.
-
67. The distributed software system of claim 66, wherein the at least one pinned object may be unpinned so as to permit the unpinned object to be moved from the first base to any other base, whereby the unpinned object on the first base may migrate to the second base when the at least one agent is instructed to migrate from the first base to the second base.
-
68. The distributed software system of claim 55, wherein a first agent residing on a first base possesses a reference to an object in a second agent residing on a second base, and wherein after the first agent migrates to a third base with the first agent reference, the first agent reference remains valid.
-
69. The distributed software system of claim 55, wherein a first agent residing on a first base possesses a reference to a first object in a second agent residing on a second base, wherein after the second agent migrates to a third base with the first object, a second object is created for permitting forwarding access from the first base to the actual location of the first object residing on the third base so that the first agent reference remains valid.
Specification