Inter-process communications employing bi-directional message conduits
First Claim
1. One or more computer storage media having processor-executable instructions that, when executed by a computing device having a processor and memory communicatively coupled to the processor, configure the computing device to perform acts comprising:
- facilitating establishment of a bi-directional message conduit having exactly two endpoints, a first endpoint being directly connected to and owned by a first software process and a second endpoint being directly connected to and owned by a second software process, the first software process and the second software process being located within the memory of the computing device and executed within an operating system of the computing device; and
maintaining the bi-directional message conduit for passing multiple messages via the bi-directional message conduit only between the first software process and the second software process, wherein;
the passing consists of passing the multiple messages only from one endpoint of the bi-directional message conduit to another endpoint of the bi-directional message conduit; and
the passing of multiple messages via the bi-directional message conduit is constrained by a processor-readable contract having information that defines a relationship between the first and second software processes with regard to the bi-directional message conduit, the information comprising;
a set of message types that are allowed to be sent through the bi-directional message conduit;
a description of allowable sequences of message exchange between the two endpoints of the bi-directional message conduit; and
an allowed ordering of messages to be sent between the two endpoints of the bi-directional message conduit.
2 Assignments
0 Petitions
Accused Products
Abstract
Described herein is an implementation of an inter-process communications technology. One or more implementations, described herein, facilitate creation of a bi-directional message conduit having exactly two endpoints. A first endpoint is owned by a first software process and a second endpoint is owned by a second software process. One or more implementations, described herein, maintain the bi-directional message conduit for passing multiple messages via the bi-directional message conduit from the first process to the second process, according to established rules that can be checked.
85 Citations
40 Claims
-
1. One or more computer storage media having processor-executable instructions that, when executed by a computing device having a processor and memory communicatively coupled to the processor, configure the computing device to perform acts comprising:
-
facilitating establishment of a bi-directional message conduit having exactly two endpoints, a first endpoint being directly connected to and owned by a first software process and a second endpoint being directly connected to and owned by a second software process, the first software process and the second software process being located within the memory of the computing device and executed within an operating system of the computing device; and maintaining the bi-directional message conduit for passing multiple messages via the bi-directional message conduit only between the first software process and the second software process, wherein; the passing consists of passing the multiple messages only from one endpoint of the bi-directional message conduit to another endpoint of the bi-directional message conduit; and the passing of multiple messages via the bi-directional message conduit is constrained by a processor-readable contract having information that defines a relationship between the first and second software processes with regard to the bi-directional message conduit, the information comprising; a set of message types that are allowed to be sent through the bi-directional message conduit; a description of allowable sequences of message exchange between the two endpoints of the bi-directional message conduit; and an allowed ordering of messages to be sent between the two endpoints of the bi-directional message conduit. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19)
-
-
20. One or more computer storage media having processor-executable instructions that, when executed by a computing device having a processor and memory communicatively coupled to the processor, configure the computing device to perform acts comprising:
-
constructing a first software process for execution within an operating system of the computing device; facilitating establishment of a bi-directional message conduit having exactly two endpoints, a first endpoint being owned by the first software process and a second endpoint being owned by a service of the operating system, wherein the bi-directional message conduit is configured to only connect the first software process and the service of the operating system; maintaining the bi-directional message conduit for passing multiple messages via the bi-directional message conduit only between the first software process and the service of the operating system, wherein; the passing consists of passing the multiple messages only from one endpoint of the bi-directional message conduit to another endpoint of the bi-directional message conduit; the passing is constrained by a processor-readable contract having information that defines a relationship between the first software process and the service of the operating system with regard to the bi-directional message conduit, the information comprising; set of message types that are allowed to be sent through the bi-directional message conduit; description of allowable sequences of message exchange between the two endpoints of the bi-directional message conduit; and an allowed ordering of messages to be sent between the two endpoints of the bi-directional message conduit.
-
-
21. A method comprising:
-
facilitating establishment of a bi-directional message conduit configured to connect a first software process and a second software process and pass messages to and from the first software process from and to the second software process, the first software process and the second software process being executed within an operating system of the computing device and located within the memory of the computing device; and maintaining the bi-directional message conduit for passing multiple messages via the bi-directional message conduit from the first software process to the second software process, wherein; the passing consists of passing the multiple messages only between the first software process and the second software process to which the bi-directional message conduit is connected; and the passing is constrained by a processor-readable contract having information that defines a relationship between the first and second software processes with regard to the bi-directional message conduit, the information comprising; a set of message types that are allowed to be sent through the bi-directional message conduit; a description of allowable sequences of message exchange between two endpoints of the bi-directional message conduit; and an allowed ordering of messages to be sent between the two endpoints of the bi-directional message conduit. - View Dependent Claims (22, 23, 24)
-
-
25. A computing device comprising:
-
one or more processors; memory communicatively coupled to the one or more processors, the memory having stored thereon instructions that, when executed at the computing device, configure the computing device to perform acts comprising; facilitating establishment of a bi-directional message conduit configured to connect a first software process and a second software process and pass messages to and from the first software process from and to the second software process, the first software process and the second software process being executed within an operating system of the computing device and located within the memory of the computing device; and maintaining the bi-directional message conduit for passing multiple messages via the bi-directional message conduit between the first software process and the second software process wherein; the passing consists of passing the multiple messages only between the first software process and the second software process to which the bi-directional message conduit is connected; and the passing is constrained by a processor-readable contract having information that defines a relationship between the first and second software processes with regard to the bi-directional message conduit, the information comprising; a set of message types that are allowed to be sent through the bi-directional message conduit; a description of allowable sequences of message exchange between two endpoints of the bi-directional message conduit; and an allowed ordering of messages to be sent between the two endpoints of the bi-directional message conduit. - View Dependent Claims (26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38)
-
-
39. A method of facilitating establishment of inter-process communication between a first software process and a second software process executed within an operating system of a computing device, the method being implemented at the computing device and comprising:
-
facilitating a request by the first software process for creation of a bi-directional message conduit, the facilitating act comprising creating the requested bi-directional message conduit having exactly two endpoints which are both owned by the first software process, the first software process and the second software process being executed within the operating system of the computing device and located within the memory of the computing device; and facilitating, at the computing device, establishment of inter-process communication between the first software process and the second software process by passing one or more messages from the first software process to the second software process, wherein; one or more passed messages contains a transfer of ownership of one of the endpoints of the bi-directional message conduit; and the passing is constrained by a processor-readable contract having information that defines a relationship between the first software process and the second software processes with regard to the bi-directional message conduit, the information comprising; a set of message types that are allowed to be sent through the bi-directional message conduit; a description of allowable sequences of message exchange between the two endpoints of the bi-directional message conduit; and an allowed ordering of messages to be sent between the two endpoints of the bi-directional message conduit.
-
-
40. A method of facilitating establishment of inter-process communication between a first software process and a second software process executed within an operating system of a computing device, the method being implemented at the computing device and comprising:
providing, at the computing device, communication mechanisms for software processes to communicate with each other by message exchange, the providing act comprising; facilitating establishment of a bi-directional message conduit having exactly two endpoints, each endpoint being owned by, at most, one software process, the bi-directional message conduit directly connecting the software processes owning the two endpoints of the bi-directional message conduit; and maintaining the bi-directional message conduit for passing multiple messages via the bi-directional message conduit between the software processes that are connected by the bi-directional message conduit, wherein the passing is constrained by a processor-readable contract having information that defines a relationship between the software processes with regard to the bi-directional message conduit, wherein the information comprises; a set of message types that are allowed to be sent through the bi-directional message conduit; a description of allowable sequences of message exchange between the two endpoints of the bi-directional message conduit; and an allowed ordering of messages to be sent between the two endpoints of the bi-directional message conduit; and exposing primitive operations of a kernel of an operating system for invocation by one or more software process, a primitive operation being a basic function of kernel that affects only the state of an invoking process that invoke the primitive operation.
Specification