На этом шаге мы рассмотрим содержание и использование таблицы FAT.
Назначение таблицы распределения файлов (FAT - File Allocation Table) - распределение дискового пространства для файлов. При создании нового файла или изменении существующего, DOS меняет элементы этой таблицы в соответствии с расположением файла на диске. Первый байт FAT определяет тип устройства:
Начиная с четвертого байта, элементы FAT определяют кластеры. Каждый элемент таблицы FAT имеет длину 12 бит (для винчестера элементы FAT могут иметь длину 16 бит). Два первых элемента FAT, известные как относительные секторы 000 и 001, соответственно, указывают на два последних сектора оглавления, определяя его размер и формат. Первый файл данных начинается на относительном секторе 002. Каждый элемент FAT состоит из трех шестнадцатеричных цифр (12 бит), которые указывают на характер использования конкретного кластера. Их возможные значения перечислены в таблице 1.
Значение | Назначение |
---|---|
000 | Свободный кластер. |
nnn (число) | Относительный номер следующего кластера для файла. |
FF7H | Неиспользуемый ("сбойный") кластер. |
FFFH | Последний кластер файла. |
Рассмотрим, как используется таблица FAT для загрузки файла.
Пусть, например, дискета содержит только один файл с именем PROBA.ASM, занимающий элементы таблицы FAT с номерами 2, 3 и 4. Элемент оглавления для этого файла содержит имя файла PROBA, тип - ASM, атрибут файла - 00H (обычный файл), дату создания, 002 - номер первого кластера файла и размер файла в байтах. Таблица FAT в этом случае может выглядеть следующим образом:
Рис.1. Содержимое таблицы FAT
Для размещения содержимого рассматриваемого файла в памяти, система выполняет следующие действия:
Изменим содержимое нашей дискеты. Запишем на нее еще один файл с именем PROBA1.ASM, который занимает два кластера. Затем загрузим в память файл PROBA.ASM, дополним его и запишем его на диск под тем же самым именем.
Таблица FAT после выполнения этих операций может принять следующий вид:
Рис.2. Содержимое таблицы FAT после изменения содержимого диска
Порядок загрузки в память файла PROBA.ASM будет аналогичен описанному выше, только когда DOS дойдет до четвертого элемента таблицы FAT и загрузит содержимое четвертого кластера в буфер основной памяти, то будет осуществлен переход к седьмому элементу таблицы FAT и загружен в буфер седьмой кластер файла.
Кластеры с номерами 5 и 6 занимает содержимое файла PROBA1.ASM. Отметим, что, например, после удаления файла PROBA1.ASM таблица FAT примет следующий вид:
Рис.3. Содержимое таблицы FAT после удаления файла PROBA1.ASM
Значения 000 в кластерах с номерами 5 и 6 говорят о том, что эти кластеры "свободны", то есть они могут использоваться при размещении на диске других файлов.
Таким образом, элемент каталога содержит номер начального кластера для каждого файла, а FAT - шестнадцатеричные трехзначные элементы, указывающие на расположение каждого дополнительного кластера, если он имеется. Для того чтобы указать, например, что файл содержит все записи только в первом кластере, таблица FAT должна содержать FFFH в элементе, представляющем первый кластер.
Для работы с оглавлением диска и таблицей FAT имеются специальные программы, например DISKEDIT.EXE из пакета Norton Utilites.
Как было ранее сказано, все файлы начинаются на границе кластеpа. Кроме того, совсем не обязательно файл должен храниться в соседних кластерах (как показано в последнем примере), он может быть разбросан на диске по разным секторам. В этом случае говорят, что диск дефрагментирован. Дефрагментация замедляет доступ к файлам, быстрее изнашивает поверхность диска. Для ее устранения используются специальные программы, в частности, SPEEDISK.EXE.
Со следующего шага мы начнем рассматривать работу с файлами.