Максимальное количество секторов в кластере

Вопросы по программированию, не подходящие в другие разделы.

Модераторы: Naeel Maqsudov, C_O_D_E

Ответить
tobor
Сообщения: 3
Зарегистрирован: 12 ноя 2015, 18:16

12 ноя 2015, 18:30

В файловой системе установлен предел на количество секторов в одном кластере: 128.
Хотя для хранения этого значения отводится 1 байт адресного пространства.
Значит максимальное количество секторов в кластере должно быть 2^8-1=255 штук.
Откуда берётся такое ограничение?
Аватара пользователя
Сионист
Сообщения: 1077
Зарегистрирован: 31 мар 2014, 06:18

13 ноя 2015, 11:51

Вы когда нибудь видели кластер из трёх, или семи секторов? ИМХО выбрали максимальную целую степень двойки, значение которой влазит в один байт (любое большее значение или является суммой нескольких целых степеней двойки, или не лезет в байт, так как превышает 255).
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
tobor
Сообщения: 3
Зарегистрирован: 12 ноя 2015, 18:16

15 ноя 2015, 19:36

Спасибо за ответ.
На самом деле 128 - это 2^7.
А 2^8=256.
Но один байт, который используется для указания КОЛИЧЕСТВА секторов в одном кластере,
максимально позволит указать лишь число 255 (FFh).
Вот и разобрался.
Ещё раз спасибо.
tobor
Сообщения: 3
Зарегистрирован: 12 ноя 2015, 18:16

15 ноя 2015, 20:55

Сионист, а скажи, пожалуйста, откуда ограничение на максимальное количество кластеров в 65'525 штук? (Где-то я видел, что указывалось 65'524 штук. Не знаю, что правильней.)

Хочу привести здесь свои утверждения, чтобы определиться где я ошибаюсь.

1) Максимальный размер FAT-таблицы = 2^16-1=65'535 секторов=2'097'120 байт - 4 байт ("F8FF") = 2'097'116 байт = 1'048'558 записей о кластерах.
2) На одну запись о кластере в FAT-таблице "расходуется" 2 байта.
3) Каждая запись должна быть уникальной, поэтому не смотря на п.1, количество "двухбайтовых" вариантов равно 2^16=65'536.
4) Значит, максимально возможное количество записей = 65'536 - 1("0000", т.е. сектор №0) - 1("0100", т.е. сектор №1, т.к. нумерация секторов начинается с №2) = 65'534 записей.
5) Минимально возможный размер кластера, соответствующий основанию двойки - это 1 сектор (2^0), т.е. 512 байт.
6) Тогда 65'534 кластера = 33'553'408 байт, а это менее, чем 32 МБ.

Понимаю, что мои расчёты, по большей части, это полный бред, но откуда всё же ограничение на 65'525 кластеров? У меня получается, что можно "по-максимуму" использовать 65'534 кластера.
Аватара пользователя
Сионист
Сообщения: 1077
Зарегистрирован: 31 мар 2014, 06:18

17 ноя 2015, 07:48

tobor писал(а):Сионист, а скажи, пожалуйста, откуда ограничение на максимальное количество кластеров в 65'525 штук? (Где-то я видел, что указывалось 65'524 штук. Не знаю, что правильней.)

Хочу привести здесь свои утверждения, чтобы определиться где я ошибаюсь.

1) Максимальный размер FAT-таблицы = 2^16-1=65'535 секторов=2'097'120 байт - 4 байт ("F8FF") = 2'097'116 байт = 1'048'558 записей о кластерах.
Уже не правильно. Хорошо, пусть в 65535 секторов. По сколько байтов? По 32? Таких маленьких секторов НЯЗ не бывает. А если хотя бы по 256, то получаем 16776960 байт, а ни как не 2097120. При этом дальше в рассчёт заложен размер сектора уже 512 байт.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Сионист
Сообщения: 1077
Зарегистрирован: 31 мар 2014, 06:18

17 ноя 2015, 08:02

tobor писал(а):основанию двойки
Основание двойки не существует.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Ответить