Tatsächlich gab es im Laufe der Jahre mehrere Varianten von "FAT16" mit unterschiedlichen Grenzwerten. Betrachten wir jedoch die Version, die von "compaq DOS 3.31" bis zu Windows 95 bestand.
FAT-Volumes sind in Cluster unterteilt. Jeder Cluster besteht aus einer Potenz von zwei Sektoren. Die Anzahl der Sektoren pro Cluster auf FAT16 wird als vorzeichenbehaftete 8-Bit-Zahl gespeichert. Die maximal möglichen Sektoren pro Cluster sind also 64.
Clusternummern wurden als 16-Bit-Wert ohne Vorzeichen gespeichert. Begrenzen der Gesamtzahl der Cluster auf 65536. Multiplizieren Sie diese mit den maximalen Sektoren pro Cluster, und Sie erhalten ein Limit von 4194304 Sektoren.
Die (logische) Sektorgröße von Festplatten beträgt 512 Bytes. Multiplizieren Sie dies mit der oben genannten Anzahl von Sektoren und Sie erhalten Ihr 2GiB-Limit. Grundsätzlich kann ein Medium mit größeren Sektoren ein größeres FAT16-Volume unterstützen, aber ich glaube nicht, dass dies in der Praxis passiert ist.
Windows NT änderte die Interpretation des Felds "Sektoren pro Cluster" zu 8 Bit ohne Vorzeichen. Dies ermöglichte eine 4GiB FAT16-Partition mit 512-Byte-Sektoren (und theoretisch größer auf Laufwerken mit größeren Sektoren). AIUI Windows 98 fügte Unterstützung für das Lesen und Schreiben solcher Partitionen hinzu, aber es konnte sie nicht erstellen und die Festplatten-Dienstprogramme konnten sie nicht reparieren.
Es wäre sicherlich möglich gewesen, kleinere Änderungen am Dateisystemformat vorzunehmen, um größere Cluster und damit größere Volumes zu unterstützen. MS entschied sich jedoch für die radikalere Option, zu einem 32-Bit-Cluster-Index überzugehen, bei dem Windows 95 OSR2 FAT32 produziert.
Ich glaube, der Grund für die radikalere Option war die Raumeffizienz. Bei den damals üblichen Dateigrößen waren 32-kB-Cluster schon ziemlich verschwenderisch und größere wären sogar so verschoben worden.