Змінюй хід війни! Допомагай ЗСУ!

Почему в файловой системе FAT32 ограничение на размер файла 4 Gb?

  • Автор теми Автор теми hamzie
  • Дата створення Дата створення

hamzie

Привіт!
Статус: Офлайн
Реєстрація: 27.07.2005
Повідом.: 13
Почему в файловой системе FAT32 ограничение на размер файла 4 Gb???

Почему в файловой системе FAT32 ограничение на размер файла 4 Gb???
Собственно, вопрос мучает уже почти как 2 месяца? Никак не могу найти ответ, про FAT16 и её ограничение понятно, разрядность пространства имен просто не позволяет, 2 в 16 - 65535 кластеров максимум, 128 секторов в кластере, 512 байт максимальный размер, арифметика такая. А вот про ФАТ32 не ясно, кто знает?

Ответ желательно услышать примерно так как сказал про фат16, а не просто:"... потому что микрософт так придумал.."
 
Нужен более точный ответ, то что 2 в 32 - это 4 гб это хорошо, тогда объяснить почему в ФАТ16 - 2 в 16 - 65536 и играничение 2 гб? Не подходит такой ответ, т.к это не точное объяснение. Вообще 2 в 32 это никак не байт, это максимальное кол-во кластеров которое эта файловая система может адресовать, кластер весит гараздо больше чем 1 байт. НЕ верьте всему что пишут в википедии.

PS. Прошу, не нужно думать что я северный олень и не искал в гугле, не нашел я точной информации, вся проблема там идет в пространстве имен, в длине имен файлов, в размере и кол-ве кластеров и в разрядности пространства имён. Но ответ я решить задачку эту я почему-то до конца не могу, как не объяснял, ответ не принимали.
 
Нужен более точный ответ, то что 2 в 32 - это 4 гб это хорошо, тогда объяснить почему в ФАТ16 - 2 в 16 - 65536 и играничение 2 гб? Не подходит такой ответ, т.к это не точное объяснение.

число в названии файловой системы FAT означает разрядность таблицы размещения файлов.

Как работает FAT - вначале система ищет нужный файл в разделе с каталогом диска, в каталоге указывается имя файла, его параметры и аттрибуты (включая размер в байтах) и номер начального кластера. Далее система считывает начальный кластер и берет номер следующего кластера из таблицы размещения файлов. Эта таблица и называется FAT, каждый элемент таблицы соответствует кластеру. Значение элемента таблицы FAT - это номер следующего кластера, либо терминатор

ограничение размера файла задается совокупностью - ограничением поля в каталоге и ограничением таблицы размещения файлов.
 
Верно, я так и сказал. Вы следующее предложение прочитайте. Видимо нужно сказать что 4 гб и 2 в 32 это совпадение что одинаковые числа получаются.

Ну, это как работает, как это связано с ограничением на размер файла? Мысль закончите свою?
 
Верно, я так и сказал. Вы следующее предложение прочитайте. Видимо нужно сказать что 4 гб и 2 в 32 это совпадение что одинаковые числа получаются.

Ну, это как работает, как это связано с ограничением на размер файла? Мысль закончите свою?

ограничение размера файла задается разрядностью поля в каталоге диска, задающего размер файла. В FAT системах это поле имеет разрядность 32 бита. Соответственно файл может иметь размер не более 4 ГБ. Но кроме этого максимальный размер файла ограничивается также размерами таблицы FAT.

Например в FAT12 общее число кластеров = 2 ^ 12 = 4096. Учитывая что кластер обычно содержит 2 сектора. А сектор обычно содержит 512 байт. Получаем ограничение - файловая система не может содержать файлы общим объемом более чем 4096 * 2 * 512 = 4194304 байт (4 мегабайта).
Таким образом, несмотря на то что в элементе каталога можно задавать размер файла размером до 4 ГБ, физически файловая система может содержать общий объем данных не превышающий 4 мегабайта.

Несложно подсчитать что FAT16 будет иметь ограничение на общий объем файлов - не более 67 мегабайт. Но это при условии что кластер содержит 2 сектора. А сектор имеет длину 512 байт. А эти параметры тоже могут меняться. И обычно на дисках большого объема они в несколько раз больше.
 
Несложно подсчитать что FAT16 будет иметь ограничение на общий объем файлов - не более 67 мегабайт. Но это при условии что кластер содержит 2 сектора. А сектор имеет длину 512 байт. А эти параметры тоже могут меняться. И обычно на дисках большого объема они в несколько раз больше.

Логически правильно, вот только в FAT16 в кластере - 64секторов, и ФАТ16 поддерживает 2 ГБ и это признанный факт. Просто смотрите, максимальный размер файла в ФАТ16 считается легко:
65535*64*512 - 2 Гб.
где 65535 - кол-во кластеров да именно так потому как на самом деле
2 ^ 16-1 , ибо считать нужно от 0.
64 - кол-во секторов в кластере
512 - байт в секторе

Почему все таки в ФАТ32 4 гб... ведь пространство имен там гараздо больше, может быть больше кластеров адресовано... арифметика как-то не выходит =(((

На самом деле ни одна цифра не берется тут непонятно откуда. Тут везде игра вокруг двоичной системы идет. Максимально возможных значений, кол-ва секторов, кластеров, их размера и прочее. Но не могу я связать все цифры и понять почему именно 4 гб...
 
Ээээ и что это?



Имеете ввиду 4 байта отведенные под размер файла? Видимо да, 4 байта - 2 в 32, ну и там как раз 4 Гб выходит... спасибо за наводку, хоть и зашифрованую =)

Будем надеяться что это действительно так =)
 
Останнє редагування:
а это столь важно?
 
Наводящий вопрос - максимальный размер кластера для FAT32 какой ?
 
Наводящий вопрос - максимальный размер кластера для FAT32 какой ?

32 Кб, только тут это к делу никакого отношения не имеет, фат32 способен адресовать гараздо большее кол-во кластеров, а именно 2^32, поэтому размер самого кластера тут в ограничение роли не играет, это больше играет на максимально возможный размер тома.
 
32 Кб, только тут это к делу никакого отношения не имеет, фат32 способен адресовать гараздо большее кол-во кластеров, а именно 2^32, поэтому размер самого кластера тут в ограничение роли не играет, это больше играет на максимально возможный размер тома.

как раз имеет.
 
Имеет, но в данном случае является не определяющим фактором, потому как по умолчанию 32кб, рассматривать другие случаи это уже частный случай. Это из за кол-ва памяти которое выделено под размер файла в бут директори, уже выяснил =)
 
Имеет, но в данном случае является не определяющим фактором, потому как по умолчанию 32кб, рассматривать другие случаи это уже частный случай. Это из за кол-ва памяти которое выделено под размер файла в бут директори, уже выяснил =)

Пруф ?
 
A directory table is a special type of file that represents a directory (also known as a folder). Each file or directory stored within it is represented by a 32-byte entry in the table. Each entry records the name, extension, attributes (archive, directory, hidden, read-only, system and volume), the date and time of creation, the address of the first cluster of the file/directory's data and finally the size of the file/directory. Aside from the Root Directory Table in FAT12 and FAT16 file systems, which occupies the special Root Directory Region location, all Directory Tables are stored in the Data Region. The actual number of entries in a directory stored in the Data Region can grow by adding another cluster to the chain in the FAT.

Потом смотрим в табличку которая показывает сколько байт выделено под всё:
0x1c 4 File size in bytes. Entries with the Volume Label or Subdirectory flag set should have a size of 0.

пруф линк: https://en.wikipedia.org/wiki/File_Allocation_Table
 
Ну, когда хочешь найти ответ на вопрос - да, важно =)

ожидать следующей темы почему вода голубая, зеленая или белая; почему небо синее; почему солнце встает на западе а содиться на востоке; и самый главный вопрос почему же винда такая дырявая?
 
А вы сходу ответите почему? Очень сомневаюсь. Ответ на вопрос потому что так, это не ответ или же ответ недалекого человека. Я всегда любую тему пытаюсь понять досконально, если вам это не нужно - это ваш выбор, если вы думаете, что вы показали свою грамотность - совсем нет, наоборот - узкость взглядов. Вообщем тема закрыта, т.к ответ нашелся.
 
Назад
Зверху Знизу