Claims
- 1. An apparatus comprising:at least one processor; a memory coupled to the at least one processor; a computer program residing in the memory, said computer program including a shared persistent storage mechanism, said shared persistent storage mechanism providing a large shared address space for use by application processes on a computer system which uses a relatively smaller native addressing, the shared persistent storage mechanism providing the ability to store persistent objects having context independent pointers stored within the persistent objects as shared address space addresses, the shared persistent storage mechanism including an address translator, the address translator translating shared address space addresses received from the application processes into the relatively smaller native address space address.
- 2. The apparatus of claim 1 wherein the shared persistent storage mechanism includes a pager and a page cache, said pager bringing pages of data corresponding to the shared address space from backing storage into said page cache as needed.
- 3. The apparatus of claim 1 wherein the address translator includes a hasher, a hash table and lookaside buffers to facilitate determining if a needed shared address space address is available.
- 4. The apparatus of claim 2 wherein the address translator includes a hasher, a hash table and a lookaside buffer of page table entries, wherein a page table entry is created for each page in said page cache, each of said page table entries including a native address pointer to a page of shared address space data in said page cache, wherein the hasher hashes shared address space addresses to a key number, and wherein said hash table includes pointers to lists of page table entries in said lookaside buffer corresponding to the key numbers.
- 5. The apparatus of claim 1 wherein said shared persistent storage mechanism includes a storage manager, said storage manager controlling the reservation of portions of the shared address space for different processes.
- 6. The apparatus of claim 5 wherein the storage manager allocates backing storage for persistently storing data in the shared address space as needed.
- 7. The apparatus of claim 1 wherein the shared address space comprises a 128-bit address space.
- 8. The apparatus of claim 1 wherein the computer system comprises a 32 bit computer system.
- 9. The apparatus of claim 1 wherein the shared address space is subdivided into cohorts and blocks, and wherein the shared persistent storage mechanism includes a data structure for each reserved cohort and each reserved block, and wherein the data structure for each reserved block includes a file name of a file containing data for the corresponding reserved block in a backing storage.
- 10. The apparatus of claim 1 wherein the shared persistent virtual storage mechanism facilitates the use of single level store semantics on a 32 bit system such that multiple processes can use context independent addressing.
- 11. A method for providing a large shared address space on a computer system which uses a relatively smaller addressing, the large shared address space providing the ability to store persistent objects having context independent pointers stored within the persistent objects as shared address space addresses, the method comprising the steps of:a) encountering, in a computer process, a pointer within a persistent object stored as a shared address space address; b) translating the shared address space address into a native computer system address; and c) delivering the native computer system address translation of the shared address space address to the computer process, such that the computer process can use the native address to access an element referenced by the pointer.
- 12. The method of claim 11 wherein the step of translating the shared address space address comprises checking to determine if a page containing the requested shared address space address is in a page cache.
- 13. The method of claim 12 further comprising the step of bringing a page of data corresponding to the shared address space address from backing storage to the page cache if the page of data corresponding to the shared address space is not already in the page cache.
- 14. The method of claim 11 wherein the step of translating the shared address space address comprises hashing the shared address space address to generate a key number, and checking a list of page table entries corresponding to the generated key number.
- 15. The method of claim 11 wherein the shared address space comprises a 128 bit address space.
- 16. The method of claim 11 wherein the native computer system address comprises a 32 bit address.
- 17. The method of claim 11 further comprising the step of removing a page from the page cache that is no longer needed, wherein the step of removing the page from the page cache comprises copying the page in the page cache to backing store if the data in the page has been altered.
- 18. The method of claim 11 further comprising the step of reserving a portion of the shared address space to the client process when requested by the client process.
- 19. The method of claim 18 further comprising the step of allocating a portion of backing store to store data for the reserved portion of the shared address space as needed.
- 20. The method of claim 19 wherein the step of allocating a portion of backing store comprises creating a file in the backing store to store data for the reserved portion of the shared address space.
- 21. A program product comprising:(A) a shared persistent storage mechanism, said shared persistent storage mechanism providing a large shared address space for use by application processes on a computer system which uses a relatively smaller addressing, the shared persistent storage mechanism providing the ability to store persistent objects having context independent pointers stored within the persistent objects as shared address space addresses, the shared persistent storage mechanism including an address translator, the address translator translating shared address space addresses received from the application processes into the relatively smaller native address space address; and (B) signal bearing media bearing said shared persistent storage mechanism.
- 22. The program product of claim 21 wherein the signal bearing media comprises recordable media.
- 23. The program product of claim 21 wherein the signal bearing media comprises transmission media.
- 24. The program product of claim 21 wherein the shared persistent storage mechanism includes a pager and a page cache, said pager bringing pages of data corresponding to the shared address space from backing storage into said page cache as needed.
- 25. The program product of claim 21 wherein the address translator includes a hasher, a hash table and lookaside buffers to facilitate determining if a needed shared address space address is available.
- 26. The program product of claim 24 wherein the virtual address translator includes a hasher, a hash table and a lookaside buffer of page table entries, wherein a page table entry is created for each page in said page cache, each of said page table entries including a pointer to a page of shared address space data in said page cache, wherein the hasher hashes shared address space addresses to a key number, and wherein said hash table includes pointers to lists of page table entries in said lookaside buffer corresponding to the key numbers.
- 27. The program product of claim 21 wherein said shared persistent storage mechanism includes a storage manager, said storage manager controller the reservation of portions of the shared address space for different processes.
- 28. The program product of claim 27 wherein the storage manager allocates backing storage for persistently storing data in the shared address space as needed.
- 29. The program product of claim 21 wherein the shared address space comprises a 128-bit address space.
- 30. The program product of claim 21 wherein the computer system comprises a 32 bit computer system.
- 31. The program product of claim 21 wherein the shared address space is subdivided into cohorts and blocks, and wherein the shared persistent storage mechanism includes a data structure for each reserved cohort and each reserved block, and wherein the data structure for each reserved block includes a file name of a file containing data for the corresponding reserved block in a backing storage.
- 32. The program product of claim 21 wherein the shared persistent virtual storage mechanism facilitates the use of single level store semantics on a 32 bit system such that multiple processes can use context independent addressing.
- 33. An apparatus comprising:a) at least one processor; b) a memory coupled to the at least one processor; c) a shared persistent storage mechanism, said shared persistent storage mechanism providing a large shared address space for use by application processes on a computer system which uses a 32-bit address space, the shared persistent storage mechanism providing the ability to store persistent objects having context independent pointers stored within the persistent objects as shared address space addresses, the shared persistent storage mechanism comprising: i) a page cache; ii) a pager, said pager bringing pages of data from a backing store to said page cache as needed; iii) an addresses translator, said address translator translating shared address space addresses to 32 bit addresses of data in said page cache; and iv) a storage manager, said storage manager allocating said shared address space to backing store as needed.
- 34. The apparatus of claim 33 wherein said address translator includes a plurality of page table entries, wherein a page table entry is created for each page in said page cache, each of said page table entries including a pointer to a page of shared address space data in said page cache.
- 35. The apparatus of claim 33 wherein the shared address space comprises a 128 bit address space.
- 36. The apparatus of claim 33 wherein the shared address space is subdivided into a plurality of blocks, and wherein the shared persistent storage mechanism includes a data structure for each reserved block of shared address space, the data structure for each reserved block including a file name of a file containing data for the reserved block in the backing store.
- 37. The apparatus of claim 33 wherein the storage manager only allocates shared address space to backing store when persistent data is to be stored in said shared address space.
- 38. The apparatus of claim 33 wherein said address translator includes a hasher, a hash table and a lookaside buffer of page table entries, wherein a page table entry is created for each page in said page cache, each of said page table entries including a pointer to a page of shared address space data in said page cache, and wherein the hasher hashes shared address space addresses to a key number, wherein said hash table includes pointers to lists of page table entries in said lookaside buffer corresponding to the key numbers.
- 39. The apparatus of claim 35 wherein the shared persistent virtual storage mechanism facilitates the use of single level store semantics on a 32 bit system such that multiple processes can use context independent addressing.
- 40. The apparatus of claim 39 wherein the shared persistent virtual storage mechanism includes a block create function to reserve a portion of the shared address space and a block allocate function to allocate a portion of a reserved block said backing store.
- 41. A method for allowing application processes on a computer system using 32 bit addressing to use a single large shared address space, the large shared address space providing the ability to store persistent objects having context independent pointers stored within the persistent objects as shared address space addresses, the method comprising the steps of:a) requesting translation of a shared address space address when the shared address space address is encountered as a pointer within a persistent object; b) checking a page cache to determine if a page of shared address space data corresponding to the shared address space address has already been copied into said page cache; c) bringing a page of data corresponding to the shared address space address from backing storage to the page cache if the page of data corresponding to the shared address space is not already in the page cache; and d) delivering a 32 bit address of the data in the page cache corresponding to the shared address space address to a requesting computer process, such that the requesting computer process can use the 32 bit address to access an element referenced by the pointer.
- 42. The method of claim 41 wherein the shared address space is a 128 bit address.
- 43. The method of claim 41 wherein the step of checking a page cache to determine if a page of shared address space data corresponding to the shared address space address has already been copied into said page cache comprises hashing the shared address space address to generate a key number, and checking a list of page table entries corresponding to the generated key number.
- 44. The method of claim 41 further comprising the step of removing a page from the page cache that is no longer needed, wherein the step of removing the page from the page cache comprises copying the page in the page cache to the backing store if the data in the page has been altered.
- 45. The method of claim 41 further comprising the step of reserving a portion of the shared address space to the client process when requested by the client process.
- 46. The method of claim 45 further comprising the step of allocating a portion of backing store to store data for the reserved portion of the shared address space as needed.
- 47. The method of claim 46 wherein the step of allocating a portion of backing store comprises creating a file in the backing store to store data for the reserved portion of the shared address space.
- 48. The method of claim 41 wherein the shared address space comprises a 128 bit address space.
- 49. A program product comprising:A) a shared persistent storage mechanism, said shared persistent storage mechanism providing a large shared address space for use by application processes on a computer system which uses a 32-bit address space, the shared persistent storage mechanism providing the ability to store persistent objects having context independent pointers stored within the persistent objects as shared address space addresses, the shared persistent storage mechanism comprising: i) a page cache; ii) a pager, said pager bringing pages of data from a backing store to said page cache as needed; iii) an addresses translator, said address translator translating shared address space addresses to 32 bit addresses of data in said page cache; and iv) a storage manager, said storage manager allocating said shared address space to backing store as needed; and B) signal bearing media bearing said shared persistent virtual storage mechanism.
- 50. The program product of claim 49 wherein the signal bearing media comprises recordable media.
- 51. The program product of claim 49 wherein the signal bearing media comprises transmission media.
- 52. The program product of claim 49 wherein said address translator includes a plurality of page table entries, wherein a page table entry is created for each page in said page cache, each of said page table entries including a pointer to a page of shared address space data in said page cache.
- 53. The program product of claim 49 wherein the shared address space comprises a 128 bit address space.
- 54. The program product of claim 49 wherein the shared address space is subdivided into a plurality of blocks, and wherein the shared persistent storage mechanism includes a data structure for each reserved block of shared address space, the data structure for each reserved block including a file name of a file containing data for the reserved block in the backing store.
- 55. The program product of claim 49 wherein die storage manager only allocates shared address space to backing store when persistent data is to be stored in said shared address space.
- 56. The program product of claim 49 wherein said address translator includes a hasher, a hash table and a lookaside buffer of page table entries, wherein a page table entry is created for each page in said page cache, each of said page table entries including a pointer to a page of shared address space data in said page cache, and wherein the hasher hashes shared address space addresses to a key number, wherein said hash table includes pointers to lists of page table entries in said lookaside buffer corresponding to the key numbers.
- 57. The program product of claim 49 wherein the shared persistent virtual storage mechanism facilitates the use of single level store semantics on a 32 bit system such that multiple processes can use context independent addressing.
- 58. The program product of claim 49 wherein the shared persistent virtual storage mechanism includes a block create function to reserve a portion of the shared address space and a block allocate function to allocate a portion of a reserved block said backing store.
RELATED APPLICATIONS
This application is related to the following U.S. patent applications: “Shared Persistent Objects”, Ser. No. 09/050,821, filed on Mar. 30, 1998; “Virtual Machine Implementation for Shared Persistent objects”, Ser. No. 09/050,832, filed on Mar. 30, 1998; and “Method and Apparatus for Encapsulating Address Translation for Shared Persistent Virtual Storage”, Ser. No. 09/050,831, filed on Mar. 30, 1998, that are hereby incorporated by reference.
US Referenced Citations (7)
Non-Patent Literature Citations (3)
| Entry |
| Webopedia (http://webopedia.internet.com/TERM/v/virtual—memory.html) , Sep. 1996.* |
| Amaral, IEEE, “A Model for Persistent Shared Memory Addressing in Distributed Systems”, Dec. 1992.* |
| Microsoft, “Managing Virtual Memory in Win32”, Sep. 1996. |