Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дисковая сист.DOC
Скачиваний:
3
Добавлен:
16.11.2019
Размер:
2.68 Mб
Скачать

Формат fat.

Первый байт FAT (File Allocation Table – таблица размещения файлов) называется "Описатель среды" (Media Descriptor), или байт ID идентификации FAT. Он имеет такое же значение, как и байт-описатель среды media, находящийся в BOOT-секторе логического диска.

Следующие 5 байтов для 12-битового формата или 7 байтов для 16-битового формат всегда содержат значение 0ffh.

Остальная часть FAT состоит из 12-битовых, 16-битовых или 32-битовых ячеек, каждая ячейка соответствует одному кластеру диска. Эти ячейки могут содержать следующие значения:

FAT12

FAT16

Что означает

000h

0000h

Свободный кластер

FF0h - FF6h

FFF0h - FFF6h

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

FF7h

FFF7h

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

FF8h – FFFh

FFF8h - FFFFh

Последний кластер файла в списке

Цепочка FAT (красным – номера элементов FAT, синим – номера кластеров):

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

3

4

5

6

7

FF

9

10

11

15

13

14

21

16

17

18

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

19

20

FF

FF

PS. Номера первых кластеров (2, 8, 12), отведенных файлам, находятся в главном (корневом) каталоге диска или в подкаталогах (см. далее раздел «Файлы и каталоги»).

Непосредственный доступ к FAT может потребоваться для организации сканирования каталогов для поиска нужных файлов, для чтения каталогов как файлов, для организации защиты информации от несанкционированного копирования.

Общая схема использования FAT такая:

  • Читаем FAT целиком в память. Обычно FAT располагается сразу после BOOT-сектора (логический сектор с номером 1). Для точного определения начального сектора FAT следует прочитать в память BOOT-сектор и проанализировать содержимое блока параметров BIOS. В поле ressecs записано количество зарезервированных секторов, которые располагаются перед FAT. Поле fatsize содержит размер FAT в секторах. Кроме того, следует учитывать, что на диске может находиться несколько копий FAT. Операционная система использует только первую копию, остальные нужны для утилит восстановления содержимого диска, таких как CHKDSK. Количество копий FAT находится в поле fatcnt BOOT-сектора.

  • Из каталога узнаем номер первого кластера файла, для которого необходимо определить его расположение на диске.

  • Используем номер первого кластера как индекс в FAT для извлечения номера следующего кластера.

  • Повторяем предыдущую процедуру до тех пор, пока извлеченное из FAT значение не будет соответствовать концу файла (FFFFh).