FAT File System Guide

Describes the FAT (File Allocation Table) file system that was originally devised for MS-DOS.

Introduction

FAT file system was originally used by IBM PCs and is an industrial standard for file systems, supported by all operating systems that execute on PCs. Symbian platform FAT file system implementation supports FAT12, FAT16 and FAT32. FAT file system is used for storing user data on NAND Flash, internal RAM drives and removable media such as SD cards and MMC cards.

Background information

On a FAT file system , the smallest size of data storage that can be allocated to a file called a cluster. The FAT structure is used to track how clusters are allocated to each file. The FAT table stores the address of the clusters. The cluster size is different on different media.

Over the years this file system has been enhanced to keep track of increasing drive sizes. The number after the FAT relates to the size of the entry in the FAT data structure, for example FAT12 uses 12 bit entries.

FAT features

FAT provides the following features:

  • The industrial standard for filing systems on PCs.

  • Used for user storage.

  • There is a rugged FAT system that can cope with the loss of power during a write operation.

  • Used on a wide variety of media such as NAND Flash, internal RAM drives and removable media like SD cards and MMC cards.

  • There is a maximum upper limit for the size of a drive, which has been increased in FAT32

When files are written or deleted from the media, the files can be scattered over the media known as fragmentation. The fragmentation results in slower access times of the files.

Leaf Directory Name Cache

Leaf directory name refers to the parent directory path of a file or a folder. For example the leaf directory of a file somefile.txt in the path C:\1\2\3\4\5\6\somefile.txt is C:\1\2\3\4\5\6\. Each leaf directory name cache entry contains the following information:

  • Full path of the leaf directory

  • Starting cluster number

  • Most recently used entry position

To perform any file operations such as read, write or update the file must be first located. The leaf directory name cache improves the performance of locating a file in deeply nested directories. The number of entries that can be cached is configured in the estart.txt file. See Leaf Directory Name Cache Configuration Tutorial, for more details.

Directory Cache

A directory is a file that contains a list of files and directory names. The list items are called directory entries. Each directory entry contains the filename, size of the file, starting cluster of the file and other metadata information. The maximum size of a directory entry is 32 bytes. Directory cache is used to store the directory entries. In the older versions of Symbian platform, the directory cache was implemented as a fixed array. The new directory cache is variable and allows the device creators to customise with a dynamic range.

The configuration of directory cache specifies the size of the directory cache dynamically. The size of a directory cache depends on the available system memory. The dynamic range can be configured in the estart.txt file. See Dynamic Directory Cache Configuration Tutorial, for more information. The global cache memory manager allocates the memory to the different cache on each drive.

Global Cache Memory Manager

The global cache memory manager is introduced to dynamically manage the cache memory on different drives. The global cache memory is configured to reserve the address space required by different cache memories. The estart.txt file is used to configure the global cache memory manager. There are two parameters:

  • GlobalCacheMemorySize parameter specifies the overall memory available to various cache. The parameter is specified in kilobytes and the recommended value is 32768. The maximum value depends on the sum of maximum size required by cache on each drive.

  • LowMemoryThreshold specifies the percentage of RAM that should be reserved for the system. When the memory on RAM reaches the threshold value, the dynamic memory growth is stopped. The default value is 10% of RAM.

The text below is the sample estart.txt entry for the global cache memory manager.


…

[CacheMemory]
GlobalCacheMemorySize    32768
LowMemoryThreshold         10

The maximum or the global cache memory reserves address space but the actual memory allocation depends on the available system memory.

Related concepts
Using ECom
Related information
File Server