вопросы. общие вопросы. Программа ипрограммирование
Скачать 1.45 Mb.
|
Файловая структура FAT32Устройства внешней памяти в системе FAT32 имеют не байтовую, а блочную адресацию. Запись информации в устройство внешней памяти осуществляется блоками или секторами. Сектор – минимальная адресуемая единица хранения информации на внешних запоминающих устройствах. Как правило, размер сектора фиксирован и составляет 512 байт. Для увеличения адресного пространства устройств внешней памяти сектора объединяют в группы, называемые кластерами. Кластер – объединение нескольких секторов, которое может рассматриваться как самостоятельная единица, обладающая определёнными свойствами. Основным свойством кластера является его размер, измеряемый в количестве секторов или количестве байт. Файловая система FAT32 имеет следующую структуру. Нумерация кластеров, используемых для записи файлов, ведется с 2. Как правило, кластер №2 используется корневым каталогом, а начиная с кластера №3 хранится массив данных. Сектора, используемые для хранения информации, представленной выше корневого каталога, в кластеры не объединяются. Минимальный размер файла, занимаемый на диске, соответствует 1 кластеру. Загрузочный сектор начинается следующей информацией: EB 58 90 – безусловный переход и сигнатура; 4D 53 44 4F 53 35 2E 30 MSDOS5.0; 00 02 – количество байт в секторе (обычно 512); 1 байт – количество секторов в кластере; 2 байта – количество резервных секторов. Кроме того, загрузочный сектор содержит следующую важную информацию: 0x10 (1 байт) – количество таблиц FAT (обычно 2); 0x20 (4 байта) – количество секторов на диске; 0x2С (4 байта) – номер кластера корневого каталога; 0x47 (11 байт) – метка тома; 0x1FE (2 байта) – сигнатура загрузочного сектора (55 AA). Сектор информации файловой системы содержит: 0x00 (4 байта) – сигнатура (52 52 61 41); 0x1E4 (4 байта) – сигнатура (72 72 41 61); 0x1E8 (4 байта) – количество свободных кластеров, -1 если не известно; 0x1EС (4 байта) – номер последнего записанного кластера; 0x1FE (2 байта) – сигнатура (55 AA). Таблица FAT содержит информацию о состоянии каждого кластера на диске. Младшие 2 байт таблицы FAT хранят F8 FF FF 0F FF FF FF FF (что соответствует состоянию кластеров 0 и 1, физически отсутствующих). Далее состояние каждого кластера содержит номер кластера, в котором продолжается текущий файл или следующую информацию: 00 00 00 00 – кластер свободен; FF FF FF 0F – конец текущего файла. Корневой каталог содержит набор 32-битных записей информации о каждом файле, содержащих следующую информацию: 8 байт – имя файла; 3 байта – расширение файла; Корневой каталог содержит набор 32-битных записей информации о каждом файле, содержащих следующую информацию: 8 байт – имя файла; 3 байта – расширение файла; 1 байт – атрибут файла: 1 байт – зарезервирован; 1 байт – время создания (миллисекунды) (число от 0 до 199); 2 байта – время создания (с точностью до 2с): 2 байта – дата создания: 2 байта – дата последнего доступа; 2 байта – старшие 2 байта начального кластера; 2 байта – время последней модификации; 2 байта – дата последней модификации; 2 байта – младшие 2 байта начального кластера; 4 байта – размер файла (в байтах). В случае работы с длинными именами файлов (включая русские имена) кодировка имени файла производится в системе кодировки UTF-16. При этого для кодирования каждого символа отводится 2 байта. При этом имя файла записывается в виде следующей структуры: 1 байт последовательности; 10 байт содержат младшие 5 символов имени файла; 1 байт атрибут; 1 байт резервный; 1 байт – контрольная сумма имени DOS; 12 байт содержат младшие 3 символа имени файла; 2 байта – номер первого кластера; остальные символы длинного имени. Далее следует запись, включающая имя файла в формате 8.3 в обычном формате. |