Operating Systems and their File Systems
FAT Specifics
Virtual FAT (VFAT)
When Microsoft released Windows® 95 in 1995, they made numerous improvements to the underlying operating system (rebuilt it actually) when compared to its predecessor, Windows® 3.x. One of the key changes made was to enhance the FAT 16 file system that had gone virtually untouched until that point. This new variation of FAT was called Virtual FAT, or VFAT, for short. Many people use the terms “FAT” and “VFAT” alternatively, even though they are technically not the same.
All FAT partitions created under Windows 95 or later operating systems are really VFAT partitions.
Let’s take a look at VFAT’s key features and improvements as compared to FAT12 and FAT16:
- Support of Long File Names: Prior FAT versions had an eleven-character file name restriction. One of VFAT’s most important accomplishments was to enable the use of long file names in Windows 95, as well as all applications written for it, while maintaining compatibility with older software that had been written before VFAT was implemented.
- Improved Disk and File Performance: Microsoft wrote entirely new routines utilizing 32-bit protected mode code to improve disk access and file system management to improve performance, while maintaining 16-bit code required for compatibility.
- Improved Disk Management Capability: Disk locking support was added to allow utilities to access disks in an exclusive mode without the concerns of other programs accessing the disk in the meantime.
With all of these improvements though, VFAT is basically the same as FAT. While all of these changes improved the manner in which the file system was used, nothing had been done to really improve the actual structures on the disk The only change that made any improvement at all to the structure was the addition of long file names. Even at that, VFAT’s support was basically a code hack! For more information on how VFAT implements longer file names under Windows 9x/ME, click here.
The remainder of this segment on file systems, as it pertains to file allocation tables, refers to VFAT.
32-Bit FAT or what is typically known as FAT32
As hard disks increased in size through the late 1990s, limitations imposed by the FAT16 and VFAT file systems became very evident. Once hard disk manufacturers began creating drives larger than 2GB, FAT 16 could not be used to format an entire drive as a single partition. Continued use of large cluster sizes led to a significant amount of wasted hard disk space, more commonly referred to as slack. Computer manufacturers, us included, began complaining that FAT 16 was becoming unwieldy as users were becoming confused with systems that appeared to be coming seemed like multiple hard drives. Obviously, there weren’t multiple drives, just multiple partitions on a single drive that was being hamstrung by the FAT 16 partition size limitation.
Microsoft, as a direct result of these complaints and the need to advance their newest operating systems, created FAT 32. You can read more about FAT 32 here in our segment, “How Fat is FAT” as well as our discussion about FAT and wasted disk space, Cutting The Slack. This last FAT variant is Microsoft’s last enhancement of the FAT/VFAT file system. Although Microsoft doesn’t refer to it as VFAT, FAT 32 is based more on VFAT than the former FAT 16. It derives its name from the ability to use 32-bit numbers to represent clusters, instead of the 16-bit numbers used by FAT 16. It was created simply to solve the two problems we mentioned above, allow single partitions above 2GB to be created, and save wasted space due to the slack created when partitions were created using FAT 16.
FAT 32 was first introduced in Microsoft’s Windows® 95 OEM Service Release 2. OEM stands for “Original Equipment Manufacturer”, and this particular version was supposed to be only available to users when installed on a computer purchased from a hardware manufacturer. The controls on the release of this version were so lacking, that retailers were selling it along with modems and just about any other hardware item you can think of. FAT 32 support was later included in Windows® 98, Windows® ME, Windows® 2000 and it is present in both versions of Windows® XP. As we pass through the year 2002, many non-Windows operating systems can now read Fat 32 partitions, and some can even read from and write to them. With hard disk sizes already exceeding 100GB, FAT 32 has simply replaced FAT 16 on all Microsoft operating systems except for those converting to NTFS.
Operating systems older than Windows 95 OSR2, including the first version of Windows 95, known as Windows 95A, and Windows 3.x, and all versions of DOS prior to version 7.1, cannot read FAT 32 partitions.
Aside from the difference in the way FAT 32 creates and numbers the clusters, it is, for the most part, the same as regular VFAT, with some of the same descriptions of the FAT file structures applying to FAT 32. Again, there are some minor structural differences between FAT 32 and earlier FAT versions such as the use of file allocation tables, and the location and size of the root directory.
In the early FAT versions, the root directory is fixed in place at the start of the DOS volume, and is anchored in the directory tree. The root directory is located on the disk volume directly after the two copies of the FAT, which are directly below the other key disk structures. This is in contrast with regular directories, which can be located anywhere on the disk. Earlier versions of FAT limited you to 2GB and less depending upon the version.
FAT 32 removed these restrictions on the root directory. Under FAT 32, the root directory is treated like a regular directory, and can be relocated and expanded in size like any other directory. FAT 32 also removed 2GB partition limitation and enable the volume to grow into the terabyte range.
You should know that with respect to FAT 32:
- The root directory cannot be deleted.
- The root directory has no parent, since it is at the top of the tree structure.
- The root directory still contains the “..” entry, but it points to the cluster number of the parent directory like a regular directory’s parent entry, and contains a null value (zero).
Now that we have built a foundation of basic disk structures, including a brief history of the file allocation table, let’s take a look at the file systems employed by the various operating systems that have grown in one way or another from what we have already discussed.
Notice: Windows® 95, Windows® 98, Windows® NT, Windows® 2000, Windows® XP and Microsoft® Office are registered trademarks or trademarks of the Microsoft Corporation.
All other trademarks are the property of their respective owners.