файла
...
Номер первого кластера, распределенного файлу
autoexec.bat
...
11
config.sys
...
12
...
...
...
FAT - таблица
... | 17 | 13 | FFFF | 00 | 00 | 00 | 18 | FFFF | 00 | ..... |
кластер | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
Рис 1. Пример распределения кластеров для файлов autoexec.bat b config.sys
FAT - таблица может иметь 12- или 16-битовый формат. При этом в таблице для хранения информации об одном кластере диска используется соответственно 12 или 16 бит. 12-битовый формат удобен для дискет с небольшим количеством секторов - вся FAT - таблица помещается в одном секторе.
Первый байт FAT - таблицы называется описателем среды. Он имеет такое же значение , как и байт - описатель среды, находящийся в загрузочном секторе дика.
Следующие 5 байт для 12-битового формата или 7 байт для 16-битового формата всегда содержат значение 0FFh.
Остальная часть FAT - таблицы состоит из 12- или 16-битовых ячеек. Каждая ячейка соответствует одному кластеру диска. Эти ячейки могут содержать следующие значения:
FAT12 | FAT16 | Типкластера |
000h | 0000h | Свободныйкластер |
FF0h-FF6h | FFF0h-FFF6h | Зарезервированныйкластер |
FF7h | FFF7h | Плохойкластер |
FF8h-FFFh | FFF8h-FFFFh | Последнийкластер в списке |
002h-FEFh | 0002h-FFEFh | Номерследующегокластера всписке |
Обычно FAT - таблица располагается после загрузочного сектора . Для точного определения начального сектора FAT - таблицы следует прочитать в память загрузочный сектор и проанализировать содержимое блока параметров BIOS. В поле ressect записано количество зарезервированных секторов, которые располагаются перед FAT. Поле fat_size содержит размер FAT в секторах. Кроме того, следует учитывать, что на диске может находиться несколько копий FAT. Операционная система использует только первую копию FAT, но обновляет вторую. Вторая копия нужна для утилит восстановления содержимого диска. Количество копий FAT находится в поле fat_cnt загрузочного сектора.
Общая схема использования FAT такова:
Получаем номер первого кластера файла, для которого необходимо определить его расположение на диске. Используем номер первого кластера как индекс в FAT - таблице для извлечения номера следующего кластера. Повторяем предыдущую процедуру до тех пор, пока извлеченное из FAT - таблицы значение не будет соответствовать концу файла.
Процедура извлечения номера кластера из FAT - таблицы зависит от формата FAT - таблицы.
16-битовую FAT - таблицу можно представить как массив 16-битовых чисел. Для определения номера следующего кластера надо просто извлечь 16-битовое значение из FAT - таблицы, использовав в качестве индекса номер предыдущего кластера.
Для 12-битовой FAT - таблицы процедура значительно сложнее. Необходимо выполнить следующие действия:
умножить номер начального кластера на 3; разделить результат на 2; прочитать 16-битовое слово из FAT - таблицы,
Похожие работы
Тема: Операционная система |
Предмет/Тип: Информатика, ВТ, телекоммуникации (Реферат) |
Тема: Операционная система. |
Предмет/Тип: Информатика, ВТ, телекоммуникации (Реферат) |
Тема: Операционная система |
Предмет/Тип: Отсутствует (Контрольная работа) |
Тема: Making Utilities For MSDOS Essay Research Paper |
Предмет/Тип: Английский (Реферат) |
Тема: Операционная система Unix |
Предмет/Тип: Информатика, ВТ, телекоммуникации (Курсовая работа (п)) |
Интересная статья: Быстрое написание курсовой работы