Sunday, December 18, 2011

Operating Systems FILE SYSTEM FAT 16


Initial FAT16
In 1984 IBM released the PC AT, which featured a 20 MB hard disk. Microsoft introduced
MS-DOS 3.0 in parallel. Cluster addresses were increased to 16-bit, allowing for a greater number
of clusters (up to 65,517) and consequently much greater filesystem sizes. However, the maximum
possible number of sectors and the maximum (partition, rather than disk) size of 32 MB did not
change. Therefore, although technically already "FAT16", this format was not yet what today is
commonly understood under this name. A 20 MB hard disk formatted under MS-DOS 3.0, was not
accessible by the older MS-DOS 2.0. Of course, MS-DOS 3.0 could still access MS-DOS 2.0 style
8 KB cluster partitions.
MS-DOS 3.0 also introduced support for high-density 1.2 MB 5.25" diskettes, which
notably had 15 sectors per track, hence more space for FAT. This probably prompted a dubious
optimization of the cluster size, which went down from 2 sectors to just 1. The net effect was that
high density diskettes were significantly slower than older double density ones.

Final FAT16
Finally in November 1987, in Compaq DOS 3.31, came what is today called the FAT16
format, with the expansion of the 16-bit disk sector index to 32 bits. The result was initially called
the DOS 3.31 Large File System. Although the on-disk changes were apparently minor, the entire
DOS disk code had to be converted to use 32-bit sector numbers, a task complicated by the fact that
it was written in 16-bit assembly language.
In 1988 the improvement became more generally available through MS-DOS 4.0. The limit
on partition size was now dictated by the 8-bit signed count of sectors-per-cluster, which had a
maximum power-of-two value of 64. With the usual hard disk sector size of 512 bytes, this gives 32
KB clusters, hence fixing the "definitive" limit for the FAT16 partition size at 2 gigabytes. On
magneto-optical media, which can have 1 or 2 KB sectors, the limit is proportionally greater.
Much later, Windows NT increased the maximum cluster size to 64 KB by considering the sectorsper-
cluster count as unsigned. However, the resulting format was not compatible with any other
FAT implementation of the time, and anyway, generated massive internal fragmentation. Windows
98 also supported reading and writing this variant, but its disk utilities didn't work with it.

No comments:

Post a Comment