Гордеев А.В. Операционные системы (2-е изд., 2004) (1186250), страница 47
Текст из файла (страница 47)
Она была разработана совместными усилиями лучших специалистов компаний IBM и Microsoft на основе опыта IBM по созданию файловых систем MVS, VM/CMS и виртуального метода доступа1. Архитектура HPFS началасоздаваться как файловая система для многозадачного режима и была призванаобеспечить высокую производительность при работе с файлами на дисках большого размера.HPFS стала первой файловой системой для персональных компьютеров, в которой была реализована поддержка длинных имен [26]. HPFS, как и FAT, как и многие другие файловые системы, обладает структурой каталогов, но в ней также предусмотрены автоматическая сортировка каталогов и специальные расширенные2атрибуты (Extended Attributes, EAs) , упрощающие обеспечение безопасности нафайловом уровне и создание множественных имен.
Помимо расширенных атрибутов, каждый из которых концептуально подобен переменной окружения, HPFSпо историческим причинам поддерживает те же самые атрибуты, что и файловаясистема FAT. Но самым главным отличием этой системы все же являются базовыепринципы хранения информации о местоположении файлов.Принципы размещения файлов на диске, положенные в основу HPFS, увеличивают как производительность файловой системы, так и ее надежность и отказоустойчивость. Для достижения этих целей предложено несколько идей:2ак, со стороны компании Microsoft проектом руководил известный системщик Гордон Литвин(Gordon Letwin).асширенные атрибуты позволяют хранить дополнительную информацию о файле. Например, каждому файлу может быть сопоставлено его уникальное графическое изображение (значок, миниатюРа), описание файла, комментарий, сведения о владельце файла и т.
д.178Глава 6. Файловые систем^Q размещение каталогов в середине дискового пространства;Q использование методов бинарных сбалансированных деревьев для ускоренияпоиска информации о файле;•рассредоточение информации о местоположении файловых записей по всемудиску, при том что записи каждого конкретного файла размещаются (по возможности) в смежных секторах и поблизости от данных об их местоположении.Действительно, прежде всего, HPFS пытается расположить файл в смежных кластерах или, если такой возможности нет, поместить его на диск таким образом, что1бы экстенты (extents) файла физически были как можно ближе друг к другу. Такой подход существенно сокращает время позиционирования (seek time) головок2записи/чтения жесткого диска и время ожидания (rotational latency) . Можно сказать, что файловая система HPFS имеет, по сравнению с FAT, следующие основные преимущества:Q высокая производительность;Q надежность;•поддержка расширенных атрибутов, позволяющих более гибко управлять доступом к файлам и каталогам;Q эффективное использование дискового пространства.iшаша>а.Полоса 1смго го2£гс Кгошо оtSш LQ•Полоса 2••••'Полоса 3сомрта>,u.СОСООПОЛс;т-ртаоЛ «.ь J3 ёртаортаВсе эти преимущества обусловлены структурой диска HPFS.
Рассмотрим ее болееподробно (рис. 6.4).кгошокгошоSшПолоса 4SШо.Рис. 6.4. Структура раздела HPFSВ начале диска расположено несколько управляющих блоков. Все остальное дисковое пространство в HPFS разбито на множество областей из смежных секторов, илиполос (bands). В каждой такой области располагаются и собственно сами данныефайлов, и вспомогательная служебная информация о свободных или занятых секторах в этой области. Каждая полоса занимает на диске пространство в 8 Мбайт иимеет собственную битовую карту (bit map) распределения секторов, которая, с одной стороны, напоминает таблицу размещения файлов FAT, но, с другой, суш е "'2Экстент — фрагмент файла, располагающийся в смежных секторах диска.
Файл имеет, по крайнемере, один экстент, если он не фрагментирован, в противном случае — несколько экстентов.Время ожидания — это задержка между установкой головки чтения/записи на нужную дорожку диси началом чтения данных с диска. Эта задержка обусловлена тем, что система вынуждена ждать, покдиск не повернется таким образом, чтобы нужный сектор оказался под головкой чтения/записи.ственно от нее отличается. Эти битовые карты показывают, какие секторы даннойполосы заняты, а какие свободны.
Каждому сектору полосы данных соответствуетодин бит в ее битовой карте.Если бит имеет значение 1, то соответствующий сектор занят, если 0 — свободен.Битовые карты двух полос располагаются на диске рядом, также располагаются исами полосы. То есть последовательность полос и карт выглядит следующим образом: битовая карта, битовая карта, полоса данных, полоса данных, битовая карта битовая карта и т.
д. Такое расположение полос и битовых карт позволяет непрерывно разместить на жестком диске файл размером до 16 Мбайт и в то же времяне удалять от самих файлов информацию об их местонахождении.Очевидно, что если бы на весь логический диск была бы только одна адресная структура данных, как это сделано в FAT, то для работы с ней приходилось бы перемещать головки чтения/записи в среднем через половину диска.
Именно для того,чтобы избежать таких потерь, в HPFS диск разбит на полосы. Получается как быраспределенная структура данных (в данном случае — битовая карта) с информацией об используемых и свободных блоках.Дисковое пространство в HPFS выделяется не кластерами, как в FAT, а блоками.В имеющейся на сегодня реализации размер блока равен одному сектору, но, в принципе, он мог бы быть и иного размера.
По сути дела, блок — это и есть кластер.Размещение файлов в таких небольших блоках позволяет более эффективно использовать пространство диска, так как непроизводительные потери свободногоместа составляют в среднем всего 256 байт на каждый файл. Вспомните, чем больше размер кластера, тем больше места на диске расходуется напрасно.
Например,кластер па отформатированном под FAT диске объемом от 512 до 1023 Мбайт имеетразмер 16 Кбайт. Следовательно, непродуктивные потери свободного пространства на таком разделе в среднем составляют 8 Кбайт (8192 байт) на один файл, в товремя как на разделе HPFS эти потери всегда будут составлять всего 256 байт нафайл.
Таким образом, на каждый файл экономится почти 8 Кбайт.На рис. 6.4 показано, что помимо полос с записями файлов и битовых карт на томе(volume)' с HPFS имеются еще три информационные структуры. Это так называемый загрузочный блок (boot block), дополнительный блок (super block) и резервный блок (spare block). Загрузочный блок OS/2 располагается в секторах с 0 по 15;он содержит имя тома, его серийный номер, блок параметров BIOS 2 и программуначальной загрузки. Программа начальной загрузки находит программу 0S2LDR,считывает ее в память и передает управление на эту программу загрузки операционной системы, которая, в свою очередь, загружает с диска в память ядро OS/2 —программу 0S2KRNL И уже 0S2KRNL с помощью сведений из файла CONFIG.SYS загружает в память все необходимые программные модули и блоки данных.Дополнительном блоке содержится указатель на список битовых карт (bitmap'lock list).
В этом списке перечислены все блоки на диске, в которых расположены' пг° СУ'ГИ Дела, том — это не что иное, как раздел, или логический диск.В*К параметров BIOS содержит информацию о жестком диске — количестве цилиндров и головок(ска, числе секторов на дорожке. Эта информация используется программными модулями HPFS для'ска конкретного сектора (блока), поскольку все блоки пронумерованы 32-разрядными числами.180Глава 6, Файловые системыбитовые карты, используемые для обнаружения свободных секторов. Также в дополнительном блоке хранится указатель на список дефектных блоков (bad blocklist), указатель на полосу каталогов (directory band), указатель на файловый узел(File node, F-node) корневого каталога, а также дата последней проверки разделапрограммой CHKDSK. В списке дефектных блоков перечислены все поврежденныесекторы (блоки) диска.
Когда система обнаруживает поврежденный блок, он вносится в этот список и для хранения информации больше не используется. Крометого, в дополнительном блоке содержится информация о размере полосы. Напомним, что в имеющейся реализации HPFS размер полосы равен 8 Мбайт. В принципе, его можно было бы сделать и больше.
Дополнительный блок размещается в секторе с номером 16 логического диска, на котором установлена файловая системаHPFS.Резервный блок содержит указатель на карту (HotFix map), или области (HotFixareas), аварийного замещения, указатель на список свободных запасных блоков каталогов (directory emergency free block list), используемых для операций на почтипереполненном диске, и ряд системных флагов и дескрипторов. Резервный блокразмещается в 17-м секторе диска и обеспечивает высокую отказоустойчивостьфайловой системы HPFS, позволяя восстанавливать поврежденные данные надиске и перемещать их в надежное место.Файлы и каталоги в HPFS базируются на фундаментальном объекте, уже упоминавшемся файловом узле 1 .
Эта структура характерна для HPFS, и аналога в файловой системе FAT у нее нет. Каждый файл и каталог диска имеет свой файловыйузел. Каждый файловый узел занимает один сектор и всегда располагается поблизости от своего файла или каталога (обычно — непосредственно перед файлом иликаталогом). Файловый узел содержит размер файла и первые 15 символов именифайла, специальную служебную информацию, статистику по доступу к файлу,расширенные атрибуты файла и список управления доступом (Access Control List,ACL) или только часть этого списка, если он очень большой, ассоциативную информацию о расположении и подчинении файла и т. д. Структура распределенияинформации в файловом узле может иметь несколько форм, в зависимости от размера каталога или файлов. HPFS рассматривает файл как совокупность одногоили более секторов.
Из прикладной программы этого не видно; файл прикладнойпрограмме представляется как непрерывный поток байтов. Если расширенные атрибуты слишком велики для файлового узла, то в него записывается указатель наних.Сокращенное имя файла (в формате 8.3) используется, когда файл с длинным именем копируется или перемещается на диск с системой FAT, которая не допускаетподобных имен. Сокращенное имя образуется из первых 8 символов оригинального имени файла, точки и первых 3 символов расширения имени, если расширениеимеется.