Coordinating reference counting between entities executing within separate address spaces
First Claim
1. An inter-process communication system comprising:
- a processor;
a trusted entity configured to intercept a message from a first process that has received a reference to an object, wherein the message is destined for a second process;
the trusted entity, in response to determining that the message is a message indicating that the first process is finished with the object reference, deleting an entry for the object in a table for the first process, decrementing a global reference count, the global reference count comprising a total of references to the object, and when the global reference count equals to zero, sending the message to the second process; and
the trusted entity, in response to receiving a revoke message from the second process, the second process comprising an exporting process that exported a reference to an object owned by the exporting process, the revoke message including a count of a number of times the object was exported, comparing the count included with the revoke message and a global export count of the object stored in a table for the second process, and sending the message to the second process.
2 Assignments
0 Petitions
Accused Products
Abstract
Reference counting is shared between an in-process service runtime and a machine-wide service. The service maintains a global reference count, a global export count, and an exports before revoke count. When the global reference count for a resource or object drops to zero, the machine-wide service deletes the table entry for the object or resource and sends an unref message including the value of the global export count to the sharing process. If the local export count is greater than the global export count of the unref, there are committed exports which have not yet been unreferenced. If both counts are the same, the committed exports have been accounted for and a revoke operation can be issued.
32 Citations
14 Claims
-
1. An inter-process communication system comprising:
-
a processor; a trusted entity configured to intercept a message from a first process that has received a reference to an object, wherein the message is destined for a second process; the trusted entity, in response to determining that the message is a message indicating that the first process is finished with the object reference, deleting an entry for the object in a table for the first process, decrementing a global reference count, the global reference count comprising a total of references to the object, and when the global reference count equals to zero, sending the message to the second process; and the trusted entity, in response to receiving a revoke message from the second process, the second process comprising an exporting process that exported a reference to an object owned by the exporting process, the revoke message including a count of a number of times the object was exported, comparing the count included with the revoke message and a global export count of the object stored in a table for the second process, and sending the message to the second process. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method for coordinating reference counting comprising:
-
intercepting, by a trusted entity, a message from a first process that has received a reference to an object, wherein the message is destined for a second process; in response to determining, by the trusted entity, that the message is a message indicating that the first process is finished with the object reference, deleting, by the trusted entity, an entry for the object in a table for the first process, decrementing a global reference count, the global reference count comprising a total of references to the object, and when the global reference count equals to zero, sending, by the trusted entity, the message to the second process; and in response to receiving a revoke message from the second process, the second process comprising an exporting process that exported a reference to an object owned by the exporting process to the trusted entity, the revoke message including a count of a number of times the object was exported, comparing the count included with the revoke message and a global export count of the object stored in a table for the second process, and sending, by the trusted entity, the message to the second process. - View Dependent Claims (7, 8)
-
-
9. A computer-readable storage medium storing thereon computer-executable instructions for coordinating reference counting between a machine-wide reference counting mechanism and a process within a inter-process communication system, the instructions when executed on a processor performing steps comprising:
-
intercepting a message from a first process that has received a reference to an object, wherein the message is destined for a second process; in response to determining that the message is a message indicating that the first process is finished with the object reference, deleting an entry for the object in a table for the first process, decrementing a global reference count, the global reference count comprising a total of references to the object, and when the global reference count equals to zero, sending the message to the second process; and in response to receiving a revoke message from the second process, the second process comprising an exporting process that exported a reference to an object owned by the exporting process, the revoke message including a count of a number of times the object was exported, comparing the count included with the revoke message and a global export count of the object stored in a table for the second process, and sending the message to the second process. - View Dependent Claims (10, 11, 12, 13, 14)
-
Specification