Что ?имеется в виду, глядя на шестнадцатеричные числа для значений записи FAT для файловой системы FAT32? - PullRequest
0 голосов
/ 10 февраля 2019

Я пишу операционную систему, поэтому мне нужно реализовать файловую систему.Поэтому я выбрал FAT32.Я искал значения записи FAT и для значений он дал числа, такие как: 0x? 0000000.Так что мой вопрос в том, что делает?значит?

Я пытался найти ответ в Google, но он показывает только уроки по шестнадцатеричной системе, в которых нет ответа на мой вопрос

1 Ответ

0 голосов
/ 11 февраля 2019

Возможно, пришло время прочитать официальную спецификацию?

fatgen103.doc говорит:

Запись FAT32 FAT на самом деле является только 28-битной записью.Старшие 4 бита записи FAT32 FAT зарезервированы.Единственный момент, когда старшие 4 бита записей FAT32 FAT должны когда-либо изменяться, - это когда форматируется том, в это время вся 32-битная запись FAT должна быть обнулена, включая старшие 4 бита.

Здесь приведено немного больше объяснений, потому что этот пункт о записях FAT32 FAT, кажется, вызывает большую путаницу.В основном 32-битные записи FAT на самом деле не являются 32-битными значениями;это только 28-битные значения.Например, все эти 32-битные значения записи кластера: 0x10000000, 0xF0000000 и 0x00000000 все указывают на то, что кластер является БЕСПЛАТНЫМ, поскольку при чтении значения записи кластера вы игнорируете старшие 4 бита.Если значение 32-разрядного свободного кластера в настоящее время равно 0x30000000, и вы хотите пометить этот кластер как плохой, сохранив в нем значение 0x0FFFFFF7.Тогда 32-битная запись будет содержать значение 0x3FFFFFF7, когда вы закончите, потому что вы должны сохранить старшие 4 бита при записи в метку сбоя кластера 0x0FFFFFF7.

...