Method for executing operation call from client application using shared memory region and establishing shared memory region when the shared memory region does not exist
First Claim
1. A computer implemented method for using a shared memory space comprising the steps of:
- executing an operation call on an original object which has a shared memory subcontract, said operation call being made by a client application, and said operation call requiring arguments which may be complex arguments such as other objects;
recognizing said operation call by a client-side portion of said shared memory subcontract;
determining whether a shared memory region exists for use by said client-side portion of said shared memory subcontract for servicing said original object, said determination being made by non-kernel routines;
if said shared memory region does exist, marshalling arguments of said operation call inside said shared memory region, said marshalling performed by said client-side portion of said shared memory subcontract;
invoking said operation call on an existing channel object by said client-side portion of said shared memory subcontract;
establishing a shared memory region if said shared memory region does not exist by performing the steps of;
obtaining from nucleus a server domain id for a server domain of said original object, said server domain containing an implementation of said original object; and
determining whether a channel object exists which provides a communication path from said client-side portion of said shared memory subcontract to said server domain containing said implementation of said original object, said determination of whether a channel object exists being done by comparing said server domain id obtained from nucleus to server domain id values located in a field of each of one or more second data structures in said client-side portion of said shared memory subcontract; and
determining that a channel object does not exist if said server domain id obtained from nucleus does not match any server domain id value located in a field of any of said one or more second data structures in said client-side portion of said shared memory subcontract;
if said channel object does not exist, establishing a shared memory region and creating a new channel object byobtaining a new memory object from a virtual memory manager and mapping the new memory object in said client'"'"'s address space, said obtaining and mapping being done by said client-side portion of said shared memory subcontract; and
initiating a call to a server identified by said server domain id to create a channel object by invoking a create channel operation on said original object and passing said new memory object to said server.
1 Assignment
0 Petitions
Accused Products
Abstract
The present invention provides an elegant and simple way to provide mechanisms for invocation of objects by client applications and for argument passing between client applications and object implementations, without the client application or the operating system knowing the details of how these mechanisms work. Moreover, these mechanisms functions in a distributed computer environment with similar ease and efficiency, where client applications may be on one computer node and object implementations on another. The invention includes a new type of object, termed a "spring object," which includes a method table, a subcontract mechanism and a data structure which represents the subcontract'"'"'s local private state. This application is directed to a Shared Memory subcontract whereby a client and a server can share a memory region for argument and results passing in certain circumstances without the intervention of the kernel and with no restrictions on the type or complexity of the arguments being exchanged.
162 Citations
5 Claims
-
1. A computer implemented method for using a shared memory space comprising the steps of:
-
executing an operation call on an original object which has a shared memory subcontract, said operation call being made by a client application, and said operation call requiring arguments which may be complex arguments such as other objects; recognizing said operation call by a client-side portion of said shared memory subcontract; determining whether a shared memory region exists for use by said client-side portion of said shared memory subcontract for servicing said original object, said determination being made by non-kernel routines; if said shared memory region does exist, marshalling arguments of said operation call inside said shared memory region, said marshalling performed by said client-side portion of said shared memory subcontract; invoking said operation call on an existing channel object by said client-side portion of said shared memory subcontract; establishing a shared memory region if said shared memory region does not exist by performing the steps of; obtaining from nucleus a server domain id for a server domain of said original object, said server domain containing an implementation of said original object; and determining whether a channel object exists which provides a communication path from said client-side portion of said shared memory subcontract to said server domain containing said implementation of said original object, said determination of whether a channel object exists being done by comparing said server domain id obtained from nucleus to server domain id values located in a field of each of one or more second data structures in said client-side portion of said shared memory subcontract; and
determining that a channel object does not exist if said server domain id obtained from nucleus does not match any server domain id value located in a field of any of said one or more second data structures in said client-side portion of said shared memory subcontract;
if said channel object does not exist, establishing a shared memory region and creating a new channel object byobtaining a new memory object from a virtual memory manager and mapping the new memory object in said client'"'"'s address space, said obtaining and mapping being done by said client-side portion of said shared memory subcontract; and initiating a call to a server identified by said server domain id to create a channel object by invoking a create channel operation on said original object and passing said new memory object to said server. - View Dependent Claims (2, 3, 4, 5)
-
Specification