Zero-copy transfer of memory between address spaces
First Claim
1. A method of transferring data between services using shared memory, comprising:
- controlling sharing of a memory object;
determining if outstanding handles to said memory object exist; and
if said outstanding handles do not exist, transferring a pointer to said memory object from a first service to a second service to avoid making a copy of said memory object.
2 Assignments
0 Petitions
Accused Products
Abstract
Methods for performing zero-copy memory transfers between processes or services using shared memory without the overhead of current schemes. An IPC move semantic may be used that allows a sender to combine passing a reference and releasing it within the same IPC call. An insulate method removes all references to the original object and creates a new object pointing to the original memory if a receiver requires exclusive access. Alternatively, if a receiving process or service seeks read-only access, the sender unmaps its access to the buffer before sending to the receiver. When the insulate operation is initiated, the kernel detects an object with multiple active references but no active mappings and provides a mapping to the memory without taking a copy or copy-on-write.
25 Citations
20 Claims
-
1. A method of transferring data between services using shared memory, comprising:
-
controlling sharing of a memory object;
determining if outstanding handles to said memory object exist; and
if said outstanding handles do not exist, transferring a pointer to said memory object from a first service to a second service to avoid making a copy of said memory object. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A computer readable medium having stored thereon computer executable instructions for transferring data between services using shared memory, said instructions for performing the method of:
-
controlling sharing of a memory object;
determining if outstanding handles to said memory object exist; and
if said outstanding handles do not exist, transferring a pointer to said memory object from a first service to a second service to avoid making a copy of said memory object. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. A method of transferring data between a first service and a second service, comprising:
-
creating a first memory object pointing to a buffer for use by said first service;
writing to said buffer;
releasing said buffer;
removing references to said buffer; and
creating a second memory object pointing to said buffer for use by said second service without creating a copy of said buffer. - View Dependent Claims (16, 17, 18, 19, 20)
-
Specification