Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВМСиC / Жесткие диски и их интерфейсы.doc
Скачиваний:
72
Добавлен:
29.03.2015
Размер:
2.23 Mб
Скачать

Структура fat

Расположение файлов в кластерах определяется с помощью таблицы распределения файлов FAT. FAT - это связанный список, который обеспечивает возможность фрагментарного расположения файлов на диске (т.е. расположения файлов по частям в разных местах диска). Этот список используется файловой системой для определения последовательности кластеров, выделенных файлу или каталогу, а также для поиска свободного пространства, необходимого для записи новых файлов и каталогов. Число элементов этого списка равно числу кластеров области данных диска. Каждому кластеру из области данных соответствует свой элемент из таблицы FAT.

Иными словами FAT состоит из элементов, элементов в таблице ровно столько, сколько кластеров на диске, и кластеру с номером N соответствует элемент FAT с тем же номером N. Каждый из элементов FAT представляющий один кластер может содержать следующие коды (см. таблицу 8):

Таблица 8. Возможные значения элемента FAT

Код, содержащийся в элементе FAT

Описание

(0)000h

Доступный (пустой) кластер

(0)002h до (F)FEFh

Номер следующего кластера

(F)FF0h до (F)FF7h

Зарезервированный кластер

(используется NTFS)

(F)FF7h

Плохой кластер (BAD)

(F)FF8h до (F)FFFh

Конец цепочки (EOF)

Вернемся к задаче определения точного места на диске (номеров кластеров), где располагается файл. Если файл занимает более одного кластера, то все кластеры, занимаемые файлом, организуются в цепочку кластеров (cluster chain).

Для того чтобы прочитать файл целиком, необходимо найти его дескриптор в ката­логе и считать первый кластер, на который ссылается этот дескриптор – это будет начало файла. Далее следует прочитать соответствующий первому кластеру элемент FAT и определить, является ли он последним (соответствующий означает, что кластеру с номером N соответствует элемент из таблицы FAT тоже с номером N). Если прочитанный элемент FAT не содержит признака конца файла (EOF), то он показывает номер следующего кластера цепочки, который также должен быть считан. Снова проверяем очередной элемент FAT. Повторяем это до тех пор, пока очередь не дойдет до последнего кластера в цепочке.

Пример цепочки кластеров

Пусть некоторый каталог содержит дескриптор файла (обозначим его А.txt), в которой содержится ссылка на начальный кластер (кластер № 12) из цепочки кластеров, выделенных этому файлу.

На рисунке 6 обычным шрифтом обозначены номера элементов FAT (номера элементов FAT соответствуют номерам кластеров), а жирным шрифтом обозначены числовые значения, записанные в этих элементах.

Дескриптор файла A.txt

Фрагмент таблицы FAT

(разбит на элементы)

Фрагмент области данных (разбит на кластеры)

10

0

Пустой

11

0

Пустой

12

13

1-й кластер файла A.txt

13

14

2-й кластер файла A.txt

14

17

3-й кластер файла A.txt

15

16

1-й кластер другого файла

16

EOF

2-й (последний) кластер другого файла

17

18

4-й кластер файла A.txt

18

20

5-й кластер файла A.txt

19

BAD

Плохой кластер

20

21

6-й кластер файла A.txt

21

22

7-й кластер файла A.txt

22

23

8-й кластер файла A.txt

23

EOF

9-й (последний) кластер файла A.txt

24

0

Пустой

25

0

Пустой

26

0

Пустой

Рисунок 6 Пример цепочки кластеров для файла A.txt

Из приведенного на рисунке 6 фрагмента FAT следует:

Файл занимает цепочку из девяти кластеров: 12–13–14–17–18–20–21–22–23. Каждый элемент указывает на следующий элемент цепочки (содержит номер следующего кластера) - значение элемента № 13 равно 14, значение элемента 14 равно 17 и т.д. Последний элемент содержит специальный код EOF (FF8h) - конец файла.

Еще одна цепочка из двух кластеров начинается с кластера № 15 и кончается кластером № 16. Чтобы узнать, какому файлу (или каталогу) распределены эти кластеры, нужно отыскать в каком-либо каталоге диска дескриптор файла, содержащий ссылку на начальный кластер № 15.

Кластер № 19 помечен, как «плохой» (BAD - FF7) и не входит ни в одну из цепочек. При поиске свободных кластеров для записи нового файла этот кластер будет игнорироваться.

Кластеры № 10, 11, 24, 25, 26 пусты (точнее - объявлены таковыми). Они доступны для распределения под вновь записываемые файлы.

Каждая цепочка кластеров, выделенных системой для одного файла (подкаталога), упорядочена в порядке возрастания их номеров.