Файл: А. В. Гордеев А. Ю. Молчанов системное программное обеспечение электронный вариант книги издательства Питер СанктПетербург Челябинск юургу каф. Автоматика и управление 2002 2 Предисловие Настоящий учебник.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 12.01.2024
Просмотров: 1036
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
203
Корневой каталог в FAT32 представлен в виде обычной цепочки кластеров. Следо- вательно, корневой каталог может находиться в произвольном месте диска, что снимает действовавшее ранее ограничение на размер корневого каталога (512 эле- ментов). Windows 95 OSR2 и Windows 98 могут работать и с разделами VFAT, соз- данными Windows NT. То, что говорилось ранее об использовании файловых ути- лит VFAT с томами VFAT, относится и к FAT32. Поскольку прежние утилиты FAT
(для FAT32 в эту категорию входят обе файловые системы, FAT и VFAT) могут повредить или уничтожить важную служебную информацию, для томов FAT32
нельзя пользоваться никакими файловыми утилитами, кроме утилит FAT32.
Кроме повышения ёмкости FAT до величины в 4 Тбайт, файловая система
FAT32 вносит ряд необходимых усовершенствований в структуру корневого ката- лога. Предыдущие реализации требовали, чтобы вся информация корневого ката- лога FAT находилась в одном дисковом кластере. При этом корневой каталог мог содержать не более 512 файлов. Необходимость представлять длинные имена и обеспечить совместимость с прежними версиями FAT привела разработчиков ком- пании Microsoft к компромиссному решению: для представления длинного имени они стали использовать элементы каталога, в том числе и корневого. Рассмотрим способ представления в VFAT длинного имени файла (рис. 4.9).
Первые одиннадцать байтов элемента каталога DOS используются для хране- ния имени файла. Каждое такое имя разделяется на две части: в первых восьми байтах хранятся символы собственно имени, а в последних трех – символы так на- зываемого расширения, с помощью которого реализуются механизмы предопреде- ленных типов. Были введены соответствующие системные соглашения, и файлы определенного типа необходимо (желательно) именовать с оговоренным расшире- нием. Например, исполняемые файлы с расширением СОМ определяют исполняе- мую двоичную программу с простейшей односегментной структурой
1
. Более слож- ные программы имеют расширение ЕХЕ. Определенны расширения для большого количества типов файлов, и эти расширения используются для ассоциированного запуска обрабатывающих файлы программ.
1
Для программных модулей, имеющих такую структуру, может использоваться и расширение BIN.
204
Рис.4.9. Элементы каталогов для FAT, VFAT и FAT32
Если имя файла состоит менее чем из восьми символов, то в элементе каталога оно дополняется символами пробела, чтобы полностью заполнить все восемь бай- тов соответствующего поля. Аналогично и расширение может содержать от нуля до трех символов. Остальные (незаполненные) позиции в элементе каталога, опре- деляющем расширение имени файла, заполняются символами пробела. Поскольку при работе с именем файла учитываются все одиннадцать свободных мест, то не- обходимость в отображении точки, которая обычно вводится между именем файла и его расширением, отпадает. В элементе каталога она просто подразумевается.
205
В двенадцатом байте элемента каталога хранятся атрибуты файла. Шесть из восьми указанных разрядов используются DOS
1
. К атрибутам DOS относятся сле- дующие:
♦ атрибут «архивный» (А – archive). Показывает, что файл был открыт про- граммой таким образом, чтобы у неё была возможность изменить содержимое это- го файла. DOS устанавливает этот разряд атрибута в состояние ON (включено) при открытии файла. Программы резервного копирования нередко устанавливают его в
OFF (выключено) при выполнении резервного копирования файла. Если применя- ется подобная методика, то в следующую создаваемую по порядку резервную ко- пию будут добавлены только файлы с данным разрядом, установленным в состоя- ние ON;
♦ атрибут каталога (D – directory). Показывает, что данный элемент каталога указывает на подкаталог, а не на файл;
♦ атрибут тома (V – volume). Применяется только к одному элементу каталога в корневом каталоге. В нём, собственно, и хранится имя дискового тома. Этот ат- рибут также применяется в случае длинных имён файлов, о чём можно будет уз- нать из следующего раздела;
♦ атрибут «системный» (S – system). Показывает, что файл является частью операционной системы или специально отмечен подобным образом прикладной программой, что иногда делается в качестве составной части метода защиты от ко- пирования;
♦ атрибут «скрытый» (Н – hidden). Сюда относятся, в частности, файлы с ус- тановленным в состояние ON атрибутом «системный» (S), которые не отобража- ются в обычном списке, выводимом по команде DIR;
♦ атрибут «только для чтения» (R – read only). Показывает, что данный файл не подлежит изменению. Разумеется, поскольку это лишь разряд байта, хра- нящегося на диске, то любая программа может изменить этот разряд, после чего
DOS свободно разрешила бы изменение данного файла. Этот атрибут в основном
1
В некоторых операционных системам, в частности в Novell Netware, используется один или два дополнительных разряда атрибутов.
206
используется для примитивной защиты от пользовательских ошибок, то есть он по- зволяет избежать неумышленного удаления или изменения ключевых файлов.
Следует отметить, что наличие файла, помеченного одним или более из ука- занных выше атрибутов, может иметь вполне определенный смысл. Например,
большинство файлов, отмечаемых в качестве системных, отмечаются также при- знаками скрытых файлов и «только для чтения».
На дисках FAT12 или FAT16 следующие за именем десять байтов не исполь- зуются. Обыкновенно они заполняются нулями и считаются резервными значения- ми. А на диске с файловой системой FAT32 эти 10 байт содержат самую разную информацию о файле. При этом байт, отмеченный как «зарезервировано для NT»,
представляет собой, как подразумевает его название, поле, не используемое в DOS
или Windows 9x, но применяемое в Windows NT.
Из соображений совместимости поля, которые встречаются в элементах ката- лога для коротких имен формата FAT12 и FAT16, находятся на тех же местах и в элементах каталога для коротких имен формата FAT32. Остальные поля, которые встречаются только в элементах каталога для коротких имен формата FAT32, соот- ветствуют зарезервированной области длиной в десять байт в элементах каталога для коротких имен форматов FAT12 и FAT16.
Как видно из рис.4.9, для длинного имени файла используется несколько эле- ментов каталога. Таким образом, появление длинных имён фактически привело к дальнейшему уменьшению количества файлов, которые могут находиться в корне- вом каталоге. Поскольку длинное имя может содержать до 256 символов, всего один файл с полным длинным именем занимает до 25 элементов FAT ,(1 для имени
8.3 и ещё 24 для самого длинного имени). Количество элементов корневого катало- га VFAT уменьшается до 21. Очевидно, что это не самое изящное решение, поэто- му компания Microsoft советует избегать длинных имен в корневых каталогах FAT
при отсутствии FAT32, у которой количество элементов каталога соответственно просто увеличено. Помните и о том, что длина полной файловой спецификации,
включающей путь и имя файла (длинное или в формате 8.3), тоже ограничивается
260 символами. FAT32 успешно справляется с проблемой длинных имён в корне-
207
вом каталоге, но проблема с ограничением длины полной файловой спецификации остаётся. По этой причине Microsoft рекомендует ограничивать длинные имена 75–
80 символами, чтобы оставить достаточно места для пути (180–185 символов).
Файловая система
HPFS
Сокращение HPFS расшифровывается как «High Performance File System» –
высокопроизводительная файловая система. HPFS впервые появилась в OS/2 1.2 и
LAN Manager. HPFS была разработана совместными усилиями лучших специали- стов компании IBM и Microsoft на основе опыта IBM по созданию файловых сис- тем MVS, VM/CMS и виртуального метода доступа
1
. Архитектура HPFS начала создаваться как файловая система, которая сможет использовать преимущества многозадачного режима и обеспечит в будущем более эффективную и надёжную работу с файлами на дисках большого объёма.
HPFS была первой файловой системой для ПК, в которой была реализована поддержка длинных имен [96]. HPFS, как FAT и многие другие файловые системы,
обладает структурой каталогов, но в ней также предусмотрены автоматическая сортировка каталогов и специальные расширенные атрибуты
2
, упрощающие реали- зацию безопасности файлового уровня и создание множественных имен. HPFS
поддерживает те же самые атрибуты, что и файловая система FAT, по историче- ским причинам, но также поддерживает и новую форму file-associated, то есть ин- формацию, называемую расширенными атрибутами (EAs
3
). Каждый ЕА концеп- туально подобен переменной окружения. Но самым главным отличием всё же яв- ляются базовые принципы хранения информации о местоположении файлов.
Принципы размещения файлов на диске, положенные в основу HPFS, увели- чивают как производительность файловой системы, так и её надёжность и отказо- устойчивость. Для достижения этих целей предложено несколько способов: раз- мещение каталогов в середине дискового пространства, использование методов бинарных сбалансированных деревьев для ускорения поиска информации о файле,
1
Так, со стороны компании Microsoft проектом руководил известный системный программист Gordon Letwin.
2
Расширенные атрибуты (extended attributes, EAs) позволяют хранить дополнительную информацию о файле. На- пример, каждому файлу может быть сопоставлено его уникальное графическое изображение (значок или «фотогра- фия»), описание файла, комментарий, сведения о владельце файла и т. д.
3
Extended Atributes (EAs) – расширенные атрибуты.
208
рассредоточение информации о местоположении записей файлов по всему диску,
при том, что записи каждого конкретного файла размещаются (по возможности) в смежных секторах и поблизости от данных об их местоположении. Действительно,
система HPFS стремится, прежде всего, к тому, чтобы расположить файл в смеж- ных кластерах, или, если такой возможности нет, разместить его на диске таким образом, чтобы экстенты
4
(фрагменты) файла физически были как можно ближе друг к другу. Такой подход существенно уменьшает время позиционирования голо- вок записи/чтения жёсткого диска и время ожидания (rotational latency) – задержку между установкой головки чтения/записи на нужную дорожку диска и началом чтения данных с диска
5
. Можно сказать, что файловая система HPFS имеет, по сравнению с FAT, следующие основные преимущества:
♦ высокая производительность;
♦ надёжность;
♦ работа с расширенными атрибутами, что позволяет управлять доступом к файлам и каталогам;
♦ эффективное использование дискового пространства.
Все эти преимущества обусловлены структурой диска HPFS. Рассмотрим её
более подробно (рис. 4.10).
1 ... 13 14 15 16 17 18 19 20 ... 37
Рис.4.10. Структура раздела HPFS
В начале диска расположено несколько управляющих блоков. Всё остальное дисковое пространство в HPFS разбито на части («полосы», «ленты» из смежных секторов, в оригинале – band). Каждая такая группа данных занимает на диске про- странство в 8 Мбайт и имеет свою собственную битовую карту распределения сек- торов. Эти битовые карты показывают, какие секторы данной полосы заняты, а ка-
4
Экстенты (extent) – фрагменты файла, располагающиеся в смежных секторах диска. Файл имеет по крайней мере один экстент, если он не фрагментирован, а в противном случае – несколько экстентов.
209
кие – свободны. Каждому сектору ленты данных соответствует один бит в её бито- вой карте. Если бит имеет значение 1, то соответствующий сектор занят, а если 0 –
свободен.
Битовые карты двух полос располагаются на диске рядом, так же располага- ются и сами полосы. То есть последовательность полос и карт выглядит следую- щим образом: битовая карта, битовая карта, лента с данными, лента с данными, би- товая карта, битовая карта и т. д. Такое расположение «лент» позволяет непрерыв- но разместить на жёстком диске файл размером до 16 Мбайт и в то же время не удалять от самих файлов информацию об их местонахождении. Это иллюстрирует- ся рис. 4.10.
Очевидно, что если бы на весь диск была только одна битовая
1
карта, как это сделано в FAT, то для работы с ней приходилось бы перемещать головки чте- ния/записи в среднем через половину диска. Именно для того, чтобы избежать этих потерь, в HPFS и разбит диск на «полосы». Получается своего рода распределенная структура данных об используемых и свободных блоках.
Дисковое пространство в HPFS выделяется не кластерами, как в FAT, а блока-
ми. В современной реализации размер блока взят разным одному сектору, но в принципе он мог бы быть и иного размера. По сути дела, блок – это и есть кластер.
Размещение файлов в таких небольших блоках позволяет более эффективно ис- пользовать пространство диска, так как непроизводительные потери свободного места составляют в среднем всего 256 байт на каждый файл. Вспомните, что чем больше размер кластера, тем больше места на диске расходуется напрасно. Напри- мер, кластер на отформатированном под FAT диске объёмом от 512 до 1024 Мбайт имеет размер 16 Кбайт. Следовательно, непродуктивные потери свободного про- странства на таком разделе в среднем составляют 8 Кбайт (8192 байт) на один файл, в то время как на разделе HPFS эти потери всегда будут составлять всего 256
байт на файл. Таким образом, на каждый файл экономится почти 8Кбайт.
5
Эта задержка обусловлена тем, что система вынуждена ждать, пока диск не повернется таким образом, что нужный сектор окажется под головкой чтения/записи.
1
Bit map – битовая карта.
210
На рис. 4.10 показано, что помимо «лент» с записями файлов и битовых карт в
томе
1
с HPFS имеются ещё три информационные структуры. Это так называемый загрузочный блок (boot block), дополнительный блок (super block) и запасной (ре- зервный) блок (spare block). Загрузочный блок (boot block) располагается в секто- рах с 0 по 15; он содержит имя тома, его серийный номер, блок параметров BIOS
2
и программу начальной загрузки. Программа начальной загрузки находит файл
OS2LDR, считывает его в память и передаёт управление этой программе загрузки
ОС, которая, в свою очередь, загружает с диска в память ядро OS/2 - OS2KRNL. И
уже OS2KRNL с помощью сведений из файла CONFIG.SYS загружает в память все остальные необходимые программные модули и блоки данных.
В блоке (super block) содержится указатель на список битовых карт (bitmap block list). В этом списке перечислены все блоки на диске, в которых расположены битовые карты, используемые для обнаружения свободных секторов. Также в до- полнительном блоке хранится указатель на список дефектных блоков (bad block list), указатель на группу каталогов (directory b and), указатель на файловый узел
(F-node) корневого каталога, а также дата последней проверки раздела программой
CHKDSK. В списке дефектных блоков перечислены все поврежденные секторы
(блоки) диска. Когда система обнаруживает повреждённый блок, он вносится в этот список и для хранения информации больше не используется. Кроме этого, в структуре super block содержится информация о размере «полосы». Напомним, что в текущей реализации HPFS размер «полосы» взят равным 8 Мбайт. Блок super block размещается в секторе с номером 16 логического диска, на котором установ- лена файловая система HPFS.
Резервный блок (spare block) содержит указатель на карту аварийного замеще- ния (hotfix map или hotfix-areas), указатель на список свободных запасных блоков
(directory emergency free block list), используемых для операций на почти перепол- ненном диске, и ряд системных флагов и дескрипторов. Этот блок размещается в
1
По сути дела, том (volume) – это не что иное, как раздел или логический диск.
2
Блок параметров BIOS содержит информацию о жестком диске – количество цилиндров и головок диска, число секторов на дорожке. Эта информация используется программными модулями HPFS для поиска конкретного секто- ра (блока), поскольку все блоки пронумерованы 32-разрядными числами.
211 17 секторе диска. Резервный блок обеспечивает высокую отказоустойчивость фай- ловой системы HPFS и позволяет восстанавливать повреждённые данные на диске.
Файлы и каталоги в HPFS базируются на фундаментальном объекте, называе- мом F-Node
1
. Эта структура характерна для HPFS и аналога в файловой системе
FAT не имеет. Каждый файл и каталог диска имеет свой файловый узел F-Node.
Каждый объект F-Node занимает один сектор и всегда располагается поблизости от своего файла или каталога (обычно – непосредственно перед файлом или ка- талогом). Объект F-Node содержит длину и первые 15 символов имени файла, спе- циальную служебную информацию, статистику по доступу к файлу, расширенные атрибуты файла и список прав доступа
2
(или только часть этого списка, если он очень большой), ассоциативную информацию о расположении и подчинении файла и т. д. Структура распределения в F-node может принимать несколько форм в зави- симости от размера каталога или файлов. HPFS просматривает файл как совокуп- ность одного или более секторов. Из прикладной программы это не видно; файл появляется как непрерывный поток байтов. Если расширенные атрибуты слишком велики для файлового узла, то в него записывается указатель на них.
Сокращенное имя файла (в формате 8.3) используется, когда файл с длинным именем копируется или перемещается на диск с системой FAT, не допускающей подобных имён. Сокращенное имя образуется из первых 8 символов оригинально- го имени файла, точки и первых трех символов расширения имени, если расшире- ние имеется. Если в имени файла присутствует несколько точек, что не противоре- чит правилам именования файлов в HPFS, то для расширения сокращенного имени используются три символа после самой последней из этих точек.
Так как HPFS при размещении файла на диске стремится избежать его фраг- ментации, то структура информации, содержащаяся в файловом узле, достаточно проста. Если файл непрерывен, то его размещение на диске описывается двумя 32–
битными числами. Первое число представляет собой указатель на первый блок
1
Файловый узел (F-Node) – это структура, в которой содержится информация о расположении файла и о его расши- ренных атрибутах.
2
ACL (access control list) – список прав доступа к данному файлу или объекту.