Claims
- 1. A distributed operating system incorporating a distributed select function, comprising:
a first agent running in a first memory space; a second agent running in a second memory space; a first data structure for interprocess communication residing in the first memory space; and a second data structure for interprocess communication residing in the second memory space; wherein the first and second agents send and receive messages between the first and the second memory spaces and provide a standard select function interface to user processes.
- 2. A distributed computing environment, comprising:
a plurality of central processing units; a plurality of memory spaces; a communication channel for communicating messages between the plurality of central processing units; a first agent running in a first memory space; a second agent running in a second memory space; a first data structure for interprocess communication residing in the first memory space; and a second data structure for interprocess communication residing in the second memory space, wherein the first and second agents send and receive messages between the first and the second memory spaces and provide a standard select function interface to user processes.
- 3. A method in a computing environment having multiple CPUs and multiple memory spaces for facilitating communication between a process in a first memory space and a process in a second memory space, comprising:
creating a first agent process in the first memory space; directing to the agent a request by a first process for creating an interprocess connection to a process in a second memory space; creating a data structure in the first memory space for facilitating interprocess communication; transmitting a message representing the request from the agent to the second memory space; receiving the request at a second process in the second memory space; creating a data structure in the second memory space for facilitating interprocess communication; using the first and the second data structures to communicate data with processes in the respective memory spaces; and using the agent and the second process to communicate data between the data structures.
- 4. The method according to claim 3 wherein the first process is unaware that it is running in a distributed memory space environment.
- 5. The method according to claim 3 wherein the process in the second memory space is a second agent.
- 6. The method according to claim 3 wherein the second process in the second memory space is a continuously running I/O process.
- 7. In a distributed computing environment, a computer readable medium embodying program code with instructions for facilitating communication between a process existing in a first memory space and a process existing in a second memory space, comprising:
instructions for creating a first agent process in the first memory space; instructions for directing to the agent a request by a first process for creation of an interprocess connection to a process in a second memory space; instructions for creating a data structure in the first memory space for facilitating interprocess communication; instructions for transmitting a message representing the request from the agent to the second memory space; instructions for receiving the request at a second process in the second memory space; instructions for creating a data structure in the second memory space for facilitating interprocess communication; instructions for using the first and the second data structures to communicate data with processes in the respective memory spaces; and instructions for using the agent and the second process to communicate data between the data structures.
- 8. A distributed computing system for facilitating communication between a process existing in a first memory space and a process existing in a second memory space, comprising:
means for creating a first agent process in the first memory space; means for directing to the agent a request by a first process for creation of an interprocess connection to a process in a second memory space; means for creating a data structure in the first memory space for facilitating interprocess communication; means for transmitting a message representing the request from the agent to the second memory space; means for receiving the request at a second process in the second memory space; means for creating a data structure in the second memory space for facilitating interprocess communication; means for using the first and the second data structures to communicate data with processes in the respective memory spaces; and means for using the agent and the second process to communicate data between the data structures.
- 9. A method for facilitating a system function call and interprocess communication in a distributed computer system environment in which two processes are instantiated, each in its own memory space that is associated with its operating system, and in which a first of the two processes calls a system function for establishing interprocess communication with the second of the two process, comprising:
instantiating an agent in each of the memory spaces, a first agent in the memory space of the first process and a second agent in the memory space of the second process; receiving the system function call from the first process at its operating system; prompting the first agent, in response to the system function call, to create a shadow socket in the memory space of the first process; prompting the second agent, in response to a message from the first agent about the system function call, to create a real socket in the memory space of the second process, the real socket receiving data associated with the system function call; transferring the data from the real socket to the shadow socket; and prompting the first agent to wake-up the first process when the I/O data is available in the shadow socket, wherein the first socket is not aware that the second process is in a remote memory space.
- 10. A method as in claim 9, wherein the first and second processes are user and input/output (I/O) processes, respectively, such that the real socket receives I/O data as well as connection information including the I/O data destination at the first memory space.
- 11. A method as in claim 9, wherein the system function call is select( ).
- 12. A distributed computer system for facilitating a system function call and interprocess communication in which two processes are instantiated, each in its own memory space that is associated with its operating system and in which a first of the two processes is configured to call a system function for establishing interprocess communication with the second of the two process, comprising:
means for instantiating an agent in each of the memory spaces, a first agent in the memory space of the first process and a second agent in the memory space of the second process; means for receiving the system function call from the first process at its operating system; means for prompting the first agent, in response to the system function call, to create a shadow socket in the memory space of the first process; means for prompting the second agent, in response to a message from the first agent about the system function call, to create a real socket in the memory space of the second process, the socket receiving data associated with the system function call; means for transferring the data from the real socket to the shadow socket; and means for prompting the first agent to wake-up the first process when the l/O data is available in the shadow socket, wherein the first socket is not aware that the second process is in a remote memory space.
REFERENCE TO PRIOR APPLICATION
[0001] This application is a Division of U.S. Application Ser. No. 08/835,398, filed Apr. 7, 1997, titled “Method and Apparatus for Supporting A Select( ) System Call and Interprocess Communication In A Fault-Tolerant, Scalable Distributed Computer Environment,” which application is incorporated herein by reference and which application claims the benefit of U.S. Provisional Application Ser. No. 60/024,769, filed Aug. 21, 1996.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60024796 |
Aug 1996 |
US |
Divisions (1)
|
Number |
Date |
Country |
Parent |
08835398 |
Apr 1997 |
US |
Child |
10120606 |
Apr 2002 |
US |