Sign in

Operating system including improved file management for use in devices ...

 Norbert Daberko
A method of memory management for a primary memory created from a non-volatile, long-term storage medium, in particular flash memory, which enables direct manipulation of data segments stored therein. The data segments of a single file are typically not stored contiguously in ...
Inventor: Norbert Daberko
Assignee: Norris Communications Corporation
Primary Examiner: Jean M. Corrielus

U.S. Classification
707/205; 707/102; 711/200; 711/209; 711/2; 711/5

International Classification
G06F 1730

View patent at USPTO

Citations

Patent NumberTitleIssue date
4685057Memory mapping systemAug 4, 1987
5200959Device and method for defect handling in semi-conductor memoryApr 6, 1993
5263160Augmented doubly-linked list search and management method for a system having data stored in a list of data elements in memoryNov 16, 1993
5337275Method for releasing space in flash EEPROM memory array to allow the storage of compressed dataAug 9, 1994
5341330Method for writing to a flash memory array during erase suspend intervalsAug 23, 1994
5357475Method for detaching sectors in a flash EEPROM memory arrayOct 18, 1994
5404485Flash file systemApr 4, 1995
5437020Method and circuitry for detecting lost sectors of data in a solid state memory diskJul 25, 1995
5448577Method for reliably storing non-data fields in a flash EEPROM memory arraySep 5, 1995
5454103Method and apparatus for file storage allocation for secondary storage using large and small file blocksSep 26, 1995
5551020System for the compacting and logical linking of data blocks in files to optimize available physical storageAug 27, 1996
5581736Method and system for dynamically sharing RAM between virtual memory and disk cacheDec 3, 1996
5586291Disk controller with volatile and non-volatile cache memoriesDec 17, 1996
5602987Flash EEprom systemFeb 11, 1997

Referenced by

Patent NumberTitleIssue date
5978810Data management system and method for storing a long record in a set of shorter keyed recordsNov 2, 1999
6044346System and method for operating a digital voice recognition processor with flash memory storageMar 28, 2000
6212097Nonvolatile memoryApr 3, 2001
6247024Method and system for performing deferred file removal in a file systemJun 12, 2001
6262915Nonvolatile memory and nonvolitile memory reproducing apparatusJul 17, 2001
6272503Tablespace-relative database pointersAug 7, 2001
6272587Method and apparatus for transfer of data between cache and flash memory in an internal combustion engine control systemAug 7, 2001
6304883Technique for managing files in telephone switching systemOct 16, 2001
6404676Nonvolatile memory and nonvolatile memory reproducing apparatusJun 11, 2002
6502204Library system storing removable storage mediaDec 31, 2002
6535949Portable electronic device having a log-structured file system in flash memoryMar 18, 2003
6549901Using transportable tablespaces for hosting data of multiple usersApr 15, 2003
6587915Flash memory having data blocks, spare blocks, a map block and a header block and a method for controlling the sameJul 1, 2003
6594674System and method for creating multiple files from a single source fileJul 15, 2003
6633724Realtime data recording methodOct 14, 2003
6675180Data updating apparatus that performs quick restoration processingJan 6, 2004
6760535Method and apparatus for cache management for a digital VCR archiveJul 6, 2004
6789095File management method, program therefore, recording medium containing the program, and file management apparatus for performing the methodSep 7, 2004
6804671Pluggable tablespaces for database systemsOct 12, 2004
6804685Voice message managing method, in particular for a voice data recording/playing/editing electronic deviceOct 12, 2004
6823449Directory structure-based reading of configuration ROMNov 23, 2004
6910082Method, system and program products for reducing data movement within a computing environment by bypassing copying data between file system and non-file system buffers in a serverJun 21, 2005
6934700File systems supported data sharingAug 23, 2005
6950918File management of one-time-programmable nonvolatile memory devicesSep 27, 2005
6957295File management of one-time-programmable nonvolatile memory devicesOct 18, 2005
6973519Card identification compatibilityDec 6, 2005
6978342Moving sectors within a block of information in a flash memory mass storage architectureDec 20, 2005
6985584Non-volatile record medium, recording method, and recording apparatusJan 10, 2006
7000064Data handling systemFeb 14, 2006
7102671Enhanced compact flash memory cardSep 5, 2006
7111140Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devicesSep 19, 2006
7133599Realtime data recording methodNov 7, 2006
7138295Method of information processing using three dimensional integrated circuitsNov 21, 2006
7167944Block management for mass storageJan 23, 2007
7185208Data processingFeb 27, 2007
7193916Apparatus and method for determining erasability of dataMar 20, 2007
7193239Three dimensional structure integrated circuitMar 20, 2007
7215580Non-volatile memory controlMay 8, 2007
7231643Image rescue system including direct communication between an application program and a device driverJun 12, 2007
7240065Providing mappings between logical time values and real time valuesJul 3, 2007
7242924Methods of recording voice signals in a mobile setJul 10, 2007
7251660Providing mappings between logical time values and real time values in a multinode systemJul 31, 2007
7257666Method of writing, erasing, and controlling memory for memory deviceAug 14, 2007
7263591Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devicesAug 28, 2007
7275686Electronic equipment point-of-sale activation to avoid theftOct 2, 2007
7340581Method of writing data to non-volatile memoryMar 4, 2008
7370166Secure portable storage deviceMay 6, 2008
7403852Data architecture of map data, data architecture of update instruction data, map information processing apparatus, and map information providing apparatusJul 22, 2008

Claims

What is claimed is:

1. A method of memory management for a primary memory created from a non-volatile, long-term storage medium, said method enabling direct manipulation of contiguous and non-contiguous discrete data segments stored therein by a file system, and comprising the steps of:

(a) creating the primary memory from a non-volatile, long-term storage medium, wherein the primary memory comprises a plurality of blocks in which the data segments are to be stored;
(b) coupling a cache memory to the primary memory, said cache memory providing temporary and volatile storage for at least one of the data segments;
(c) writing a new data segment from the cache memory to the primary memory by linking said new data segment to a sequentially previous logical data segment by the following steps:
(1) receiving the new data segment in the cache memory;
(2) moving the new data segment from the cache memory to a next available space within primary memory such that the new data segment is stored in primary memory in non-used memory space;
(3) identifying the previous logical data segment in primary memory;
(4) creating a logical link between the previous logical data segment and the new data segment such that the logical link provides a path for sequentially accessing the data segments within the primary memory; and
(5) creating additional serial and logical links as subsequent new data segments are written to primary memory, said logical links providing the path for serially accessing the data segments regardless of contiguity of the data segments relative to each other within the primary memory.

2. The method of claim 1 wherein the method comprises the additional step of reading at least one data segment from primary memory by following the steps of:

(a) moving backwards or forwards from a current data segment to other serially and logically linked data segments within the primary memory along a path of serial and logical links;
(b) identifying the at least one data segment when it is the current data segment; and
(c) retrieving the current data segment from the primary memory by reading said data segment into the cache memory.

3. The method as defined in claim 2 wherein the method comprises the additional step of creating a current file pointer, said current file pointer being a physical address stored in a memory corresponding to a location of a file in the primary memory, and wherein the file system accesses files stored in the primary memory by retrieving data beginning at the physical address stored in the current file pointer.

4. The method as defined in claim 3 wherein the step of moving forwards to other serially and logically linked data segments from a current data segment comprises the additional steps of:

(a) locating a next data segment address pointer stored in the current data segment which stores an address of the next data segment which is logically linked to the current data segment;
(b) retrieving the address from the next data segment address pointer; and
(c) storing the address in the current file pointer.

5. The method as defined in claim 4 wherein the step of moving backwards to other serially and logically linked data segments from a current data segment comprises the additional steps of creating a history of movement by the current file pointer along the linked data segments:

(a) creating a memory stack for storing address pointers in memory, said stack following a last in, first out process for pushing on and popping off address pointers from the stack;
(b) pushing an address pointer of a root directory onto the stack when the file system is initialized; and
(c) sequentially pushing subsequent address pointers onto the stack from the current file pointer as the current file pointer moves down a logical link to a last data segment from which the file system needs to backtrack.

6. The method as defined in claim 5 wherein the step of moving backwards to other serially and logically linked data segments from a current data segment comprises the additional steps of:

(a) sequentially popping a top address pointer from the stack, said top address being an address pointer to a preceding data segment;
(b) storing the popped top address pointer to the current file pointer; and
(c) repeating steps (a) and (b) until the current address pointer contains the address of a desired data segment.

7. The method as defined in claim 2 wherein the file system includes application program instructions which execute functions of the file system which are compatible with DOS compliant computer devices.

8. The method as defined in claim 7 wherein the file system includes BIOS function calls which are specific to memory type such that application program instructions are implemented in context of the memory technology.

9. The method as defined in claim 2 wherein the method of memory management includes the step of creating logical blocks which overlay a physical memory structure of primary memory, said logical blocks comprising at least one erase block.

10. The method as defined in claim 9 wherein the step of creating logical blocks which overlay the physical memory structure further includes the step of creating logical memory block maps within each logical block, said memory block map indicating whether the at least one erase block is nonfunctional.

11. The method as defined in claim 10 wherein the step of creating logical memory blocks maps includes the step of creating a logical block control map, said map including a physical address of the physical memory over which the logical block corresponds, an address of a next available memory equal size block in which data may be stored, and a nonfunctional block map.

12. The method as defined in claim 1 wherein the step of creating the primary memory from a non-volatile, long-term storage medium comprises the more specific step of selecting flash memory as the primary memory.

13. The method as defined in claim 12 wherein the step of creating the primary memory from flash memory comprises the more specific step of selecting NAND technology flash memory as primary memory.

14. The method as defined in claim 1 wherein the step of coupling the cache memory to the primary memory comprises the more specific step of coupling a random access memory to the primary memory.

15. The method as defined in claim 1, wherein the step of creating a logical link between the previous logical data segment and the new data segment comprises the steps of:

(a) appending a header to new data segments when writing the new data segments to primary memory by moving the new data segment from the cache memory to the next available contiguous memory space within primary memory; and
(b) including in the header at least one address pointer so as to logically link the header to other data segments.

16. The method as defined in claim 15 wherein the step of appending a header to the new data segments comprises the more specific step of selecting a header from the group consisting of a device, volume, directory, file, data, and tree header.

17. The method as defined in claim 11 wherein the step of appending a header to the new data segments comprises the more specific step of selecting a header-like data structure from the group consisting of a tree node, a segment index entry, and a secondary segment index entry.

18. The method as defined in claim 15 wherein the step of appending a header to the new data segments so as to create the logical link to the other data segments comprises the more specific steps of including within the header an identification field wherein unique identification data is stored such that no headers in the primary memory have the same identification data.

19. The method as described in claim 15 wherein the method of memory management for a primary memory comprises the additional step of reserving a fixed amount of primary memory for an edit history which provides a record of all modifications to at least one file stored in primary memory.

20. The method as described in claim 19 wherein the method of memory management which reserves the fixed amount of primary memory for an edit history comprises the more specific step of creating a playback tree structure, said playback tree structure providing temporary storage space in the work memory for a copy of sequentially related data segments comprising the at least one file stored in primary memory.

21. The method as defined in claim 20 wherein the step of creating a playback structure in temporary storage space comprises the steps of:

(a) creating a first tree header including a first tree node address pointer and a next tree node address pointer, said first tree header corresponding to a directory in which the current file pointer resides;
(b) creating at least one tree node including a next tree node address pointer, a branch node pointer, a data address pointer and a data size field, said at least one tree node corresponding to a file whose address is contained within the current file pointer.

22. The method as defined in claim 20 wherein the step of creating a playback structure in temporary storage space which provides seamless playback of data stored in a file of primary memory includes the ability to logically insert new data in an existing data segment by the steps of:

(a) creating a second tree node which enables retrieval of a portion of the existing data segment which is designated as pre-insertion data;
(b) creating a third tree node which enables retrieval of data from a new data header, said new data header containing the new data to be logically inserted, and said new data being seamlessly retrievable after retrieval of the pre-existing data; and
(c) creating a fourth tree node which enables seamless retrieval of a portion of the existing data segment which is designated as post-insertion data after retrieval of the new data.

23. The method as defined in claim 20 wherein the step of creating a playback structure in temporary storage space which provides seamless playback of data stored in a file stored in primary memory includes the ability to logically delete a portion of data from an existing data segment without physically deleting said portion, and comprising the steps of:

(a) creating a second tree node which enables retrieval of a portion of the existing data segment which is designated as pre-erasure data; and
(b) creating a third tree node which enables seamless retrieval of a portion of the existing data segment which is designated as post-erasure data after retrieval of the pre-erasure data.

24. The method as defined in claim 23 wherein the method comprises the additional step of creating a new data header which records location information about the portion of data being logically deleted from the existing data segment.

25. The method as defined in claim 20 wherein the method of memory management comprises the more specific steps of separating the work memory from a user memory in primary memory, said work memory being dedicated to storing the playback tree structures.

Drawings