it-swarm.com.de

Warum kann FAT16 nicht mehr als 2 GB speichern?

Auf allen Websites, auf denen ich nach Informationen zu FAT16 suche, wird lediglich deklarativ angegeben, dass nicht mehr als 2 GB zugewiesen werden können. OK. Großartig. Ich glaube Ihnen. Aber wie kommen Sie zu diesem Schluss (außer es nur zu testen)?

Gibt es eine Formel, mit der bestimmt werden kann, wie viel ein FAT16-System aufnehmen kann?

26

FAT16 verwendet 16 Bit, um Cluster zu identifizieren. Daher gibt es maximal 65536 Cluster, bevor Ihnen die Bezeichner ausgehen, und einige Bezeichner sind für Nicht-Dateiverwendungen reserviert. Jede Datei belegt mindestens einen Cluster. Größere Cluster erhöhen die minimale Zuordnung pro Datei und erhöhen den Overhead kleiner Dateien.

Die Clustergröße gibt dann das maximal identifizierbare Volume an. Für 32-KB-Cluster sind dies 32 * 1024 * 65536 B = 2 GB.

Sie könnten die Clustergröße auf unbestimmte Zeit erhöhen, indem Sie die Größe Ihrer On-Disk-Sektoren erhöhen, aber Sie bleiben auf die maximale Anzahl von Dateien beschränkt. Sie würden auch auf Probleme mit Software stoßen, die die Standardsektorgröße (512B) angenommen hat.

Zu dem Zeitpunkt, an dem physische Volumes mit ~ 2 GB verfügbar waren, waren Prozessoren und Betriebssysteme 32-Bit-Daten, sodass die Umstellung auf FAT32 eine sinnvolle Wahl war und erheblich mehr Dateien in kleinen Clustern zuließ

66
Caleth

Es gab im Laufe der Jahre tatsächlich mehrere Varianten von "FAT16" mit unterschiedlichen Grenzen, aber lassen Sie uns die Version betrachten, die von "compaq DOS 3.31" bis Windows 95 bestand.

FAT-Volumina sind in Cluster unterteilt. Jeder Cluster besteht aus einer Potenz von zwei Sektoren. Die Anzahl der Sektoren pro Cluster in FAT16 wird als 8-Bit-Nummer mit Vorzeichen gespeichert. Die maximal möglichen Sektoren pro Cluster betragen also 64.

Clusternummern wurden als vorzeichenloser 16-Bit-Wert gespeichert. Begrenzung 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 Byte. Multiplizieren Sie dies mit dem Limit für die Anzahl der oben genannten Sektoren und Sie erhalten Ihr 2GiB-Limit. Grundsätzlich kann ein Medium mit größeren Sektorgrößen ein größeres FAT16-Volumen unterstützen, aber ich glaube nicht, dass dies in der Praxis passiert ist.

Windows NT hat die Interpretation des Felds "Sektoren pro Cluster" in 8-Bit ohne Vorzeichen geändert. Dies ermöglichte eine 4GiB FAT16-Partition mit 512-Byte-Sektoren (und theoretisch größer auf Laufwerken mit größeren Sektoren). AIUI Windows 98 hat Unterstützung für das Lesen und Schreiben solcher Partitionen hinzugefügt, konnte diese jedoch nicht erstellen und die Festplatten-Dienstprogramme konnten sie nicht reparieren.


Es wäre sicherlich möglich gewesen, relativ geringfügige Ä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, auf einen 32-Bit-Clusterindex mit Windows 95 OSR2 umzusteigen, das FAT32 produziert.

Ich glaube, der Grund für die radikalere Option war die Raumeffizienz. Angesichts der damals typischen Dateigrößen waren 32-KB-Cluster bereits ziemlich verschwenderisch, und größere wären sogar so verschoben worden.

12
Peter Green