Том с файловой системой FAT имеет следующую структуру (рис. 8.26):
Рис. 8.26.
Запись каталога для каждого файла содержит набор свойств, или атрибутов, описывающих файл на томе. Перечислим наиболее важные атрибуты:
· полное имя файла;
· имя файла в формате "8.3" (8 символов для имени и 3 — для расширения, или типа, файла) для совместимости с системой MS-DOS;
· атрибуты "скрытый" (hidden), "системный" (system), "только для чтения" (read-only), "готовый к архивированию" (archive);
· номер начального кластера в цепочке кластеров, образующих файл.
Полный список кластеров, занимаемых файлом на диске, содержится в таблице размещения файлов (File Allocation Table, сокращенно FAT). От названия этой таблицы произошло и название самой файловой системы. На диске хранятся две идентичные копии FAT (на случай защиты от сбоя).
Каждый элемент таблицы FAT может иметь следующие значения:
· номер следующего кластера, занимаемого файлом;
· указание, что данный кластер — последний кластер файла (комбинация шестнадцатиричных цифр 0xFFFF);
|
|
· указание, что кластер свободен, т.е. не использован ни одним файлом (0x0000);
· указание, что кластер содержит один или несколько секторов с физическими дефектами и не должен использоваться.
На рис. 8.27 приведен пример фрагмента каталога для нескольких файлов с указанием первого кластера данного файла:
Рис. 8.27.
На рис. 8.28 приведен фрагмент таблицы FAT для перечисленных в данном каталоге файлов:
Рис. 8.28.
Наиболее существенное отличие версий FAT16 и FAT32 состоит в том, что в FAT16 указатель на номер кластера занимает 16 бит, а в FAT32 — 32 бита. Максимальный размер кластера файловых систем FAT в системах Windows 2000/XP/2003 — 64 килобайта. Отсюда можно вычислить, что максимальный размер тома с файловой системой FAT16 — 4 гигабайта. Максимальный размер тома с FAT32 теоретически — 8 терабайт, но на практике он ограничен размером 32 гигабайта (хотя Windows 2000/XP/2003 поддерживают тома большего размера, созданные в других ОС, например, в Windows 95 SR2 или Windows 98).
В табл. 8.1 приведены сведения о соответствии размера тома и размера кластера на данном томе для FAT16 и FAT32:
Таблица 8.1. | ||
Размер тома | Размер кластера для FAT16 | Размер кластера для FAT32 |
До 32 Мбайт включительно | 512 байт (1 сектор) | Не поддерживается |
33–64 МБ | 1 КБ (2 сектора) | 512 байт (1 сектор) |
65–128 МБ | 2 КБ (4 сектора) | 1 КБ (2 сектора) |
129–256 МБ | 4 КБ (8 секторов) | 2 КБ (4 сектора) |
257–512 МБ | 8 КБ (16 секторов) | 4 КБ (8 секторов) |
513 МБ–1 ГБ | 16 КБ (32 сектора) | 4 КБ (8 секторов) |
1 ГБ–2 ГБ | 32 КБ (64 сектора) | 4 КБ (8 секторов) |
2 ГБ–4 ГБ | 64 КБ (128 секторов) | 4 КБ (8 секторов) |
4 ГБ–8 ГБ | Не поддерживается | 4 КБ (8 секторов) |
8 ГБ–16 ГБ | Не поддерживается | 8 КБ (16 секторов) |
16 ГБ–32 ГБ | Не поддерживается | 16 КБ (32 сектора) |
Заметим, что каждый файл занимает целое число кластеров. Это означает, что последний кластер заполнен не целиком (в среднем — наполовину). Это второй вид фрагментации — потеря дискового пространства по причине неполного заполнения последнего кластера файла, причем, чем больше размер раздела и, соответственно, размер кластера, тем больше потери дискового пространства из-за данного вида фрагментации. Файловая система FAT32 с более медленным ростом размера кластера в зависимости от размера тома более эффективно расходует пространство на диске.
|
|
Когда какое-либо приложение отправляет запрос к операционной системе с запросом на открытие файла, ОС сначала последовательно просматривает записи каталога, пока не найдет запись для нужного файла, затем в найденной записи извлекает адрес первого кластера этого файла. После этого ОС обращается к элементу FAT для данного кластера, чтобы найти следующий кластер в цепочке. Повторяя этот процесс, пока не обнаружит последний кластер файла, ОС точно определяет, какие кластеры принадлежат данному файлу и в какой последовательности. Таким путем система может предоставить программе любую часть запрашиваемого ею файла.