WO2000077613A2 - Method and system for managing and using persistent storage - Google Patents

Method and system for managing and using persistent storage Download PDF

Info

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
Application number
PCT/CA2000/000707
Other languages
French (fr)
Other versions
WO2000077613A3 (en
Inventor
Bertrand Michaud
Stephen Maryka
Don Grant
Original Assignee
Wind River International Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wind River International Inc. filed Critical Wind River International Inc.
Priority to AU53819/00A priority Critical patent/AU5381900A/en
Publication of WO2000077613A2 publication Critical patent/WO2000077613A2/en
Publication of WO2000077613A3 publication Critical patent/WO2000077613A3/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/4493Object 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

A method and system for managing persistent memory within an information appliance provides an implementation where that persistent memory is transparent to an application programmer. A store object is provided which has defined methods for reading from and writing to the persistent memory. The store object also has defined data type representations which allow a set of data representations to be employed in the persistent memory which make efficient use of the memory and these representations are transparently converted by the store object to and from those used in the appliance. By changing the read and write methods of the store and the data representations employed, the system and method can be used with a variety of persistent storage systems without requiring any changes to application programs.

Description

Method and System for Managing and Using Persistent Storage
FIELD OF THE INVENTION 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.
BACKGROUND OF THE INVENTION
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.
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.
However, problems do exist with such persistent memory in that it is relatively expensive, and therefore must be used efficiently, and that, generally, access to persistent memory can be quite slow, both for reading and, particularly, writing. The relatively long time which can be required to write information to persistent memory can result in undesired "freezing" of an application when information is being written to the persistent memory by an application. Such freezing of an application can result in confusion for the user of the application, as the user may be led to believe that the appliance has crashed or that the application has experienced a logic error. Even when no confusion occurs, such freezing is generally undesirable as it interferes with the efficient interaction between the user and the device. Further, if a device is powered down, intentionally or unintentionally, while information is being written to persistent memory, 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.
A further problem exists in that 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.
SUMMARY OF THE INVENTION It is an object of the present invention to provide a novel method and system for managing the use of persistent memory in information appliance which obviates or mitigates at least one disadvantage of the prior art.
According to a first aspect of the present invention, there is provided a method of managing the use of persistent memory in an information appliance, comprising the steps of:
(i) assigning a store obj ect to a contiguous block of writeable persistent memory in said appliance, said store object including at least one method to write information to said persistent memory, at least one method to read information from said persistent memory and a set of data type definitions which define first representations of data types for use between said store object and said appliance and second representations of the same data types for storing information in said persistent memory;
(ii) creating in RAM memory at least one section object associated with said at least one store object and associating each said at least one section object with an application or object loaded on said appliance, each said at least one section object interacting with said application or object to receive information from said application or object for storage and to provide stored information to said application or object; and
(iii) operating said store object to:
(a) retrieve information from said persistent memory in said second representations and to convert said retrieved data to said first representations, said converted information being stored in said at least one associated section object; and
(b) receive information from each said associated section to store a copy of said received information in said second representation in said persistent memory. According to another aspect of the present invention, there is provided 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 and to store said converted information in said at least one associated section objects. 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. - compressing a multi-byte data structure or record with LZW compression, etc.) By changing the read and write methods of the store and/or the data representations employed, 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. BRIEF DESCRIPTION OF THE DRAWINGS
Preferred embodiments of the present invention will now be described, by way of example only, with reference to the attached Figures, wherein:
Figure 1 shows a representation of an information appliance; and Figure 2 shows a schematic representation of a store object in accordance with the present invention.
DETAILED DESCRIPTION OF THE INVITATION
In Figure 1, an information appliance is indicated generally at 18. 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.
Figure 2 shows an embodiment of the method and system of managing persistent storage in accordance with the present invention. In this embodiment, 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.
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. - the six bytes can be two-byte unsigned integer values, the next byte is a Boolean, etc.) The application or object 80 to which a section object 104 is assigned can read from or write to that Section object 104 as required. As 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. For example, 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. In such a case, 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.
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. Thus, 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. Similarly, an application or object 80 can write data to section 104 in standard data type representations.
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.
When a read method is invoked by Store object 100 to retrieve data from persistent memory 40 to a section 104, the read is performed and the method then converts the read data from the persistent memory representation of that data type to the corresponding representation used for that data type in appliance 18.
Store object 100 and section objects 104 provide a layer of abstraction between an application or object and persistent memory 40. In particular, 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.
It is contemplated that, as part of the initialization operations that occur upon activation of appliance 18, or upon an application being first executed or an object being instantiated, 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.
Similarly, an application or object 80 can write to a section 104 assigned to it and the data written will be maintained in section 104. In a present embodiment of the invention, 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. Upon receipt of a commit function from a section 104, 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.
Presently, there are two supported commit functions, 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. In one embodiment of the present invention, 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. Upon successful completion of the write operation, 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.
The above-described embodiments of the invention are intended to be examples of the present invention and alterations and modifications may be effected thereto, by those of skill in the art, without departing from the scope of the invention which is defined solely by the claims appended hereto.

Claims

We claim:
1. A method of managing the use of persistent memory in an information appliance, comprising the steps of:
(i) assigning a store object to a contiguous block of writeable persistent memory in said appliance, said store object including at least one method to write information to said persistent memory, at least one method to read information from said persistent memory and a set of data type definitions which define first representations of data types for use between said store object and said appliance and second representations of the same data types for storing information in said persistent memory;
(ii) creating in RAM memory at least one section object associated with said at least one store object and associating each said at least one section object with an application or object loaded on said appliance, each said at least one section object interacting with said application or object to receive information from said application or object for storage and to provide stored information to said application or object; and
(iii) operating said store object to:
(a) retrieve information from said persistent memory in said second representations and to convert said retrieved data to said first representations, said converted information being stored in said at least one associated section object; and
(b) receive information from each said associated section to store a copy of said received information in said second representation in said persistent memory.
2. The method of claim one wherein step (iϋ)(a) is performed as part of the initialization of said appliance.
3. The method of claim 1 wherein step (iii)(b) is only performed upon receipt by said store object of an explicit command.
4. The method of claim 1 comprising at least two store objects, each having at least one section object associated therewith, each of said at least two store objects employing a different second representation and the same first representation.
5. The method of claim 1 wherein said second representation is the output of a compression operation performed on information in said first representation.
6. The method of claim 1 wherein step (iii)(b) is performed with transactional processing control.
7. 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 data type representations for information to be stored in said writeable persistent memory; at lease one section associated with said at least one store obj ect 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 and to store said converted information in said at least one associated section objects.
PCT/CA2000/000707 1999-06-14 2000-06-14 Method and system for managing and using persistent storage WO2000077613A2 (en)

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)

* Cited by examiner, † Cited by third party
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
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