Patent EP0695992A2 successfully refreshed from Google Patents.
← Back to Patent Explorer
EP0695992A2 Expired / Lapsed EP ⏱️ 0.0 years remaining

Shared memory subcontract

Assignee: Sun Microsystems Inc
•
Filing: 1995-06-26
•
Granted: —
•
Expires: 2015-06-26
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

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 a continuation-in-part of pending U.S Patent Application serial # 07/995,863 filed on December 21, 1992 titled "A METHOD AND APPARATUS FOR SUBCONTRACTS IN DISTRIBUTED PROCESSING SYSTEMS". 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.

Inventors

  • 👤 Yousef A. Khalidi
  • 👤 Graham Hamilton
  • 👤 Panagiotis S. Kougiouris

Bibliographic Details

Application Number —
Jurisdiction EP
Data Source google_patents
Last Synchronized 2026-10-25 21:44
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/46; G06F9/54; G06F9/547; G06F9/548

Claims Analysis

Total Claims: 25
Claim 1
Independent Claim 161 words
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 established 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; and receiving said invoked operation call by said server which contains said implementstion of said original object.
Claim 2
Dependent Claim 98 words
The computer implemented method of claim 1 comprising the additional steps of: receiving said invoked operation call be a server-side portion of said shared memory subcontract which is located on said server which contains said implementation of said original object; said server-side portion of said shared memory subcontract locating said implementation of said original object and locating a buffer containing said arguments of said invoked operation call in said shared memory region using non-kernel processes; unmarshalling said arguments from said buffer; and passing said invoked operation call and said unmarshalled arguments to said implementation of said original object.
Claim 3
Dependent Claim 77 words
The computer implemented method of claim 2 comprising the additional steps of: receiving results of said invoked operation call from said implementation of said original object by said server-side portion of said shared memory subcontract; marshalling said results into said buffer in said shared memory region which originally contained arguments of said invoked operation call; and said server-side portion of said shared memory subcontract transmitting a return message to said client-side portion of said shared memory subcontract.
Claim 4
Dependent Claim 78 words
The computer implemented method of claim 3 comprising the additional steps of: receiving said return message by said client-side portion of said shared memory subcontract; unmarshalling said results from said buffer in said shared memory region; and passing said results to said client application that made said operation call whereby said client application's operation call on said original object is performed using a memory region shared by said client-side and said server-side portions of said shared memory subcontract.
Claim 5
Dependent Claim 57 words
The computer implemented method of claim 1 wherein said step of marshalling arguments of said operation call inside an established shared memory region comprises the additional steps of: determining an offset pointer which points to the beginning of a buffer inside said shared memory region; and marshalling said arguments into said buffer indicated by said offset pointer.
Claim 6
Dependent Claim 69 words
The computer implemented method of claim 5 wherein said step of invoking said operation call on said existing channel object by said client-side portion of said shared memory subcontract comprises the additional step of: passing in as arguments of said invocation of said operation call, an index and said offset pointer, said index being a security token which is a function of said channel object and said original object.
Claim 7
Dependent Claim 33 words
The computer implemented method of claim 6 comprising the additional step of using said index both to authenticate the calling client and to find the implementation state of the original object being called.
Claim 8
Dependent Claim 122 words
The computer implemented method of claim 2 wherein said step of locating said implementation of said original object and locating a buffer containing said arguments of said invoked operation call in said shared memory region comprises the additional steps of: using an index to locate said implementation of said original object, said index being a security token which is a function of said channel object and said original object; and using an offset pointer to locate said buffer containing said arguments of said invoked operation call in said shared memory region, said offset pointer being established by said client-side portion of said shared memory subcontract when marshalling said arguments and pointing to the beginning of said buffer inside said shared memory region.
Claim 9
Dependent Claim 113 words
The computer implemented method of claim 1 wherein said step of determining whether a shared memory region exists for use by said client-side portion of said shared memory subcontract for servicing said original object comprises the additional steps of: checking fields in a first data structure in said client-side portion of said shared memory subcontract to see if said fields contain an index and a pointer to a second data structure in said client-side portion of said shared memory subcontract; and proceeding as if a shared memory region has been established if said index and said pointer are present in said first data structure in said client-side portion of said shared memory subcontract.
Claim 10
Dependent Claim 25 words
The computer implemented method of claim 1 comprising the additional step of establishing a shared memory region if said shared memory region does not exist.
Claim 11
Dependent Claim 86 words
The computer implemented method of claim 10 wherein the step of establishing a shared memory region if said shared memory region does not exist comprises the additional 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.
Claim 12
Dependent Claim 105 words
The computer implemented method of claim 11 wherein said step of determining whether a channel object exists comprises the additional steps of: 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.
Claim 13
Dependent Claim 30 words
The computer implemented method of claim 12 comprising the additional steps of: if said channel object does not exist, establishing a shared memory region; and creating a new channel object.
Claim 14
Dependent Claim 96 words
The computer implemented method of claim 12 comprising the additional steps of: if said channel object does exist, identifying said second data structure in said client-side portion of said shared memory subcontract that contained a matching server domain id; establishing a pointer to said second data structure in said client-side portion of said shared memory subcontract that contained a matching server domain id; and inserting said pointer to said second data structure into a field in a first data structure in said client-side portion of said shared memory subcontract that is associated with said original object.
Claim 15
Dependent Claim 45 words
The computer implemented method of claim 14 comprising the additional steps of: invoking a get_index operation on said existing channel object by said client-side portion of said shared memory subcontract; and passing a handle of said original object as an argument of said get_index operation.
Claim 16
Dependent Claim 165 words
The computer implemented method of claim 15 comprising the additional steps of: receiving said get_index operation invocation by said server-side portion of said shared memory subcontract; deriving an index from said handle of said original object which was received as an argument and from said existing channel object; associating a pointer to said implementation of said original object with said derived index in a data structure in said server-side portion of said shared memory subcontract; linking said data structure in said server-side portion of said shared memory subcontract to said channel object; returning said derived index to said client-side portion of said shared memory sub-contract in response to said get_index operation invocation; and said client-side portion of said shared memory subcontract storing said returned index into a field of said first data structure whereby said initialization of a shared memory region and related data structures are completed under the condition that a channel object already existed but had no linkage to a calling original object.
Claim 17
Dependent Claim 100 words
The computer implemented method of claim 13 wherein the step of establishing a shared memory region if said channel object does not exist comprises the additional steps of: obtaining 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.
Claim 18
Dependent Claim 60 words
The computer implemented method of claim 17 comprising the additional steps of: upon receiving said invocation of said create_channel operation call by said server-side portion of said shared memory subcontract, mapping said new memory object into said server's address space; creating a new channel object; and returning said new channel object to said client-side portion of said shared memory subcontract.
Claim 19
Dependent Claim 109 words
The computer implemented method of claim 18 comprising the additional steps of: upon receiving said return of said new channel object by said client-side portion of said shared memory subcontract, creating a new second data structure that contains said new channel object, said new memory object and location information indicating where said new memory object is mapped; establishing a pointer to said new second data structure in said client-side portion of said shared memory subcontract; and inserting said pointer to said new second data structure into a field in a first data structure in said client-side portion of said shared memory subcontract that is associated with said original object.
Claim 20
Dependent Claim 45 words
The computer implemented method of claim 19 comprising the additional steps of: invoking a get_index operation on said new channel object by said client-side portion of said shared memory subcontract; and passing as an argument of said get_index operation, a handle of said original object.
Claim 21
Dependent Claim 156 words
The computer implemented method of claim 20 comprising the additional steps of: receiving said get_index operation invocation by said server-side portion of said shared memory subcontract; deriving an index from said handle of said original object which was received as an argument and from said new channel object; associating a pointer to said implementation of said original object with said derived index in a data structure in said server-side portion of said shared memory subcontract; linking said data structure in said server-side portion of said shared memory subcontract to said channel object; returning said derived index to said client-side portion of said shared memory subcontract in response to said get_index operation invocation; and said client-side portion of said shared memory subcontract storing said returned index into a field of said first data structure, whereby said initialization of a shared memory region and related data structures are completed under the condition that no related channel object existed.
Claim 22
Dependent Claim 279 words
A computer implemented method for using a shared memory space comprising the steps of: executing an operation call by a client application on an original object, 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 said arguments of said operation call inside said established shared memory region, said marshalling performed by said client-side portion of said shared memory subcontract; transmitting said operation call to a server which contains an implementation of said original object; unmarshalling said arguments of said operation call from said shared memory region using non-kernel processes, said unmarshalling being done by a server-side portion of said shared memory subcontract; passing said operation call and said unmarshalled arguments to said implementation of said original object marshalling results of said operation call from said implementation of said original object into said buffer in said shared memory region which originally contained said arguments of said operation call; said server-side portion of said shared memory subcontract transmitting a return message containing said marshalled results to said client which issued said operation call; unmarshalling said results from said buffer in said shared memory region; and passing said results to said client application that made said operation call, whereby said client application's operation call on said original object is performed using a memory region shared by said client and said server with use of non-kernel processes.
Claim 23
Dependent Claim 228 words
A computer implemented method for using a shared memory space comprising the steps of: executing an operation call by a client application on an original object, said operation call requiring arguments which may be complex arguments such as other objects which comprise data structures; determining whether a shared memory region exists for use for marshalling arguments of said operation call, said determination being made by non-kernel routines; if said shared memory region does exist, marshalling said arguments of said operation call inside said existing shared memory region; transmitting said operation call to a server which contains an implementation of said original object; said server unmarshalling said arguments of said operation call from said shared memory region using non-kernel processes; passing said operation call and said unmarshalled arguments to said implementation of said original object; marshalling results of said operation call from said implementation of said original object into said shared memory region which originally contained said arguments of said operation call; said server transmitting a return message containing said marshalled results to said client which issued said operation call; unmarshalling said results from said shared memory region; and passing said results to said client application that made said operation call, whereby said client application's operation call on said original object is performed using a memory region shared by said client and said server with use of non-kernel processes.
Claim 24
Dependent Claim 196 words
A computer implemented method for using a shared memory space comprising the steps of: executing an operation call by a client application on a target object comprising a data structure, said operation call requiring arguments which may be complex arguments such as other objects comprising data structures; marshalling said arguments of said operation call in a shared memory region; transmitting said operation call to a server which contains an implementation of said target object; said server unmarshalling said arguments of said operation call from said shared memory region using non-kernel processes, and passing said operation call and said unmarshalled arguments to said implementation of said target object; said server marshalling results of said operation call received from said implementation of said target object into said shared memory region, and transmitting a return message containing said marshalled results to said client which issued said operation call; said client unmarshalling said results from said shared memory region; and passing said results to said client application that made said operation call, whereby said client application's operation call on said target object is performed using a memory region shared by said client and said server with use of non-kernel processes.
Claim 25
Dependent Claim 231 words
A data processing system comprising: one or more interconnected central processing units (CPU); an operating system kernel adapted to run on said one or more interconnected central processing units; a client application operable to run under said operating system kernel wherein said client application can execute an operation call on a target object comprising a data structure, said operation call requiring arguments which may be complex arguments such as other objects comprising a data structure; a non-kernel client-side subsystem which can execute said operation call on said target object by marshalling said arguments of said operation call in a shared memory region, and which can transmit said operation call to a non-kernel server which contains an implementation of said target object, and which server can unmarshal said arguments of said operation call from said shared memory region, and can pass said operation call and said unmarshalled arguments to an implementation of said target object; said server further operable to marshall results of said operation call received from said implementation of said target object into said shared memory region, and to transmit a return message containing said marshalled results to said client which issued said operation call, whereby said client application's operation call on said target object can be performed by said data processing system using a memory region shared by said client-side subsystem and said server with use of non-kernel processes.

References Cited (Backward Citations)

No citation records indexed.

USPTO Annuity & Maintenance Windows

Maintenance schedule is calculated for granted US utility patents.

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag