WO2000077613A2 - Method and system for managing and using persistent storage - Google Patents
Method and system for managing and using persistent storage Download PDFInfo
- Publication number
- WO2000077613A2 WO2000077613A2 PCT/CA2000/000707 CA0000707W WO0077613A2 WO 2000077613 A2 WO2000077613 A2 WO 2000077613A2 CA 0000707 W CA0000707 W CA 0000707W WO 0077613 A2 WO0077613 A2 WO 0077613A2
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- persistent memory
- information
- store
- section
- representations
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/4493—Object persistence
Definitions
- the present invention relates to a method and system for managing and using persistent storage. More specifically, the present invention relates to a method and system for managing and using persistent storage in an information appliance device, in a manner which is largely transparent to both users and developers of applications.
- Information appliances or devices, are becoming more prevalent and widely used. Examples of information appliances include thin-client desktop computers, personal digital assistants (PDA's), wireless pagers and email devices, intelligent cell phones, etc. Typically, such devices have somewhat limited resources, both in terms of processor capabilities and available memory. Thus, designers of applications for such information appliances are forced to carefully design their applications to make the best use of the available resources.
- information appliances In addition to concerns about the available amount of memory, information appliances also typically require memory which is persisted when the appliance is inactive. For example, many appliances require that user options or preferences, or other configuration information, be stored in a persistent memory. For general purpose information appliances, such as those which execute Java applications, the application itself can be maintained in persistent memory after it is loaded into the appliance. Persistent memory can be implemented with a variety of hardware including, flash ROM, EEPROM, battery backed-up static ROM, etc.
- the contents of the persistent memory can be in an unknown state when the device is next turned on. This can result in the device freezing or otherwise demonstrating undesired behavior and generally requires a hardware reset of the device to reset the persistent memory, losing all the contents in memory. After such a reset, any desired applications must be reloaded and/or data reentered into the device.
- each type of persistent memory generally requires different techniques for writing and/or reading information. This necessitates that the developer of an application for an appliance create the application to correctly access information to the particular persistent memory in the appliance. Thus, the developer may be forced to create different versions of the application depending upon the particular type of persistent memory that is employed by the appliance the application is to be executed on. It is therefore desired to have a method and system for managing the use of persistent storage which is convenient for the developer of an application to use and which inhibits freezing or other undesired user interface delays.
- a method of managing the use of persistent memory in an information appliance comprising the steps of:
- an information appliance including persistent and non-persistent memory, comprising: a processor; a user input device; a user output device; non-persistent memory; writeable persistent memory; at least one store object associated with a contiguous block of said writeable persistent memory and having a first defined set of date type representations for information to be stored in said writeable persistent memory; at least one section associated with said at least one store object and being implemented in said non-persistent memory, each said section having a defined second set of data type representations for use by applications or objects loaded onto said appliance, said at least one store including at least one method to convert information in said at least one associated section to said first defined set of data type representations and to write said converted information to said writeable persistent memory and including at least one method to read information in said writeable persistent memory in said first defined data type representations and to convert said information to said second set of data type representations
- the present invention provides a method and system for managing persistent memory within an information appliance, where the implementation of that persistent memory is transparent to an application programmer.
- One more store objects are provided which have defined methods for reading from and writing to the persistent memory.
- Each store object also has defined data type representations which allow data representations to be employed in the persistent memory that make efficient use of the memory and these representations are transparently converted by the store object to and from those used in the appliance.
- These data type representations can be size-adjusted representations (i.e. - representing an integer in four bits for an application that can only have integer values between zero and fifteen) or can be the results of data compression operations (i.e.
- the system and method can be used with a variety of persistent storage systems without requiring any changes to application programs.
- the present invention thus provides an interface between an application interacting with a memory on a device and the implementation of that memory, such that an application can be created independently of the memory implementation.
- Data type representations can be selected for storage efficiency, depending upon the implementation of the persistent memory, without impacting the design of the application as conversion between data type representations is performed automatically by the interface and thus is invisible to an application.
- Figure 1 shows a representation of an information appliance
- Figure 2 shows a schematic representation of a store object in accordance with the present invention.
- Appliance 18 includes a processor 20, a user input device 24, a user output device 28, a communications interface 32, an array of non-persistent memory 36 (such as RAM memory) and an array of writeable persistent memory 40.
- Processor 20 can be any suitable processor as will occur to those of skill in the art, such as the micro Java-701 processor sold by Sun Microsystems or the MC68328 DragonBall processor sold by Motorola.
- User input device 24 can be a keyboard, touch screen, voice input mechanism or any other suitable input mechanism as will occur to those of skill in the art.
- User output device 28 can be a display panel, such as an LCD display, an audio device or any other suitable output device as will occur to those of skill in the art.
- Communications interface 32 can be an RS 232 port, an ethernet port, an infrared port or any other interface suitable for downloading information and applications into appliance 18 or uploading such information or applications from appliance 18, as will occur to those of skill in the art.
- Non-persistent memory 36 can be integral with processor 20 or can be separately provided or can be a combination of both, as desired.
- Writeable persistent memory 40 can be any suitable type of persistent memory including, battery backed up static RAM, EEPROM, Flash NAND, Flash NOR, etc.
- FIG. 2 shows an embodiment of the method and system of managing persistent storage in accordance with the present invention.
- persistent memory 40 in appliance 18 is managed by a persistent memory manager 76 which keeps track of usage of persistent memory 40 to determine contiguous blocks of memory which are in use and/or which are free to be used.
- Each contiguous block of writeable persistent memory 40 has a store object 100 defined for it.
- Each store object 100 accepts configuration parameters which define the type of writeable persistent memory 40 that store object 100 is employing and has appropriate methods for writing to and reading this type of persistent memory 40.
- Store object 100 also accepts configuration parameters to define how various atomic or composite data types, such as integers, BOOL's, strings, records, etc. are represented within persistent memory 40. For example, applications run on appliance 18 might require only unsigned integer values between zero and fifteen to be stored and store object 100 can be configured to represent these integers in four bits of memory within persistent memory 40. Similarly, a BOOL can be represented as a complete byte or as a single bit in persistent memory 40, etc. In some circumstances, such as for executable applications, objects or data records, the representation employed within persistent memory 40 can be the result of an explicit data compression operation, such as a LZW compression algorithm, which is applied to the data in the standard representation to obtain a compressed representation.
- an explicit data compression operation such as a LZW compression algorithm
- Each application or object 80 loaded onto device 18 requests needed persistent memory from persistent memory manager 76.
- Persistent memory manager 76 determines a store obj ect 100 with available memory and assigns that memory to the requesting application or obj ect 80 which then creates one or more section objects 104 for the assigned memory.
- Application or object 80 instantiates section objects 104 with an appropriate memory layout overlay to accommodate its memory needs. As shown in Figure 2, each section 104 can have a different overlay, as needed by application or object 80, which defines how the memory in section 104 is employed by the application or object 80 (i.e.
- an application or object 80 to which a section object 104 is assigned can read from or write to that Section object 104 as required.
- each store 100 can employ a different data type representation for use in writeable persistent memory 40, an application or obj ect can have sections 104 in different stores assigned to it.
- an application or object 80 can employ an integer value that is always between zero and fifteen in value, and can thus be represented by four bits, and another integer value that can vary between zero and two hundred and fifty five, and thus requires eight bits for representation.
- the first integer value can be assigned to a section 104 in a store 100 that employs a four bit representation for integers in writeable persistent memory 40 and the second integer value can be assigned to a section 104 in a store 100 that employs an eight bit representation for integers in writeable persistent memory 40.
- section 104 Applications or objects 80 communicate with section 104 to access stored data and section 104 employs standard data type representations defined for the appliance, such as the standard data types of JAVA.
- standard data type representations defined for the appliance, such as the standard data types of JAVA.
- an application or object 80 reading character data from a section 104 will always read an eight bit character value, even though such data could be represented within writeable persistent memory 40 as a four bit value.
- an application or object 80 can write data to section 104 in standard data type representations.
- the method of the store object 100 When a write method is invoked by store object 100 to store data in one of its sections 104 in persistent memory 40, the method of the store object 100 first converts the data from the standard data type representation used by applications and/or objects 80 loaded in appliance 18 to the data representation of that data type employed by the store object 100 for the persistent memory and then writes the new representation to persistent memory 40.
- Store object 100 and section objects 104 provide a layer of abstraction between an application or object and persistent memory 40.
- the actual type of memory with which persistent memory 40 is implemented is hidden from an application or object. Instead, each application or object merely accesses its appropriate Section objects 104 to achieve its persistent storage needs.
- Each section object 104 acts to cache the current contents of its corresponding block of persistent memory 40 by having its corresponding store object 100 read the contents of that block and convert the data type representations if needed. The retrieved and converted data is then stored in non- persistent memory 36 (e.g. RAM memory), within section object 104, for access by applications or objects 80 with appliance 18.
- non- persistent memory 36 e.g. RAM memory
- each section 104 will have its corresponding store object 100 read the contents of tis corresponding block in persistent memory 40.
- the contents of section 104 can then be read, as desired, by the application or object to which Section object 104 is assigned and that application or object need not concern itself with the details of the data type representation actually employed in persistent memory 40 and/or any special requirements (additional wait states, etc.) that are required to read from persistent memory 40.
- an application or object 80 can write to a section 104 assigned to it and the data written will be maintained in section 104.
- information placed in a section 104 by an application or object 80 is not written to persistent memory 40 until a commit function is performed by store 100.
- the write method of store 100 is invoked to convert the data type representation, if necessary, of the information to be stored in persistent memory 40 and to then write that information accordingly.
- the first of which is a safe commit which employs transactional procedures to ensure that the contents of the block of persistent memory 40 corresponding to a store 100 are in a known state, i.e. - either the entire contents of the sections 104 in a store 100 are successfully written to the block of persistent memory 40 or the contents of that block are restored to their pre-write values.
- the second write function is a non- transactional commit where the contents of the sections 104 of a store 100 are written without transactional control procedures.
- the safe commit function operates to have persistent memory manager 76 set a flag and allocate another block of writeable persistent memory 40 to the store 100 to be written.
- the write operation including any necessary data type conversions, is performed to the new block of memory in persistent memory 40.
- the flag in persistent memory manager 76 is cleared and the block of memory previously allocated to the store object 100 is freed for reuse. If the write operation fails or is otherwise interrupted, the flag in persistent memory manager 76 is not cleared and persistent memory manager 76 restores the association of store 100 with its previous block of persistent memory 40, whose contents have not be effected by the failed write operation and is thus in a known state.
- Persistent memory manager 76 then returns a message to the application or object 80 which initiated the write operation that the write failed. The application or object 80 can then attempt to re-write the information, if desired.
- the methods employed by store 100 for writing the contents of sections 104 to persistent memory 40 can be performed in a separate thread of processor 20 to avoid "freezing" of an application while the data is written to persistent memory 40. Further, as will be apparent to those of skill in the art, as applications and/or objects 80 communicate with sections 104, which are implemented in RAM memory, they can read data from and/or write data to sections 104 at the fastest speed capable by appliance 18, or at least at a speed which is not limited by the access speed of the persistent memory.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
Claims
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AU53819/00A AU5381900A (en) | 1999-06-14 | 2000-06-14 | Method and system for managing and using persistent storage |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US33219399A | 1999-06-14 | 1999-06-14 | |
US09/332,193 | 1999-06-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
WO2000077613A2 true WO2000077613A2 (en) | 2000-12-21 |
WO2000077613A3 WO2000077613A3 (en) | 2001-07-05 |
Family
ID=23297131
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CA2000/000707 WO2000077613A2 (en) | 1999-06-14 | 2000-06-14 | Method and system for managing and using persistent storage |
Country Status (2)
Country | Link |
---|---|
AU (1) | AU5381900A (en) |
WO (1) | WO2000077613A2 (en) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2266172A (en) * | 1992-04-15 | 1993-10-20 | Int Computers Ltd | Object-oriented data management system |
EP0694831A2 (en) * | 1994-07-29 | 1996-01-31 | Hitachi, Ltd. | Computer system having storage unit provided with data compression function andmethod of management of storage area thereof |
US5613124A (en) * | 1994-04-15 | 1997-03-18 | Microsoft Corporation | Method and system for generating and storing multiple representations of a source object in object storage |
EP0789300A2 (en) * | 1996-02-09 | 1997-08-13 | Sun Microsystems, Inc. | System and method for automatically modifying database access methods to insert database object handling instructions |
US5963937A (en) * | 1995-08-30 | 1999-10-05 | Fuji Xerox Co., Ltd. | Format conversion of storage data using an efficient division of data |
-
2000
- 2000-06-14 AU AU53819/00A patent/AU5381900A/en not_active Abandoned
- 2000-06-14 WO PCT/CA2000/000707 patent/WO2000077613A2/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2266172A (en) * | 1992-04-15 | 1993-10-20 | Int Computers Ltd | Object-oriented data management system |
US5613124A (en) * | 1994-04-15 | 1997-03-18 | Microsoft Corporation | Method and system for generating and storing multiple representations of a source object in object storage |
EP0694831A2 (en) * | 1994-07-29 | 1996-01-31 | Hitachi, Ltd. | Computer system having storage unit provided with data compression function andmethod of management of storage area thereof |
US5963937A (en) * | 1995-08-30 | 1999-10-05 | Fuji Xerox Co., Ltd. | Format conversion of storage data using an efficient division of data |
EP0789300A2 (en) * | 1996-02-09 | 1997-08-13 | Sun Microsystems, Inc. | System and method for automatically modifying database access methods to insert database object handling instructions |
Also Published As
Publication number | Publication date |
---|---|
WO2000077613A3 (en) | 2001-07-05 |
AU5381900A (en) | 2001-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1634170B1 (en) | Method for firmware variable storage with eager compression, fail-safe extraction and restart time compression scan | |
US8434099B2 (en) | Efficient linking and loading for late binding and platform retargeting | |
US7409694B2 (en) | Highly componentized system architecture with loadable virtual memory manager | |
US7565665B2 (en) | Efficient linking and loading for late binding and platform retargeting | |
US7143421B2 (en) | Highly componentized system architecture with a demand-loading namespace and programming model | |
AU722146B2 (en) | A device driver for accessing computer files | |
JP4608580B2 (en) | Method and computer system for executing software modules | |
US5870587A (en) | Information-handling system, method, and article of manufacture including a mechanism for providing an improved application binary interface | |
US6272607B1 (en) | Method and apparatus for transactional writing of data into a persistent memory | |
US7434215B2 (en) | Mechanism for loading plugin classes at an appropriate location in the class loader hierarchy | |
US7246346B2 (en) | System and method for persisting dynamically generated code in a directly addressable and executable storage medium | |
JP3138171B2 (en) | How to download system features | |
US7558804B1 (en) | Method, apparatus, and computer-readable medium for space-efficient storage of variables in a non-volatile computer memory | |
US20070300009A1 (en) | Flash driver support techniques | |
WO2007005562A2 (en) | Shared file system management between independent operating systems | |
US20090133042A1 (en) | Efficient linking and loading for late binding and platform retargeting | |
EP1810154A2 (en) | Flash file system management | |
GB2418043A (en) | Storing data | |
US6195709B1 (en) | Method of providing persistency for transient objects in object oriented technology | |
US7426720B1 (en) | System and method for dynamic preloading of classes through memory space cloning of a master runtime system process | |
US7159222B1 (en) | Highly componentized system architecture with object mutation | |
US7350210B2 (en) | Generic data persistence application program interface | |
US20030229609A1 (en) | Method for migrating open files on a busy file system | |
WO2019182797A1 (en) | Free space pass-through | |
WO2000077613A2 (en) | Method and system for managing and using persistent storage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AK | Designated states |
Kind code of ref document: A2 Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY CA CH CN CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW |
|
AL | Designated countries for regional patents |
Kind code of ref document: A2 Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
DFPE | Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101) | ||
AK | Designated states |
Kind code of ref document: A3 Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY CA CH CN CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW |
|
AL | Designated countries for regional patents |
Kind code of ref document: A3 Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG |
|
REG | Reference to national code |
Ref country code: DE Ref legal event code: 8642 |
|
122 | Ep: pct application non-entry in european phase | ||
NENP | Non-entry into the national phase in: |
Ref country code: JP |