Какой максимальный размер файла в FAT?

Из того, что я понимаю, FAT32 использует 32-битное число для каждого файла, чтобы сохранить размер его файла (и, следовательно, FAT32 ограничен в файлах ~4 ГБ). В FAT каждый файл имеет запись корневого каталога, и именно эти записи хранят значение для размера файла. На этой странице показана структура записи каталога для FAT32. Этот ресурс предполагает, что FAT12 использует 25-битное значение для размера файла, а FAT16 - 31-битное значение.

Является ли информация на втором связанном ресурсе правильной? Если нет, то каков истинный максимальный размер файла для FAT12 и FAT16? Если это правда, то почему нерегулярное количество бит используется для хранения размера файла для этих файловых систем?

РЕДАКТИРОВАТЬ: Почему они ограничены размером тома, в то время как FAT32 имеет установленный размер? Это потому, что размер файла, который он хранит, превышает любой поддерживаемый размер тома, или FAT12 и FAT16 не используют размер файла в качестве поля в записи каталога?

2 ответа

Размер файла в FAT хранится в 32-битном поле.

В FAT32 это поле обрабатывается как неподписанное, что позволяет использовать файлы размером до 4294967294 байт (по-видимому, 4294967295 по какой-то причине недопустимо, возможно, где-то в качестве флага использовался "-1").

В FAT16 поле ограничено диапазоном 32-разрядного числа со знаком. Я ожидаю, что причиной этого является устаревший код, который был записан обратно, когда 2 ГБ считался бы безумным размером для файла. Файловые системы FAT16 за пределами 2 ГБ были странностью в любом случае *.

Для AIUI в FAT12 размер файла ограничен 32 МБ (не 32 КБ!) Не из-за каких-либо ограничений, характерных для размера файла, а просто потому, что это максимальный размер тома, и вы не можете иметь файл больше, чем том. То же самое относится и к ранним версиям FAT16.

* Версия FAT16, используемая в DOS 4 через windows 95, была ограничена 64 секторами на кластер, что в типичных секторах по 512 байт означало размер тома примерно 2 ГБ. NT удвоила максимальное число секторов на кластер, позволив ~4 ГБ томам с 512 байтовыми секторами, а 98 добавила поддержку чтения / записи, но не создавая и не восстанавливая такие волюмы. Большие объемы были бы теоретически возможны, если бы базовое устройство имело большие сектора, но я не видел никаких доказательств того, что это на самом деле произошло на практике.

Часть этого будет зависеть от размера кластера.

В то время как диск имеет (для большинства реализаций) секторы по 512 байт, сектора были сгруппированы в кластеры, чтобы обеспечить более крупные файлы с большей емкостью.

Для FAT12 максимальная емкость и размер файла составляли 16 МБ (с кластерами 4 КБ) и 32 МБ (с кластерами 8 КБ).

Для FAT16 начальная версия не изменила емкость, но по мере ее развития размер файла был разрешен до 2 ГБ, 4 ГБ и, наконец, ограничен объемом, с максимальными объемами от 2 ГБ до 16 ГБ, в зависимости от версии FAT16. это было реализовано операционной системой

Другие вопросы по тегам