Лабораторная № 1 «Файловые системы» по Операционным системам (Иванько А. Ф.)

Кирилл Николоев вт, 28.03.2017 17:19

Файловые системы FAT файловая система FAT12 файловая система FAT16 файловая система FAT32 Файловые системы FAT12 и FAT16 В файловой системе FAT любого логического диска делится на две области: системная область – создается и инициализируется при форматировании и обнов-ляется при манипулировании файловой структурой.

Системная область состоит из: загрузочной записи(boot record, BR), зарезервированных секторов(reserved sector, ResSecs), таблицы размещения файлов(file allocation table, FAT), корневого каталога(root directory, Rdir)

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

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

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

FAT-таблица может иметь 12- или 16-битовый формат. При этом в таблице для хранения информации об одном кластере диска использует-ся соответственно 12 или 16 бит. 12-битовый формат удобен для дискет с небольшим ко-личеством секторов - вся FAT - таблица помещается в одном секторе.

Первый байт FAT - таблицы называется описателем среды. Он имеет такое же значение , как и байт - описатель среды, находящийся в загрузочном секторе диска. Следующие 5 байт для 12-битового формата или 7 байт для 16-битового формата всегда содержат значение 0FFh.

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

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

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

Для 12-битовой FAT - таблицы процедура значительно сложнее. Необходимо вы-полнить следующие действия: умножить номер начального кластера на 3; разделить результат на 2; прочитать 16-битовое слово из FAT - таблицы, используя в качестве смещения зна-чение, полученное после деления на 2;

если номер начального кластера четный, на выбранное из FAT слово нужно нало-жить маску 0FFFh, оставив младшие 12 бит; если же номер начального кластера нечет-ный, выбранное из FAT значение необходимо сдвинуть вправо на 4 бита, оставив стар-шие 12 бит;

полученный результат - это номер следующего кластера в цепочке. Используя описанную выше процедуру можно определить для каждого файла це-почку занимаемых им кластеров. Для нахождения первого кластера, распределенного файлу необходимо прочитать информацию из каталога., в котором содержится данный файл. Для этого необходимо сначала прочитать корневой каталог, а затем все подкаталоги из пути каталогов к данно-му файлу.

Корневой каталог находится сразу за последней копией FAT. Перед корневым ка-талогом находится один загрузочный сектор и fat_cnt*fat_size секторов FAT - таблицы. Размер корневого каталога можно определить исходя из значения поля root_size. При форматировании диска в это поле записывается максимальное количество файлов и ката-логов, которые могут быть в корневом каталоге. Для каждого элемента в каталоге отво-дится 32 байта, поэтому корневой каталог имеет длину 32*root_size байт. Корневой ката-лог занимает непрерывную область фиксированного размера.

Любой каталог одержит 32-байтовые дескрипторы, описывающие файлы и другие каталоги. В любом каталоге, кроме корневого, два первых дескриптора имеют специальное назначение. Первый дескриптор содержит в поле имени строку

«.». Этот дескриптор указывает на содержащий его каталог, т.е. каталог имеет ссылку на самого себя. Второй специальный дескриптор содержит в поле имени строку «». Это де-скриптор указывает на каталог более высокого уровня

Скачать файлы

Похожие документы