Почему диски FAT32 ограничены 4 ГБ файлами? - PullRequest
16 голосов
/ 11 января 2011

Я не ищу обходной путь; Я хотел бы объяснения. Большинство ссылок, которые я нашел через Google, просто говорят мне, что ограничение файла составляет 4 ГБ, но не почему.

Мне известно объяснение Википедии: http://en.wikipedia.org/wiki/File_Allocation_Table#FAT32

Но это все еще не дает подробного объяснения, почему. (При чем тут SCANDISK?)

Может быть, тогда я пойму, можно ли преодолеть ограничение размера файла 4 ГБ.

Ответы [ 3 ]

25 голосов
/ 11 января 2011

Поскольку FAT32 хранит 32-битные размеры файлов, а максимальный размер, который вы можете хранить в 32-битных файлах, равен 2 ^ 32-1 ~ = 4.29e9.2 ^ 32-1 байт = 4 ГБ - 1 байт.

(На самом деле это объясняется в статье в Википедии.)

8 голосов
/ 12 января 2011

Чтобы расширить этот ответ, FAT32 получен из FAT16 и FAT12. Когда была представлена ​​FAT12, ПК работали с 16-битной ОС, и там не было дисков размером более десяти мегабайт. Я не думаю, что кто-то ожидал, что кому-то на ПК когда-нибудь понадобится файл, который будет в четыреста раз больше самого большого доступного диска. Более того, даже если бы Microsoft предусмотрительно выделила дополнительный байт для каждой записи каталога для хранения битов 32-39 размера файла (разрешая файлы размером до одного терабайта каждый), сомнительно, что любые прикладные программисты использовали бы его. Ни один из языков не обеспечивал удобную поддержку целочисленной математики больше 32 бит; даже 32-битные математики считались довольно причудливыми.

Более серьезный вопрос, который у меня возникает, заключается в том, почему я не подозреваю о каких-либо попытках перейти к стандартному интерфейсу хранения не FAT32, который не основан на последовательно пронумерованных секторах. И флэш-накопители, и жесткие диски могут извлечь пользу из знания логической значимости записи различных секторов (в случае флэш-памяти, поскольку это устранит необходимость копирования удаленных секторов при выполнении управления износом; в случае жестких дисков, поскольку это позволит записи должны быть упорядочены таким образом, чтобы это не нарушало требования согласованности данных).

0 голосов
/ 15 февраля 2015

У меня такое же сомнение, и я наконец понял, что каждый файл имеет свои собственные метаданные, содержащие 4 байта для размера файла.Таким образом, максимальный размер файла составляет 4G - 1 байт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...