Operating System Design/Case Studies/FAT
The FAT, or File Allocation Table filesystem, was invented in 1977 by Bill Gates and Marc McDonald and was the primary filesystem used on Microsoft Windows 9x until NT was released, at which point it was surpassed by NTFS. It was named for the relatively simple central allocation table that stores where each file is and what blocks of the device may be damaged. It is was also used for many years on various other operating systems, and is the standard file system for floppy diskettes.
The first version of the FAT file system was FAT12, and was meant to handle floppy disks. Because it used a 12-bit value for storing cluster addresses, it was limited to containing only 4078 clusters. Also, as it only used a 16-bit value to store the number of disk sectors, it was limited to 32 megabytes. Lastly, it was a flat file system, and thus could not contain directories.
Released concurrently with the IBM PC AT and MS-DOS 3.0, FAT16 was released in 1984. FAT16 upped the cluster value size to 16 bits, allowing for 65,517 clusters and therefore larger partitions. However, another version of FAT16 was released in 1987 for Compaq DOS 3.31, and this is what is today known as the FAT16 filesystem. This increased the sector count to a 32-bit value, allowed up to 32 KiB clusters, and also allowed partitions up to 2 GiB. Eventually, Windows NT once again increased the cluster size to 64 KiB, although this broke backwards compatibility.
During the design process of Windows 95, Microsoft decided that file names should be able to handle up to 255 UTF-16 characters. VFAT was thus an extension of FAT16 to work around the traditional "8.3" filename limitation that FAT16 suffered from.
FAT32 was introduced with Windows 95 OSR2 to increase the maximum volume size that could be addressed by using a 32-bit value to address clusters. This increased the maximum volume size to 2 TiB, although since Windows 2000, the maximum volume that can be created has been 32 GiB. Also, the maximum file size that can be used with FAT32 is slightly less than 4 GiB.
exFAT is a replacement for the traditional FAT file system designed specifically for flash memory devices. It was introduced with Windows Embedded CE 6.0, and support was added to Microsoft's desktop operating system line with the release of Windows Vista SP1. It features many performance enhancements, increased cluster size (32 MB initially), supports files up to 16 Exabytes, and drops the traditional 8.3 filename system. In addition, although this has not yet been implemented in the Windows Vista SP1 version of the filesystem driver, it does support an access control system.
One of the complaints with the FAT allocation system is that there was no protection from fragmentation; that is, the random dispersion of data across a disk. This impaired disk performance, and was time-consuming to correct. In addition, patents have been granted to Microsoft for various portions of the FAT and exFAT filesystems, and Microsoft has announced that it will give licenses at a cost of $0.25 per unit sold, with a maximum $250,000 royalty per license granted.