Warum beträgt die maximale Dateigröße eines FAT32-formatierten Volumes 4 GB unter Windows?

466
Gilles

Die Größe der File Allocation Table (FAT) hängt von der Anzahl der Cluster, der verwendeten Version und der Größe des verwendeten Datenträgers ab. Ein Volume mit der Größe 8 GB, das als FAT32 mit einem Cluster von 4096 Byte formatiert ist, hätte beispielsweise 2 ^ 21 Cluster. Nun wäre die Größe von FAT number of clusters * address size of a cluster. Die Adressgröße jedes Clusters ist die Anzahl von Bits, die zum Speichern der Adresse erforderlich ist. Nun, da es FAT32 ist, wären es 32Bits . Also die Größe der FAT wäre 2^21 * 4(in bytes)= 2^23 bytes. Die maximale Anzahl der Clusteradressen in einer FAT wäre 2 ^ 28, da 4 Bits für spezielle Zwecke verwendet werden.

Eine Datei mit 4 GB würde sich über 2 ^ 20 Cluster erstrecken. Insgesamt verfügbare Cluster sind 2 ^ 21 Wenn nun eine Datei (Größe ist 4 GB) angezeigt wird, wäre die erste Clusternummer, bei der die Daten der Datei gestartet werden, im Stammverzeichnis verfügbar, wenn sich diese Datei im Stammverzeichnis befindet. Weitere weitere Cluster, die mit dem ersten Cluster (in dem sich die Datei befindet) verknüpft sind, können über die File Allocation Table (FAT) abgerufen werden. Was also das Problem ist, wir haben 2 ^ 21-Cluster und 2 ^ 20-Cluster sind für die Datei der Größe 4 GB erforderlich. Es sollte in der Lage sein, es zu speichern. Warum nicht?

Die obigen Informationen basieren auf dem, was ich weiß.

-1
Ihre Frage bezieht sich nicht auf CS. Die Antwort ist jedoch, dass FAT32 die exakte Anzahl von Bytes für jede Datei explizit in einem 32-Bit-Feld speichert. vor 5 Jahren 0
Um den Kommentar von @ DmitriUrbanowicz zu erläutern, betrachten wir Fragen zur Implementierung bestimmter Systeme normalerweise als Off-Topic. Fragen zu den allgemeinen Prinzipien von Dateisystemen sind in Ordnung, aber dies ist sehr viel "Warum wird diese spezifische Familie von Betriebssystemen auf diese bestimmte Weise implementiert?" David Richerby vor 5 Jahren 0

1 Antwort auf die Frage

1
jakub_d

Wahrscheinlich, weil jede Datei durch ihren Verzeichniseintrag definiert ist, der einen 32-Bit-Wert "Dateigröße in Bytes" hat, siehe: https://en.wikipedia.org/wiki/Design_of_the_FAT_file_system #Directory_entry

Ich denke, Sie können technisch eine Datei mit mehr Daten darin erstellen, aber Sie haben ein fehlerhaftes Dateisystem und dessen Verhalten ist undefiniert.