Логический диск с системой FAT состоит из системной области и области файлов. Каждая часть логического диска занимает целое число логических секторов.
Секторы области файлов объединены в кластеры, размер кластера 1, 2, 4, 8, 16, 32 или 64 сектора по 512 байт. Номер первого кластера равен 2, так как первые две ячейки FAT зарезервированы (содержат байт-описатель).
На рисунке приведена структура логического диска для файловой системы FAT12:
Сектор 0, называемый также начальным загрузчиком, содержит таблицу параметров диска и начальный загрузчик операционной системы. Первые 3 байта сектора 0 содержат команду перехода JMP на начало загрузчика: либо байт 0E9h и 1 байт короткого смещения, за которым следует команда NOP (код 90h), либо байт 0EBh и два байта длинного смещения. Длинное смещение используется, если загрузчик располагается в зарезервированных секторах.
Далее расположено поле из 8 бит, в которое при форматировании заносится идентификатор версии ОС. Это текстовая строка, имеющая значение MSWIN4.1 для ОС Windows.
|
|
Далее располагается таблица BPB (BIOS parameter block), описывающая физические характеристики диска и позволяющая вычислить правильный физический адрес на диске по данному номеру логического сектора. За таблицей располагаются дополнительные данные.
За сектором 0 могут быть расположены дополнительные зарезервированные (для загрузчика) секторы. Общее число зарезервированных секторов, включая сектор 0, указывается в BPB.
Таблица BPB для FAT12 содержит следующие характеристики диска:
Смещение в секторе | Размер | Содержание |
0Bh | Число байтов в секторе (всегда 512) | |
0Dh | Число секторов в кластере | |
0Eh | Размер системной области (включая этот сектор) | |
10h | Число таблиц FAT (чаще всего 2) | |
11h | Число описателей файлов в корневом каталоге (в FAT32 - 0) | |
13h | Общее число секторов на диске (если 0, то размер - в поле со смещением 20h) | |
15h | Тип устройства | |
16h | Размер одной FAT в секторах (0 в FAT32) | |
18h | Число секторов на дорожке | |
1Ah | Число головок | |
1Ch | Абсолютный номер этого сектора | |
20h | Размер диска в секторах |
За таблицей BPB расположена дополнительная информация для операционной системы:
Смещение | Размер | Содержимое |
24h | Номер дисковода для функций BIOS | |
25h | Зарезервировано | |
26h | Сигнатура - 29h | |
27h | Дата/время создания диска | |
2Bh | Метка диска - текстовая строка | |
36h | Аббревиатура файловой системы |
Физический номер диска для жестких дисков начинается с 80h.
Серийный номер тома - это шестнадцатеричное псевдослучайное число, предназначенное для того, чтобы ОС могла проверять смену пользователем дискета, когда он еще используется, но на самом деле такой проверки не делается.
|
|
Метка тома - это строка, предназначенная для идентификации тома пользователем.
Описатель FAT нельзя рассматривать как идентификатор файловой системы.
Далее с адреса 03Eh расположен начальный загрузчик.
Последние два байта сектора 0 содержат признак загрузочной записи - байт 55h по адресу 1FEh и байт AAh по адресу 1FFh (его можно рассматривать как слово AA55h по адресу 1FEh).
За зарезервированными секторами (или непосредственно за сектором 0) располагается таблица размещения файлов (на рисунке FAT-1), после которой могут располагаться дополнительные копии FAT. Обычно используется 2 копии. Число копий указано в BPB.
Все файлы и папки содержатся в кластерах. Папка – это тот же файл, в котором установлен атрибут каталога и содержатся ссылки на файлы и другие папки, “содержащиеся” в нём. В элементе FAT, соответствующем кластеру файла, содержится номер следующего кластера файла, или специальное значение, сигнализирующее, что файл закончен. Таким образом, для чтения всего файла нужно знать только номер его первого кластера, который и находится в описателе файла в папке, содержащей его. Мы читаем первый кластер, затем смотрим в таблице FAT номер следующего кластера, считываем его, и так далее, пока не встретим значение “конец файла” (равно –1 в системах Microsoft).
Номер элемента FAT | |||||||
Содержимое элемента | -1 | ||||||
Свободный кластер | Начало файла | Последний кластер файла |
На рисунке показан фрагмент таблицы FAT, в котором показано расположение файла с первым кластером 22. Для простоты, файл находится в смежных кластерах. При запросе на чтение файла ОС найдёт в папке ссылку на этот файл и прочитает кластеры с 22 по 25.
В конце системной области расположен корневой каталог, который имеет фиксированный размер. Размер корневого каталога в каталожных записях также указан в таблице BPB.
Поскольку загрузочная запись слишком мала для хранения алгоритма поиска системных файлов на диске, то системные файлы должны находиться в определенном месте, чтобы загрузочная запись могла их найти. Фиксированное положение системных файлов в начале области данных накладывает жесткое ограничение на размеры корневого каталога и таблицы размещения файлов. Вследствие этого общее число файлов и подкаталогов в корневом каталоге на диске FAT ограничено 512.
Каждому файлу и подкаталогу в FAT соответствует 32-байтный элемент каталога (directory entry), содержащий имя файла, его атрибуты (архивный, скрытый, системный и “только для чтения”), дату и время создания (или внесения в него последних изменений), а также прочую информацию (табл. 3).
Содержание | Размер (байт) |
Имя файла | |
Расширение | |
Байт атрибутов | |
Зарезервировано | |
Время | |
Дата | |
Номер начального кластера с данными | |
Размер файла |
Табл. 3. Элемент каталога
Файловая система FAT всегда заполняет свободное место на диске последовательно от начала к концу. При создании нового файла или увеличении уже существующего она ищет самый первый свободный кластер в таблице размещения файлов. Если в процессе работы одни файлы были удалены, а другие изменились в размере, то появляющиеся в результате пустые кластеры будут рассеяны по диску. Если кластеры, содержащие данные файла, расположены не подряд, то файл оказывается фрагментированным. Сильно фрагментированные файлы значительно снижают эффективность работы, так как головки чтения/записи при поиске очередной записи файла должны будут перемещаться от одной области диска к другой. В состав операционных систем, поддерживающих FAT, обычно входят специальные утилиты дефрагментации диска, предназначенные повысить производительность файловых операций.
|
|