Claims
- 1. A system for handling an application's access of objects for use within a mobile communications device, comprising:
random access memory (RAM) having storage locations addressable within an addressable space, said RAM containing a persistable first object having an address within the addressable space; a non-volatile storage device having storage locations addressable within an addressable space, said storage device containing a persisted second object having an address within the storage device's addressable space; a reference table that contains the address of the persistable first object contained in the RAM and the address of the persisted second object contained in the storage device, wherein the addresses of the persistable first object and the persisted second object are obtained from the reference table so that the persistable first object and persisted second object may be used by the application.
- 2. The system of claim 1 wherein the persisted second object is unpersisted into RAM, wherein format of the persisted second object and format of the unpersisted second object are substantially similar.
- 3. The system of claim 1 wherein the persisted second object is in a usable state by the application directly from the storage device.
- 4. The system of claim 3 wherein access time associated with access of the persisted second object by the application via the reference table is at least an order of magnitude less than access of an object having been persisted through serialization.
- 5. The system of claim 1 wherein reading and writing of the persisted second object occurs while the second persisted object is persisted.
- 6. The system of claim 1 wherein the address space associated with the RAM overlaps at least a portion of the address space associated with the storage device.
- 7. The system of claim 1 wherein the address of the persisted second object is obtained via the reference table based upon an index associated with the persisted second object.
- 8. The system of claim 7 wherein the address of the persistable first object is obtained via the reference table based upon an index associated with the persistable first object.
- 9. The system of claim 8 wherein the reference table contains storage elements having a width,
wherein the addresses of the persistable first object and persisted second object are obtained via the reference table based upon the objects' respective indexes and upon the width of the storage elements.
- 10. The system of claim 1 wherein the persisted second object contains within its object format a reference to itself.
- 11. The system of claim 10 wherein the persisted second object contains within its object format a reference to a persisted third object.
- 12. The system of claim 11 wherein the persisted third object contains within its object format a reference to the persisted second object.
- 13. The system of claim 10 wherein the persisted second object contains within its object format a reference to the persistable first object.
- 14. The system of claim 13 wherein the persistable first object contains within its object format a reference to the persisted second object.
- 15. The system of claim 10 wherein the reference contained within the persisted second object is used to repopulate address data within the reference table.
- 16. The system of claim 1 wherein module objects are persisted in the storage device and whose addresses are stored in the reference table, wherein the addresses of the persisted module objects are obtained from the reference table so that the persisted module objects may be used by the application.
- 17. The system of claim 16 wherein the module objects hold target-linked object classes.
- 18. The system of claim 17 wherein code for an object-oriented runtime is executable directly from the storage device via the reference table.
- 19. The system of claim 1 wherein the application comprises an e-mail address-book application.
- 20. The system of claim 1 wherein the mobile communications device is a personal digital assistant.
- 21. The system of claim 1 wherein the mobile communications device is a cellular telephone.
- 22. The system of claim 1 wherein the mobile communications device is a data communications device.
- 23. The system of claim 1 wherein the storage device is flash memory.
- 24. The system of claim 23 wherein writing to the flash memory is performed in blocks, wherein a persisted object is unpersisted prior to modification, and then the unpersisted object is persisted back to the flash memory.
- 25. The system of claim 1 wherein data stored in the storage device remains when electrical power is removed from the storage device.
- 26. The system of claim 1 wherein the reference table contains a root object reference to a root object contained in the storage device.
- 27. The system of claim 26 wherein at least one object is stored in the storage device whose address is determined based upon an offset and the address of the root object.
- 28. The system of claim 26 wherein a group of objects is stored in the storage device whose addresses are determined based upon an offset and the address of the root object.
- 29. The system of claim 28 wherein the reference table contains a reference to objects in the group only with a reference to the root object of the group.
- 30. The system of claim 28 wherein the storage device comprises divisions of blocks, wherein range of the offset is based upon size of the blocks.
- 31. The system of claim 28 wherein the storage device is block-writable, wherein modification to the persisted second object is performed via a persistable second object that had been generated based upon the persisted second object.
- 32. The system of claim 31 wherein the persistable second object is ungrouped prior to the modification.
- 33. The system of claim 28 wherein the root object resides in RAM.
- 34. The system of claim 28 further comprising:
grouping means for grouping objects contained in RAM.
- 35. The system of claim 28 wherein the grouping means groups objects contained in RAM.
- 36. A method for handling an application's access of objects for use within a mobile communications device, comprising the steps of:
reading a first persistable object from random access memory (RAM); writing the first persistable object into a non-volatile storage device at an address so as to create a first persisted object; storing the address in a reference table; and obtaining the address from the reference table so that the first persisted object may be retrieved from the storage device and used by the application, said first persisted object being in a usable state by the application directly from the storage device.
- 37. The method of claim 36 further comprising the steps of:
unpersisting the first persisted object into RAM at a second address so as to create the first persistable object; and updating the reference table to reflect that the first persistable object is located at the second address, wherein format of the first persisted object and format of the first unpersisted object are substantially similar.
- 38. The method of claim 37 further comprising the step of:
obtaining the second address from the reference table so that the first persistable object may be retrieved from the RAM and used by the application.
- 39. The method of claim 38 further comprising the step of:
obtaining a third address from the reference table so that a second persisted object may be retrieved from the storage device and used by the application, said second persisted object being in a usable state by the application directly from the storage device.
- 40. The method of claim 38 wherein access time associated with access of the first persisted object by the application via the reference table is at least an order of magnitude less than access of an object persisted through serialization means.
- 41. The method of claim 36 wherein address space associated with the RAM overlaps at least a portion of address space associated with the storage device.
- 42. The method of claim 36 wherein the address of the first persisted object is obtained via the reference table based upon an index associated with the persisted object.
- 43. The method of claim 36 wherein the reference table contains address storage elements having a width,
wherein the address of the first persisted object is obtained via the reference table based upon the first persisted objects' index and upon the width of at least one of the storage elements.
- 44. The method of claim 36 wherein the first persisted object contains within its object format a reference to itself.
- 45. The method of claim 44 wherein the first persisted object contains within its object format a reference to a second persisted object.
- 46. The method of claim 44 wherein the reference contained within the first persisted object is used to repopulate address data within the reference table.
- 47. The method of claim 36 further comprising the step of:
persisting module objects in the storage device, said module objects having addresses stored in the reference table, wherein the addresses of the persisted module objects are obtained from the reference table so that the persisted module objects may be used by the application.
- 48. The method of claim 47 wherein the module objects hold target-linked object classes.
- 49. The method of claim 36 wherein the mobile communications device is a personal digital assistant.
- 50. The method of claim 36 wherein the mobile communications device is a cellular telephone.
- 51. The method of claim 36 wherein the mobile communications device is a data communications device.
- 52. The method of claim 36 wherein the storage device is flash memory.
- 53. The method of claim 52 wherein writing to the flash memory is performed in blocks, wherein a persisted object is unpersisted prior to modification, and then the unpersisted object is persisted back to the flash memory.
- 54. The method of claim 36 wherein data stored in the storage device remains when electrical power is removed from the storage device.
- 55. The method of claim 36 wherein the reference table contains a root object reference to a root object contained in the storage device.
- 56. The method of claim 55 wherein at least one object is stored in the storage device whose address is determined based upon an offset and the address of the root object.
- 57. The method of claim 55 wherein a group of objects is persisted in the storage device and whose addresses are determined based upon an offset and the address of the root object.
- 58. The method of claim 57 wherein the reference table contains a reference to objects in a group only with a reference to the root object of the group.
- 59. The method of claim 57 wherein the storage device comprises divisions of blocks, wherein range of the offset is based upon size of the blocks.
- 60. The method of claim 57 wherein the root object resides in RAM.
- 61. The method of claim 57 further comprising the steps of:
unpersisting the group of objects; and performing garbage collection upon at least one of the unpersisted object.
- 62. A system for handling an application's access of objects for use within a mobile communications device, comprising:
a non-volatile storage device having storage locations addressable within an addressable space, said storage device containing a persisted object having an address within the addressable space; a reference table that contains the address of the persisted object contained in the storage device, wherein the address of the persisted object is obtained from the reference table so that the persisted object may be used by the application, said persisted object being in a usable state by the application directly from the storage device.
- 63. A system for handling an application's access of objects, comprising:
storage means having storage locations addressable within an addressable space, said storage means containing an object having an address within the addressable space; a reference table that contains the address of the object contained in the storage means, wherein the address of the object is obtained from the reference table so that the object may be used by the application, said object being in a usable state by the application directly from the storage means.
- 64. The system of claim 63 wherein the storage means comprises non-volatile storage means.
- 65. The system of claim 64 wherein the storage means comprises volatile storage means.
- 66. The system of claim 63 wherein the storage means comprises volatile storage means.
RELATED APPLICATION
[0001] This application claims priority to U.S. provisional application Serial No. 60/302,872 entitled “System and Method of Object-Oriented Persistence” filed Jul. 3, 2001. By this reference, the full disclosure, including the drawings, of U.S. provisional application Serial No. 60/302,872 is incorporated herein.
PCT Information
Filing Document |
Filing Date |
Country |
Kind |
PCT/CA02/01008 |
7/2/2002 |
WO |
|
Divisions (1)
|
Number |
Date |
Country |
Parent |
60302872 |
Jul 2001 |
US |
Child |
10482756 |
Dec 2003 |
US |