Highly componentized system architecture with a loadable interprocess communication manager
First Claim
1. A computer operating system capable of supporting plural threads running in a computer having a working memory, said computer operating system comprising:
- a kernel resident in said working memory at link time;
a loadable interprocess communication manager resident at link time outside of said working memory and dynamically loadable into said working memory at run time upon request by one of said threads in one address space to communicate with an other thread in an other address space;
wherein said kernel comprises a loader for loading said interprocess communication manager into said working memory in response to said request by said one thread; and
wherein said kernel of said operating system comprises a namespace for registering said interprocess communication manager upon said interprocess communication manager being loaded into said working memory, whereby said interprocess communication manager becomes available to each thread through said namespace.
2 Assignments
0 Petitions
Accused Products
Abstract
The invention is directed toward a loadable interprocess communication manager and generally to a computer operating system capable of supporting plural threads running in a computer having a working memory, the computer operating system including a kernel resident in the working memory at link time and a loadable interprocess communication manager resident at link time outside of the working memory and dynamically loadable into the working memory at run time upon request by one of the threads in one address space to communicate with an other thread in an other address space. The kernel includes a loader for loading the interprocess communication manager into the working memory in response to the request by the one thread. The computer further includes a storage memory separate from the working memory, the loadable interprocess communication manager residing at link time in the storage memory. The loader loads the interprocess communication manager from the storage memory to the working memory. The loadable interprocess communication manager is terminable from the working memory upon lack of a need for communication between threads in different address spaces.
69 Citations
33 Claims
-
1. A computer operating system capable of supporting plural threads running in a computer having a working memory, said computer operating system comprising:
-
a kernel resident in said working memory at link time;
a loadable interprocess communication manager resident at link time outside of said working memory and dynamically loadable into said working memory at run time upon request by one of said threads in one address space to communicate with an other thread in an other address space;
wherein said kernel comprises a loader for loading said interprocess communication manager into said working memory in response to said request by said one thread; and
wherein said kernel of said operating system comprises a namespace for registering said interprocess communication manager upon said interprocess communication manager being loaded into said working memory, whereby said interprocess communication manager becomes available to each thread through said namespace. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
a query interface, through which a thread invokes said interprocess communication manager;
an add reference interface by which said namespace manages each request for said interprocess communication manager from any of said threads; and
a release reference interface, by which namespace manages termination of said interprocess communication manager from said working memory.
-
-
3. The operating system of claim 2 wherein said loader is responsive to said namespace in maintaining said interprocess communication manager in said working memory whenever said add reference interface has a reference to said interprocess communication manager.
-
4. The operating system of claim 2 wherein said interprocess communication manager comprises an object with plural interfaces exposable to other objects, said plural interfaces of said interprocess communication manager supporting methods comprising:
-
interprocess communication trap handler (IPC Trap Handler); and
copy (IPC Copy).
-
-
5. The operating system of claim 1 further comprising plural interprocess communication managers resident outside of said working memory at link time, said loader being capable of loading different ones of said plural interprocess communication managers into said working memory at run time.
-
6. The operating system of claim 1 wherein said kernel contains a minimal set of object sufficient to support said application programs.
-
7. The operating system of claim 1 wherein said computer further comprises a storage memory separate from said working memory, said loadable interprocess communication manager residing at link time in said storage memory.
-
8. The operating system of claim 1 wherein said loader loads said interprocess communication manager from said storage memory to said working memory.
-
9. The operating system of claim 1 wherein said loadable interprocess communication manager is terminable from said working memory upon lack of a need for communication between threads in different address spaces.
-
10. The operating system of claim 1 wherein said kernel of said operating system includes an interprocess communication fault handler for interprocess communication faults occurring in the absence of said interprocess communication manager in said working memory.
-
11. A computer comprising:
-
a working memory containing an operating system kernel;
an interprocess communication manager stored in a location outside of said working memory;
said operating system kernel in said working memory comprising a loader for loading said interprocess communication manager from said location outside of said working memory into said working memory, so as to provide said operating system kernel with an interprocess communication manager; and
wherein said kernel further comprises a namespace, said loader being responsive to said namespace receiving a query for said interprocess communication manager from a thread to load said interprocess communication manager. - View Dependent Claims (12)
-
-
13. A method of operating a computer having a working memory with an operating system kernel installed therein for enabling threads to run in said computer, said method comprising:
-
registering an interprocess communication manager in a namespace in response to a request from at least one of said threads in one address space of said computer to communicate with another thread outside of said one address space, installing the interprocess communication manager from a location outside of said working memory into said working memory so as to provide said operating system kernel with interprocess communication capability. - View Dependent Claims (14)
-
-
15. A method of operating a computer having a working memory with an operating system kernel installed therein for supporting threads to run in said computer, said method comprising:
-
in response to one of said threads taking an interprocess communication trap, saving the state of said one thread;
invoking an interprocess communication trap handler dynamically installed into said working memory;
said interprocess communication trap handler performing the following steps;
copying the argument of said one thread;
changing the VMView of said one thread to a new address space, whereby said one thread runs in said new address space. - View Dependent Claims (16, 17, 18, 19, 20)
copying return values from said new address space back to the original address space;
changing the VMView of said one thread back to the original address space, whereby said one thread runs in said original address space.
-
-
17. A computer-readable medium storing computer-executable instructions for carrying out the steps of claim 15.
-
18. The method of claim 15 wherein said return values comprise information required by said one thread.
-
19. The method of claim 18 further comprising returning to said one thread.
-
20. A computer-readable medium storing computer-executable instructions for carrying out the steps of claim 19.
-
21. A method of operating a computer having a working memory with an operating system kernel installed therein for supporting threads to run in said computer, said method comprising:
-
registering an interprocess communication manager in a namespace in response to a request from at least one of said threads, installing the interprocess communication manager from a location outside of said working memory into said working memory so as to provide said operating system kernel with interprocess communication capability;
incrementing a reference count with each request from any one of said threads for said interprocess communication manager;
decrementing said reference count with each request from any thread to terminate said interprocess communication manager; and
terminating said interprocess communication manager whenever said reference count reaches a minimum value. - View Dependent Claims (22, 23)
-
-
24. In a computer, a loadable interprocess communication (IPC) system capable of managing communication between threads in said first and second addresses spaces, comprising:
-
a first IPCSpace object for a first thread in said first address space;
an export table associated with said first IPCSpace object;
an endpoint associated with said first IPCSpace object, said endpoint containing an address of a first object in said first address space and a signature corresponding to methods of said first object;
a second IPCSpace object for a second thread in said second address space;
an import table associated with said second IPCSpace object, said import table having a pointer to said endpoint of said first IPCSpace object, whereby a second thread in said second address space may invoke methods of said first object in said first address space. - View Dependent Claims (25)
ILISFactory, IPCSpace, IEndPoint, ISignature, and IEndPointTable.
-
-
26. A method of providing interprocess communication between at least first and second address spaces, comprising:
-
providing first and second IPCSpace objects corresponding to said first and second address spaces respectively;
providing with said first IPCSpace object an export table with an endpoint, an address of at least one object in said first address space having a first stack and a signature corresponding to at least one method in said one object;
providing with said second IPCSpace object an import table;
in response to a thread in said second address space invoking said one method of said one object, finding in said export table said endpoint with the address of said one object, and entering a pointer to said endpoint in said import table of said second IPCSpace object;
creating a proxy in said second address space with an index to said import table corresponding to said pointer;
loading arguments of a method of said one object invoked by said thread in said second address space into said first stack;
creating a second stack in said second address space with arguments from said first stack, whereby said second thread executes a method of said one object. - View Dependent Claims (27, 28)
mapping said second stack to said first address space, copying arguments from said first stack to said second stack in accordance with said signature, and mapping said second stack back to said second address space.
-
-
28. The method of claim 27 wherein the step of loading arguments into said first stack comprises loading into said first stack:
-
a pointer to said one method of said one object invoked by said second thread;
arguments corresponding to said one method; and
the address of said one object.
-
-
29. A method of operating a computer having a working memory with an operating system kernel installed therein for enabling threads to run in said computer, said method comprising:
-
in response to a request from at least one of said threads in a first address space to communicate with another thread in a second address space, loading a loadable interprocess communication system from a location outside of said working memory into said working memory;
providing interprocess communication by said interprocess communication manager;
providing first and second IPCSpace objects corresponding to said first and second address spaces respectively;
providing with said first IPCSpace object an export table with an endpoint, an address of at least one object in said first address space having a first stack and a signature corresponding to at least one method in said one object;
providing with said second IPCSpace object an import table;
in response to a thread in said second address space invoking said one method of said one object, finding in said export table said endpoint with the address of said one object, and entering a pointer to said endpoint in said import table of said second IPCSpace object;
creating a proxy in said second address space with an index to said import table corresponding to said pointer;
loading arguments of a method of said one object invoked by said thread in said second address space into said first stack;
creating a second stack in said second address space with arguments from said first stack, whereby said second thread executes a method of said one object. - View Dependent Claims (30, 31, 32, 33)
mapping said second stack to said first address space, copying arguments from said first stack to said second stack in accordance with said signature, and mapping said second stack back to said second address space.
-
-
31. The method of claim 30 wherein the step of loading arguments into said first stack comprises loading into said first stack:
-
a pointer to said one method of said one object invoked by said second thread;
arguments corresponding to said one method; and
the address of said one object.
-
-
32. The method of claim 29 wherein at least one of said first and second address spaces is an address space of said computer.
-
33. The method of claim 29 wherein at least one of said first and second address spaces is external of said computer.
Specification