Patent 5787445 claims: As the old saying goes -- DOS to MOS --- Go EDIG!
in response to
by
posted on
Feb 07, 2010 08:56AM
As the old saying goes -- DOS to MOS --- Go EDIG!
Patent 5787445
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.