Почему максимальный размер файла тома, отформатированного в FAT32, составляет 4 ГБ в ОС Windows?

390
Gilles

Размер таблицы размещения файлов (FAT) зависит от количества кластеров, используемой версии и размера используемого тома. Например, том с размером 8 ГБ и отформатированный как FAT32 с кластером размером 4096 байт будет иметь 2 ^ 21 кластеров. Теперь размер FAT будет number of clusters * address size of a cluster. Размер адреса каждого кластера - это количество бит, необходимое для хранения адреса. Теперь, поскольку это FAT32, это будет 32 бита . Таким образом, размер FAT будет2^21 * 4(in bytes)= 2^23 bytes . Максимальное количество адресов кластера в FAT будет 2 ^ 28, так как 4 бита используются для специальных целей.

Файл 4 ГБ будет охватывать более 2 ^ 20 кластеров. Общее количество доступных кластеров составляет 2 ^ 21. Теперь, если мы увидим какой-либо файл (размер 4 ГБ), первый номер кластера, с которого начинаются данные файла, будет доступен в корневом каталоге, если этот файл находится в корневом каталоге. Кроме того, другие таблицы, связанные с первым кластером (где находится файл), могут быть получены из таблицы размещения файлов (FAT). Так в чем же проблема, у нас есть 2 ^ 21 кластеров и 2 ^ 20 кластеров требуются для файла размером 4 ГБ. Это должно быть в состоянии сохранить это. Почему бы и нет?

Приведенная выше информация основана на том, что я знаю.

-1
Ваш вопрос не о CS. Тем не менее, ответ заключается в том, что FAT32 хранит точное число байтов для каждого файла явно в 32-битном поле. 5 лет назад 0
Чтобы расширить комментарий @ DmitriUrbanowicz, мы обычно рассматриваем вопросы о внедрении конкретных систем как не относящиеся к теме. С вопросами об общих принципах работы файловых систем все в порядке, но вот один из них: «Почему это конкретное семейство операционных систем реализовано именно таким образом?» David Richerby 5 лет назад 0

1 ответ на вопрос

1
jakub_d

Скорее всего, потому что каждый файл определяется своей записью в каталоге, которая имеет 32-битное значение «размер файла в байтах», см. Https://en.wikipedia.org/wiki/Design_of_the_FAT_file_system#Directory_entry

Я полагаю, что технически вы можете создать файл с большим количеством данных, но у вас будет неправильно сформированная файловая система, и ее поведение не определено.