Но причиной для компромисса послужили не только соображения экономии дискового пространства; не были забыты и вопросы производительности. Для ускорения доступа к диску встроенная программа дискового кэша VCACHE загружает всю FAT в оперативную память. Очевидно, что проще добиться этого, если каждая отдельная таблица FAT занимает 2 Мбайт, а не 16 Мбайт. И не беспокойтесь о том, что увеличение числа кластеров и удвоение размера элементов FAT приведут к снижению эффективности VCACHE: для FAT32 предусмотрен новый метод работы с кэшем, который, согласно заявлениям Microsoft, повышает общую производительность.
Другие изменения в FAT32
Чтобы обеспечить возможность работы с возросшим числом кластеров, в записи каталога для каждого файла должно выделяться 4 байт для начального кластера файла (вместо 2 байт в системе FAT16). Традиционно каждая запись в каталоге состоит из 32 байт (рис. 1). В середине этой записи 10 байт не используются (байты с 12-го по 21-й), которые Microsoft зарезервировала для своих собственных нужд в будущем. Два из них теперь отводятся как дополнительные байты, необходимые для указания начального кластера в системе FAT32.
Операционная система всегда предусматривала наличие на диске двух экземпляров FAT, но использовался только один из них. С переходом к FAT32 операционная система может работать с любой из этих копий. Еще одно изменение состоит в том, что корневой каталог, раньше имевший фиксированный размер и строго определенное место на диске, теперь можно свободно наращивать по мере необходимости подобно подкаталогу. Теперь не существует ограничений на число записей в корневом каталоге. Это особенно важно, поскольку под каждое длинное имя файла используется несколько записей каталога.
Сочетание перемещаемого корневого каталога и возможности использования обеих копий FAT - неплохие предпосылки для беспрепятственного динамического изменения размеров разделов диска, например уменьшени раздела с целью высвобождения места для другой операционной системы. Этот новый подход менее опасен, чем применявшиеся в программах независимых поставщиков для изменения разделов диска при работе с FAT16. (Хот в Windows нет утилит, использующих возможности FAT32, такие средства реализованы в программах независимых фирм, например в Partition Magic 3.0 фирмы PowerQuest и PartitionIt фирмы Quarterdeck.)
Предостережения
Следует заметить, что FAT32 рассчитана только на Windows 95. В Microsoft не давали обещаний подготовить Windows NT к ее использованию и намекнули, что и не собираются этого делать. Однако в фирме заявляют, что, если в Windows NT 5.0 не будет средств для работы с FAT32, то в ней будет предусмотрена утилита для отображения дисков файловой системы FAT32 в NTFS ("родную" файловую систему Windows NT), поэтому те, кто собирается обновить свою систему, могут не беспокоиться. Однако в настоящее время, если вы хотите установить Windows NT и Windows 95 на одной машине, вам нужно будет убедиться, что совместно используемое этими двумя операционными системами дисковое пространство организовано в соответствии с FAT16, а не FAT32, которую не "воспринимает" система Windows NT, и не NTFS, которую не "понимает" Windows 95.
Вам также следует помнить, что, поскольку поле для размера файла в записи каталога занимает 32 разряда, размер отдельного файла не может превышать 4 Гбайт.
Наконец, при любых существенных изменениях файловой системы, видимо, такие утилиты для работы с дисками на нижнем уровне, как Norton Utilities, перестанут работать. Необходимо перейти на их обновленные версии. Подсистемы управления файлами и программы просмотра (например, Norton Navigator) должны работать и с системой FAT32.
Если мы остановимся на FAT32, то пройдет еще 15 лет, прежде чем мы достигнем рубежа 2 Тбайт, и нам придется переходить на FAT64. Учитывая разговоры об объектно-ориентированных файловых системах, можно с той же степенью уверенности предсказать отказ от FAT, с которой мы могли предсказать в 1987 г. отход от FAT до достижения предела в 2 Гбайт.
Цель работы: изучить файловую систему HPFS.
Высокоэффективная Файловая Система (HPFS) для OS/2 решает все проблемы FAT. HPFS работает по методу устройства блока произвольного доступа, и также содержит модуль программного обеспечения, который транслирует файловые запросы из прикладных программ к драйверам устройств. HPFS также является инсталлируемой файловой системой, которая делает возможным обращение к нескольким несовместимым структурам тома системы OS/2 одновременно. Превосходная производительность достигается благодаря использованию продвинутых структур данных, интеллектуального кэширования, предварительного чтения и отложенной записи. Дисковое пространство используется более экономно благодаря использованию разбиения на секторы. HPFS также включает значительно улучшенную отказоустойчивость. При необходимости программы используют расширенные атрибуты и длинные имена файлов. Высокоэффективная Файловая Система (далее HPFS), которая впервые появилась в OS/2 System Version 1.2, была разработана Gordon Letwin, главным архитектором операционной системы OS/2.
HPFS-тома используют размер сектора 512 байтов и имеют максимальный размер 2199Gb. HPFS том имеет очень небольшое количество фиксированных структур. Секторы 015 тома (BootBlock, имя тома, 32 бита ID, дисковая программа начальной загрузки). Начальная загрузка относительно сложна (в стандартах MSDOS) и может использовать HPFS в ограниченном режиме. Сектора 16 и 17 известны как SuperBlock и SpareBlock соответственно. SuperBlock изменяется только при помощи утилит. Он содержит указатели свободного пространства, список плохих блоков, полосу блока каталога, и корневую директорию. Он также содержит дату, соответствующую последней проверке и восстановлению утилитой CHKDSK/F. SpareBlock содержит различные флажки и указатели которые будут обсуждаться позже; Он изменяется, хотя нечасто, при работе системы. Остаток диска разделен на 8MB полосы. Каждая полоса имеет собственный список свободного пространства, где биты представляют каждый сектор. Бит 0 если сектор использован 1 если сектор доступен. Списки размещаются в начале или хвосте списка. Одна полоса, размещенная в "центре" диска, называется полосой блока каталога и обрабатывается специально. Обратите внимание, что размер полосы зависит от текущей реализации и может изменяться в более поздних версиях файловой системы.
Каждый каталог или файл в HPFS-томе закрепляется за фундаментальным объектом файловой системы, называемым Fnode (произносится "eff node"). Каждый Fnode занимает одиночный сектор и содержит управляющую информацию, хронологию доступа, расширенные атрибуты и списки управления доступом, длину и первые 15 символов имени, и структуру распределения. Fnode всегда находится рядом с каталогом или файлом, который он представляет. Структура распределения в Fnode может принимать несколько форм, в зависимости от размера каталога или файлов. HPFS просматривает файл как совокупность одного или более секторов. Из прикладной программы это не видно; файл появляется как непрерывный поток байтов.
Каталоги, подобно файлам, регистрируются в Fnodes. Для корневой директории Fnodes находится в SuperBlock. Fnodes для некорневых каталогов определяются через входы подкаталога. Каталоги могут увеличиваться до любого размера и состоят из блоков каталога 2 КБ, которые распределяются как четыре последовательных сектора на диске. Файловая система делает попытку распределить блоки каталога в полосе каталога, которая размещается около “центра” диска. Если полоса каталога полна, блоки каталога распределяются там, где есть свободное место.
Каждый блок каталога 2 КБ состоит из большого количества входов каталога. Вход каталога содержит несколько полей, включая штампы времени и даты, Fnode указатель, длина имени каталога или файла, имя непосредственно, и указатель. Каждый вход начинается словом, которое содержит длину. Число блоков каталога и входов различно при различной длине имени. Если средняя длина имени файла 13 символов, средний блок каталога будет содержать приблизительно 40 входов. Блоки каталога входов сортируются в двоичном лексическом порядке по полям имени в алфавитном порядке для алфавита США. Последний блок каталога входа - запись, которая отмечает конец блока. Когда каталог получает слишком большой файл, который нужно сохранить в одном блоке, он увеличивает размер добавлением блоков 2 КБ, которые организуются как B-Tree. При поиске файловая система извлекает указатель B-Tree из входа. Если это не указатель, то поиск неудачен; иначе файловая система следует за указателем в следующий каталог и продолжает поиск. Небольшая арифметика дает внушительную статистику. При использование 40 входов на блок, блоки каталога дерева с двумя уровнями могут содержать 1640 входов, каталога и дерева с тремя уровнями могут содержать на удивление 65640 входов. Другими словами, некоторый файл может быть найден в типичном каталоге из 65640 файлов максимум за три обращения. Это намного лучше файловой системы FAT, где в самом плохом случае более чем 4000 секторов нужно прочитать для нахождения файла. Структура каталога B-Tree имеет интересные импликации. Создание файла, переименование или стирание может приводить к каскадированию блоков каталогов. Фактически, переименование может терпеть неудачу из-за недостатка дискового пространства, даже если файл непосредственно в размерах не увеличился. Во избежание этого “бедствия”, HPFS поддерживает маленький пул свободных блоков, которые могут использоваться при “аварии”; указатель на этот пул свободных блоков сохраняется в SpareBlock.
Атрибуты Файла - информация о файле. FAT поддерживает только небольшое количество простых атрибутов (доступный только для чтения, системный, скрытый, архив) которые фактически сохраняются как флажки бита на входе каталога файла; эти атрибуты не доступны, если файл открыт. HPFS поддерживает те же самые атрибуты, что и файловая система FAT по историческим причинам, но он также поддерживает и новую форму fileassociated, то есть информацию, называемую Расширенными Атрибутами (EAs). Каждый EA концептуально подобен переменной окружения.