Реферат: Организация файловых систем в OS (2 (WinWord)
Структура распределения в Fnode может принимать несколько форм, в зависимости от размера каталога или файлов. HPFS просматривает файл как совокупность одного или более секторов. Из прикладной программы это не видно; файл появляется как непрерывный поток байтов.
Каталоги
Каталоги, подобно файлам, регистрируются в Fnodes. Для корневой директории Fnodes находится в SuperBlock. Fnodes для некорневых каталогов определяются через входы подкаталога.
Каталоги могут увеличиваться до любого размера и состоят из блоков каталога 2 КБ, которые распределяются как четыре последовательных сектора на диске. Файловая система делает попытку распределить блоки каталога в полосе каталога, которая размещается около “центра” диска. Если полоса каталога полна, блоки каталога распределяются там, где есть свободное место.
Каждый блок каталога 2 КБ состоит из большого количества входов каталога. Вход каталога содержит несколько полей, включая штампы времени и даты, Fnode указатель, длина имени каталога или файла, имя непосредственно, и указатель. Каждый вход начинается словом, которое содержит длину.
Число блоков каталога и входов различно при различной длине имени. Если средняя длина имени файла 13 символов, средний блок каталога будет содержать приблизительно 40 входов. Блоки каталога входов сортируются в двоичном лексическом порядке по полям имени в алфавитном порядке для алфавита США. Последний блок каталога входа - запись, которая отмечает конец блока.
Когда каталог получает слишком большой файл, который нужно сохранить в одном блоке, он увеличивает размер добавлением блоков 2 КБ, которые организуются как B-Tree[1] . При поиске файловая система извлекает указатель B-Tree из входа. Если это не указатель, то поиск неудачен; иначе файловая система следует за указателем в следующий каталог и продолжает поиск.
Небольшая арифметика дает внушительную статистику. При использование 40 входов на блок, блоки каталога дерева с двумя уровнями могут содержать 1640 входов, каталога и дерева с тремя уровнями могут содержать на удивление 65640 входов. Другими словами, некоторый файл может быть найден в типичном каталоге из 65640 файлов максимум за три обращения. Это намного лучше файловой системы FAT, где в самом плохом случае более чем 4000 секторов нужно прочитать для нахождения файла.
Структура каталога B-Tree имеет интересные импликации. Создание файла, переименование или стирание может приводить к каскадированию блоков каталогов. Фактически, переименование может терпеть неудачу из-за недостатка дискового пространства, даже если файл непосредственно в размерах не увеличился. Во избежание этого “бедствия”, HPFS поддерживает маленький пул свободных блоков, которые могут использоваться при “аварии”;
Указатель на этот пул свободных блоков сохраняется в SpareBlock.
Расширенные Атрибуты
Атрибуты Файла - информация о файле. FAT поддерживает только небольшое количество простых атрибутов (доступный только для чтения, системный, скрытый, архив) которые фактически сохраняются как флажки бита на входе каталога файла; эти атрибуты не доступны, если файл открыт.
HPFS поддерживает те же самые атрибуты, что и файловая система FAT по историческим причинам, но он также поддерживает и новую форму fileassociated, то есть информацию, называемую Расширенными Атрибутами (EAs). Каждый EA концептуально подобен переменной окружения.
Значение имени
В OS/2 1.2 каждый каталог или файл может иметь максимум 64 КБ присоединенных EAs. Это ограничение снимается в более поздних версиях OS/2.
Метод хранения для EAs может изменяться. Если одиночный EA становится слишком большим, он может помещаться снаружи Fnode.
Ядро API функции DosQFileInfo и DosSetFileInfo расширено новыми информационными уровнями, которые позволяют прикладным программам управлять расширенными атрибутами файлов. Новые функции DosQPathInfo и DosSetPathInfo используются для чтения или записи EAs, связанных с произвольными именами пути.
Поддержка EAs является существенным компонентом в объектно - ориентированных файловых системах. Информация о почти любом типе может сохраняться в EAs. Так как HPFS развивается, средства для управления EAs становятся еще более сложным.
Можно предположить, например, что в будущем версии API могут расширяться функциями EA, которые являются аналогичным DosFindFirst и DosFindNext и EA - данные могут быть организованы в B-Tree.
Инсталлируемые Файловые Системы
Поддержка для инсталлируемой файловой системы является очень ценной особенностью OS/2. Она дает возможность обращаться к многочисленным несовместимым томам структур FAT, HPFS, CD ROM, и UNIX. Система OS/2 упрощает жизнь и открывает путь быстрому развитию файловых систем и новшеств. Инсталлируемые файловые системы, однако, релевантны по отношению к HPFS, поскольку они используют HPFS факультативно. Файловая система FAT вложена в ядро OS/2 и будет оставаться там как файловая система совместимости в течение некоторого времени.
Драйвер инсталлируемой файловой системы (FSD) аналогичен драйверам устройств. FSD постоянно находится на диск как структурный файл, который является подобным библиотеке динамических компоновок (DLL). Обычно этот файл имеет системное расширение, и загружается во время инициализации системы из файла CONFIG. SYS.
Когда FSD установлен и инициализирован, ядро передает ему логические запросы на открытие, чтение, запись, поиск, закрытие, и так далее. FSD транслирует эти управляющие запросы в запросы на сектор чтения или записи.
Проблемы эффективности
Здесь рассмотрим лишь часть методик повышения эффективности. Например, когда файл открывается, файловая система прочитает и кэш Fnode и первое небольшое количество секторов содержания файла. Если информация хронологии в Fnode файла выполнимой программы показывает, что операция открытия обычно сопровождается непосредственным последовательным чтением всего файла, файловая система будет читать в кэш еще больше содержания файла.
В заключение, поддержка операционной системы OS/2 для многозадачного режима делает возможным для HPFS “ленивые записи” (иногда называемый отсроченными записями или запись позади) для улучшения эффективности.
Отказоустойчивость
Первичный механизм для коррекции ошибок записи называется hotfix. Если обнаружена ошибка, файловая система берет свободный блок вне резервного пула hotfix, записывает данные в этот блок, и модифицирует карту hotfix. (Карта hotfix представляет собой двойные слова, содержащие номер плохого сектора связанный с номером замены. Указатель на hotfix находится в SpareBlock). Выдается предупредительное сообщение, и пользователь знает, что все хорошо не с дисковым устройством.
Каждый раз когда файловая система запрашивает сектор, дисковый драйвер просматривает карту hotfix и заменяет любые плохие номера секторов на соответствующие хорошие.
CHKDSK освобождает карту hotfix. Он добавляет плохой сектор в список плохих блоков, выпускает сектор замены обратно в пул hotfix, удаляет hotfix вход из карты hotfix, и записывает модифицированный hotfix.
HPFS защищает себя от пользователей, слишком любящих Красный_Переключатель и поддерживает флажок Dirty FS, помечающий в SpareBlock каждый HPFS том. Флажок очищается только когда все файлы тома закрылись и все буферизованные в кэше данные были записаны.
В течение загрузки OS/2, файловая система осматривает DirtyFS и, если флажок установлен, не будет позволять дальнейший доступ к тому до тех пор, пока CHKDSK не закончит работу. Если флажок DirtyFS установлен на томе начальной загрузки, система не будет загружена; пользователь должен загружать OS/2 в режиме с дискеты и выполнить CHKDSK для проверки и возможно ремонта тома начальной загрузки.
При потере SuperBlock или корневой директории, HPFS имеет возможность успешно восстановить их. Каждый тип, определяющий файл, включая объект Fnodes, секторы распределения, и каталоги блоков компонуются так, что и хозяин и дочерние записи и содержит уникальную сигнатуру с 32 битами. Fnodes также содержат начальную часть имени каталога или файлов. Следовательно, CHKDSK может восстановить весь том методом просмотр диска для Fnodes, секторов распределения, и блоки каталога, использовав их для восстановления файлов, каталогов и freespace - списков.
Прикладные Программы и HPFS
Новые функции API, DosCopy помогают прикладным программам создавать копии, по существу дублируя существующий файл вместе с EAs. EAs может также управляться явно с DosQFileInfo, DosSetFileInfo, DosQPathInfo, и DosSetPathInfo.
Другие изменения в API не будут воздействовать на среднюю прикладную программу. Функции DosQFileInfo, DosFindFirst, и DosFindNext.