Файлы и Fnodes

Файлы и Fnodes. Каждый каталог или файл в HPFS-томе закрепляется за фундаментальным объектом файловой системы, называемым Fnode произносится eff node. Каждый Fnode занимает одиночный сектор и содержит управляющую информацию, хронологию доступа, расширенные атрибуты и списки управления доступом, длину и первые 15 символов имени, и структуру распределения.

Fnode всегда находится рядом с каталогом или файлом, который он представляет. Структура распределения в Fnode может принимать несколько форм, в зависимости от размера каталога или файлов. HPFS просматривает файл как совокупность одного или более секторов. Из прикладной программы это не видно файл появляется как непрерывный поток байтов. Каталоги Каталоги, подобно файлам, регистрируются в Fnodes.

Для корневой директории Fnodes находится в SuperBlock. Fnodes для некорневых каталогов определяются через входы подкаталога. Каталоги могут увеличиваться до любого размера и состоят из блоков каталога 2 КБ, которые распределяются как четыре последовательных сектора на диске. Файловая система делает попытку распределить блоки каталога в полосе каталога, которая размещается около центра диска. Если полоса каталога полна, блоки каталога распределяются там, где есть свободное место. Каждый блок каталога 2 КБ состоит из большого количества входов каталога. Вход каталога содержит несколько полей, включая штампы времени и даты, Fnode указатель, длина имени каталога или файла, имя непосредственно, и указатель.

Каждый вход начинается словом, которое содержит длину. Число блоков каталога и входов различно при различной длине имени. Если средняя длина имени файла 13 символов, средний блок каталога будет содержать приблизительно 40 входов. Блоки каталога входов сортируются в двоичном лексическом порядке по полям имени в алфавитном порядке для алфавита США. Последний блок каталога входа - запись, которая отмечает конец блока.

Когда каталог получает слишком большой файл, который нужно сохранить в одном блоке, он увеличивает размер добавлением блоков 2 КБ, которые организуются как B-Tree О двоичных деревьях B-Tree смотри в дополнении. При поиске файловая система извлекает указатель B-Tree из входа. Если это не указатель, то поиск неудачен иначе файловая система следует за указателем в следующий каталог и продолжает поиск.

Небольшая арифметика дает внушительную статистику. При использование 40 входов на блок, блоки каталога дерева с двумя уровнями могут содержать 1640 входов, каталога и дерева с тремя уровнями могут содержать на удивление 65640 входов. Другими словами, некоторый файл может быть найден в типичном каталоге из 65640 файлов максимум за три обращения. Это намного лучше файловой системы FAT, где в самом плохом случае более чем 4000 секторов нужно прочитать для нахождения файла.

Структура каталога B-Tree имеет интересные импликации. Создание файла, переименование или стирание может приводить к каскадированию блоков каталогов. Фактически, переименование может терпеть неудачу из-за недостатка дискового пространства, даже если файл непосредственно в размерах не увеличился. Во избежание этого бедствия, HPFS поддерживает маленький пул свободных блоков, которые могут использоваться при аварии Указатель на этот пул свободных блоков сохраняется в SpareBlock. Расширенные Атрибуты Атрибуты Файла - информация о файле.

FAT поддерживает только небольшое количество простых атрибутов доступный только для чтения, системный, скрытый, архив которые фактически сохраняются как флажки бита на входе каталога файла эти атрибуты не доступны, если файл открыт. HPFS поддерживает те же самые атрибуты, что и файловая система FAT по историческим причинам, но он также поддерживает и новую форму fileassociated, то есть информацию, называемую Расширенными Атрибутами EAs. Каждый EA концептуально подобен переменной окружения.