Free
Message: Re: EDIG Fault Tolerance - doni / Giants
2
Feb 06, 2010 01:30PM
1
Feb 06, 2010 01:37PM

Feb 06, 2010 06:56PM
2
Feb 06, 2010 07:41PM
2
Feb 06, 2010 09:29PM
2
Feb 06, 2010 09:32PM
4
Feb 06, 2010 09:55PM
4
Feb 06, 2010 10:27PM
4
Feb 07, 2010 07:22AM
4
Feb 07, 2010 08:21AM
2
Feb 07, 2010 11:16AM
1
Feb 07, 2010 11:57AM
1
Feb 07, 2010 12:12PM

Operating system including improved file management for use in devices utilizing flash memory as main memory

Patent number: 5787445

http://patft.uspto.gov/netacgi/nph-Parser?Sect2=PTO1&Sect2=HITOFF&p=1&u=%2Fnetahtml%2FPTO%2Fsearch-bool.html&r=1&f=G&l=50&d=PALL&RefSrch=yes&Query=PN%2F5787445

Table 11 summarizes all APIs implemented by the file system of the present invention. These instructions are executed by the file system in response to commands received by a processor. These API commands can be considered to be "high level" instructions executed by the file system to manipulate files stored in primary and cache memory. To understand how these API function calls operate, an example will now be given which utilizes each of the calls so as to clearly illustrate proper use and important features.

TABLE 11 ______________________________________ Function Description ______________________________________ nfsChDir Change the current directory nfsClose Close a file nfsCreate Create a file nfsDelete Delete a file nfsErase Erase data within a file nfsFind Find a file (first, next, etc.) nfsGetAttr Retrieve the DOS attributes of a file nfsGetltem Retrieve selected information items from a file nfsGetsystem Retrieve global fiIe system parameters nfsInitialize Setup NFS and optionally erase or reorganize user data nfsLength Return the length of a file's data nfsMkDir Make a new subdirectory nfsOpen Open a file nfsOptimize Erase & pack all unused space nfsRead Read data from a file nfsRename Rename a file nfsRmDir Remove a subdirectory nfsSeek Seek to a position of data within a file nfsSetAttr Change the attributes of a file. nfsSetltem Change selected information items in a file nfsSetSystem Set global file system parameters nfsStat Obtains information about a file nfsTell Return the current position within a file nfsWrite Write date to a file ______________________________________

The first API executed is Initialize. This API is activated when power is first applied to a device utilizing the flash file system of the present invention. It might be easier to conceptually visualize the API as two different commands in DOS. They are the format command and the fdisk command. In other words, when a power switch is toggled on, the Initialize API prepares the file system for operation. Preparation includes bulk erasure of the flash memory if the memory has been previously marked for bulk erasure. This is the format aspect.

Initialization also includes the process known as the fdisk command. In DOS, fdisk partitions the medium and divides the medium into sectors so that the FAT can map files to specific predefined sector addresses. Fdisk also creates the initial root directory to which all directories, subdirectories and files within them can trace their origin.

The process of initialization also includes the process of placing in cache memory a "message pointer" which can be analogized to a cursor in memory. Just as a cursor indicates where insertion or deletion of data is to occur, the message pointer is a cursor in primary memory which indicates where reading or modification of data will occur if executed. Upon initialization, the message pointer is located at the root directory.

The concept of a message pointer is crucial to the present invention because of the sequentially and logically linked data segments of the present invention. Initialization of the file system thus includes the step of determining a current position of the message pointer in primary memory. Initialization also includes the step of first creating a Directory Header if a bulk erase function call was executed. A Directory Header to a root directory can be considered to be the lowest minimum setup of the file system if no files or subdirectories yet exist.

After initialization of the file system, it will be assumed for this example that no data presently exists in flash memory. At this point, the user has the options of creating a directory within the root directory (essentially every directory created by the user is a subdirectory of the root directory), create a file within the root directory, or carry out some utility function call other than one which acts upon data which presently exists, because no file has yet been created. Creating a directory is the nfsMkDir (Norris File System Make Directory) command which creates a subdirectory in the current directory. Creating a file is the nfsCreate command which involves the steps of creating a new file, opening a file in the current file system, writing a file header and preparing for the writing of data.

The utility functions which can be executed without files existing include changing the current directory with nfsChDir, retrieving global file system parameters with nfsGetSystem, erasing and packing all unused space with nfsOptimize, and setting global file system parameters with nfsSetSystem.

The nfsChDir requires that the specified directory must reside in the current directory, and the directory's ID is used to locate it if the file pointer does not already have the directory's address. The nfsOptimize process erases and packs data segments to recover unused space. It is important to note that premature interruption of the process compromises file structure integrity. The optimize process must begin again to restore the file system to a usable condition without loss of data.

The remaining APIs almost exclusively perform some function call on files which have now been created. The API of nfsClose for closing a file which flushes and closes if a data segment is currently open for calls to nfsWrite, and nfsDelete for deleting a file which marks file and data header to signify deletion and which does not affect data until an optimization is done. Furthermore, if specified in the global flags, the optimization will be performed automatically upon deletion of a file. The function call of nfsErase for erasing data within a file marks a section of data in the current file as deleted. Specifically, "erased" data is marked from the position specified by lStart for the number of bytes specified by lSize as represented by the presentation map created by nfsOpen.

The function call nfsFind or finding a file (first, next, etc.) finds the file specified in the current directory, and has the user selectable options of finding the first name, finding the first file in the current directory, finding the last file in the current directory, finding the next file following any previously used file, finding the file preceding any previously used file, finding a normal file, finding a read-only file, finding a hidden file, finding a system file, and finding a subdirectory.

The function call nfsGetAttr retrieves the DOS attributes of a file from the DOS attributes flags of the current file. The DOS attributes flags are found in Table 12 below.

2
Feb 07, 2010 01:42PM
1
Feb 07, 2010 03:11PM
1
Feb 07, 2010 07:06PM
3
Feb 08, 2010 07:43AM
Share
New Message
Please login to post a reply