Файл: А. В. Гордеев А. Ю. Молчанов системное программное обеспечение электронный вариант книги издательства Питер СанктПетербург Челябинск юургу каф. Автоматика и управление 2002 2 Предисловие Настоящий учебник.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 12.01.2024

Просмотров: 1035

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

194
тельский интерфейс DOS. Системная область состоит из следующих компонентов,
расположенных в логическом адресном пространстве подряд:
♦ загрузочной записи (boot record, BR);
♦ зарезервированных секторов (reserved sector, ResSecs);
♦ таблицы размещения файлов (file allocation table, FAT);
♦ корневого каталога (root directory, RDir).
Таблица размещения файлов
Таблица размещения файлов является очень важной информационной струк- турой. Можно сказать, что она представляет собой карту (образ) области данных, в которой описывается состояние каждого участка области данных. Область данных разбивают на так называемые кластеры. Кластер представляет собой один или не- сколько смежных секторов в логическом дисковом адресном пространстве (точнее
– только в области данных). В таблице FAT кластеры, принадлежащие одному файлу (некорневому каталогу), связываются в цепочки. Для указания номера кла- стера и системе управления файлами FAT-16 используется 16-битовое слово, сле- довательно, можно иметь до 2 16
= 65536 кластеров (с номерами от 0 до 65535).
Кластер – это минимальная адресуемая единица дисковой памяти, выделяемая файлу (или некорневому каталогу). Файл или каталог занимает целое число кла- стеров. Последний кластер при этом может быть задействован не полностью, что приведет к заметной потере дискового пространства при большом размере класте- ра. На дискетах кластер занимает один или два сектора, а на жёстких дисках – в за- висимости от объёма раздела (см. табл. 4.3).
Таблица 4.3. Соотношения между размером раздела и размером кластеров в FAT16
Ёмкость раздела,
Мбайт
Количество секторов
в кластере
Размер кластеров,
Кбайт
16-127
4
2
128-255
8
4
256-511
16
8
512-1023
32
16
1024-2047
64
32

195
Номер кластера всегда относится к области данных диска (пространству, заре- зервированному для файлов и подкаталогов). Первый допустимый номер кластера всегда начинается с 2. Номера кластеров соответствуют элементам таблицы раз- мещения файлов.
Логическое разбиение области данных на кластеры как совокупности секторов взамен использования одиночных секторов имеет следующий смысл: прежде всего,
уменьшается размер самой таблицы FAT; уменьшается возможная фрагментация файлов; ускоряется доступ к файлу, так как в несколько раз сокращается длина це- почек фрагментов дискового пространства, выделенных для него.
Однако слишком большой размер кластера ведет к неэффективному использо- ванию области данных, особенно в случае большого количества маленьких файлов.
Как мы только что заметили, в среднем на каждый файл теряется около половины кластера. Из табл. 4.3 следует, что при размере кластера в 32 сектора (объем разде- ла – от 512 Мбайт до 1023 Мбайт), то есть 16 Кбайт, средняя величина потерь на файл составит 8 Кбайт, и при числе файлов в несколько тысяч
1 потери могут со- ставлять более 100 Мбайт. Поэтому в современных файловых системах (к ним,
прежде всего, следует отнести HPFS, NTFS, FAT32 и некоторые другие, поддержи- ваемые ОС семейства UNIX) размеры кластеров ограничиваются (обычно – от 512
байт до 4 Кбайт). В FAT32 проблема решается за счёт того, что собственно сама
FAT в этой файловой системе может содержать до 2 28 кластеров
2
. Наконец, заме- тим, что системы управления файлами, созданные для Windows 9x и Windows NT,
могут работать с разделами размером до 4 Гбайт, на которых установлена система
FAT, тогда как DOS, естественно, с такими разделами работать не сможет.
Достаточно наглядно идея файловой системы с использованием таблицы раз- мещения файлов FAT проиллюстрирована рис.4.7. Из этого рисунка видно, что
1
Например, число 10 000-15 000 файлов (или даже более, особенно когда файлы небольшого размера) на логическом диске с объёмом в 1000 Мбайт встречается достаточно часто.
2
В файловой системе FAT32 в 32-битовом слове, используемом для представления номера кластера, фактически учитываются только 28 разрядов, что приводит к тому, что длина FAT в этой системе не может превышать 2 28
эле- ментов.


196
файл с именем MYFILE.TXT размещается, начиная с восьмого кластера. Всего файл MYFILE.TXT занимает 12 кластеров. Цепочка кластеров (chain) для нашего примера может быть записана следующим образом: 8, 9, 0А, 0В, 15, 16, 17, 19, 1A,
1B, 1C, 1D. Кластер с номером 18 помечен специальным кодом F7 как плохой
(bad), он не может быть использован для размещения данных. При форматирова- нии обычно проверяется поверхность магнитного диска, и те секторы, при кон- трольном чтении с которых происходили ошибки, помечаются в FAT как плохие.
Кластер 1D помечен кодом FF как конечный (последний в цепочке) кластер, при- надлежащий данному файлу. Свободные (незанятые) кластеры помечаются кодом
00; при выделении нового кластера для записи файла берется первый свободный кластер. Поскольку файлы на диске изменяются – удаляются, перемещаются, уве- личиваются или уменьшаются, – то упомянутое правило выделения первого сво- бодного кластера для новой порции данных приводит к фрагментации файлов, то есть данные одного файла могут располагаться не в смежных кластерах, а, порой, в очень удаленных друг от друга, образуя сложные цепочки. Естественно, что это приводит к существенному замедлению работы с файлами.
32>32>
1   ...   12   13   14   15   16   17   18   19   ...   37

Рис.4.7. Основная концепция FAT
Так как FAT используется при доступе к диску очень интенсивно, она обычно загружается в ОЗУ (в буфера ввода/вывода или кэш) и остается там настолько дол- го, насколько это возможно.
00
10
MYFILE.TXT
a
Time
Data
08
Size
Начальный номер кластера
Directory Entry
ID
FF
03
04
05
FF
00
00
09
0A
0B
15
00
00
00
00
00
01
02
03
04
05
06
07
08
09
0A
0B
0C
0D
0E
0F
00
00
00
00
00
16
17
19
F7
1A
1B
1C
0D
FF
00
00

197
В связи с чрезвычайной важностью FAT она обычно хранится в двух идентич- ных экземплярах, второй из которых непосредственно следует за первым. Об- новляются копии FAT одновременно. Используется же только первый экземпляр.
Если он по каким-либо причинам окажется разрушенным, то произойдет обраще- ние ко второму экземпляру. Так, например, утилита проверки и восстановления файловой структуры ScanDisk из ОС Windows 9x при обнаружении несоответствия первичной и резервной копии FAT предлагает восстановить главную таблицу, ис- пользуя данные из копии. Упомянутый корневой каталог отличается от обычного каталога тем, что он, помимо размещения в фиксированном месте логического диска, ещё имеет и фиксированное число элементов. Для каждого файла и каталога в файловой системе хранится информация в соответствии со структурой, изобра- женной в табл.4.4.
Таблица 4.4. Элемент каталога
Размер поля данных, байт
Содержание поля
11
Имя файла или каталога
1
Атрибуты файла
1
Резервное поле
3
Время создания
2
Дата создания
2
Дата последнего доступа
2
Зарезервировано
2
Время последней модификации
2
Дата последней модификации
2
Номер начального кластера в FAT
4
Размер файла

198
Структура системы файлов является иерархической. Это иллюстрируется рис.4.8, из которого видно, что элементом каталога может быть такой файл, кото- рый сам, в свою очередь, является каталогом.
Рис.4.8. Структура системы файлов
Структура загрузочной записи DOS
Сектор, содержащий загрузочную запись, является самым первым на логиче- ском диске (на дискете – имеет физический адрес [0-0-1]). Boot Record состоит, как мы уже знаем, из двух частей – disk parameter block (DPB) и system bootstrap (SB).
Структура блока параметров диска (DPB) служит для идентификации физического и логического форматов логического диска, а загрузчик system bootstrap играет су- щественную роль в процессе загрузки DOS. Эта информационная структура приве- дена в табл. 4.5.
Первые два байта boot record занимает JMP – команда безусловного перехода в программу SB. Третий байт содержит код 90Н (NOP – нет операции). Далее рас- полагается восьмибайтовый системный идентификатор, включающий информацию о фирме-разработчике и версии операционной системы. Затем следует DPB, a по- сле него – SB.
Идентификатор
дисковода
Корневой каталог
(метка тома)
Файл А
Каталог
Файл B
Каталог
Файл C
Файл D
Каталог
Файл E


199
Таблица 4.5. Структура загрузочной записи Boot Record для FAT16
Смещение поля,
байт
Длина поля,
байт
Обозначение поля
Содержимое поля
00Н(0)
3
JUMP 3EH
Безусловный переход на начало SB
0ЗН(З)
8
Системный идентификатор
0ВН(11)
2
SectSize
Размер сектора, байт
0DH (13)
1
ClastSize
Число секторов в кластере
0ЕН (14)
2
ResSecs
Число зарезервированных секторов
10Н (16)
1
FATcnt
Число копий FAT
11Н (17)
2
RootSize
Максимальное число элементов Rdir
13Н (19)
2
TotSecs
Число секторов на логическом диске, если его
размер не превышает 32 Мбайт, иначе 0000Н
15Н (21)
1
Media
Дескриптор носителя
16Н (22)
2
FATsize
Размер FAT, секторов
18Н (24)
2
TrkSecs
Число секторов на дорожке
1АН (26)
2
HeadCnt
Число рабочих поверхностей
1СН (28)
4
HidnSecs
Число скрытых секторов
20Н (32)
4
Число секторов на логическом диске, если его
размер превышает 32 Мбайт
24Н (36)
1
Тип логического диска (00Н – гибкий, 80Н – жест-
кий)
25Н (37)
1
Пусто (резерв)
26Н (38)
1
Маркер с кодом 29Н
27Н (39)
4
Серийный номер тома
2ВН (43)
11
Метка тома
36Н(54)
8
Имя файловой системы
3ЕН (62)
System bootstrap
1FEH(510)
2
Сигнатура (слово АА55Н)
Для работы с загрузочной записью удобно использовать широко известную утилиту Disk Editor из комплекта утилит Питера Нортона. Эта утилита снабжена встроенной системой подсказок и необходимой справочной информацией. Исполь- зуя её, можно сохранять, модифицировать и восстанавливать загрузочную запись, а также выполнять много других операций. Достаточно подробно работа с этой ути- литой описана в книге [9].

200
Таблица 4.6. Структура загрузочной записи boot record для FAT32
Смещение поля, байт
Длина поля,
байт
Обозначение
поля
Содержимое поля
00Н (0)
3
JUMP ЗЕН
Безусловный переход на начало SB
03Н (3)
8
Системный идентификатор
0ВН (11)
2
SectSize
Размер сектора, байт
0DH (13)
1
ClastSize
Число секторов в кластере
0ЕН (14)
2
ResSecs
Число зарезервированных секторов,
для FAT32 равно 32
10Н (16)
1
FATcnt
Число копий FAT
11Н(17)
2
RootSize
0000Н
13Н (19)
2
TotSecs
0000H
15Н(21)
1
Media
Дескриптор носителя
16Н (22)
2
FATsize
0000Н
18Н (24)
2
TrkSecs
Число секторов на дорожке
1АН (26)
2
HeadCnt
Число рабочих поверхностей
1СН(28)
4
HidnSecs
Число скрытых секторов (располагаются перед загру-
зочным сектором). Используется при загрузке для вы-
числения абсолютного смещения корневого каталога и
данных
20Н(32)
4
Число секторов на логическом диске
24Н(36)
4
Число секторов в таблице FAT
28Н(37)
2
Расширенные флаги
2АН (38)
2
Версия файловой системы
2СН (39)
4
Номер кластера для первого кластера корневого
Каталога
34Н(43)
2
Номер сектора с резервной копией загрузочного
Сектора
36Н (54)
12
Зарезервировано
Загрузочные записи других операционных систем отличаются от рассмотрен- ной. Так, например, в загрузочном секторе для тома с FAT32 в блоке DPB содер- жатся дополнительные поля, а те поля, что находятся в привычном для системы
FAT16 месте, перенесены. Поэтому ОС, в которой имеется возможность работать с файловой системой FAT16, но нет системы управления файлами, понимающей спецификации FAT32, не может читать данные с томов, отформатированных под файловую систему FAT32. В загрузочном секторе для файловой системы FAT32
по-прежнему байты 00Н по 0АН содержат команду перехода и OEM ID, а в байтах


201 0ВН по 59Н содержатся данные блока DPB. Отличие заключается именно в не- сколько другой структуре блока DPB; его содержимое приведено
1
в табл. 4.6.
Файловые системы VFAT и FAT32
Одной из важнейших характеристик исходной FAT было использование имён файлов формата «8.3», в котором 8 символов отводится на указание имени файла и
3 символа – для расширения имени. К стандартной FAT (имеется в виду прежде всего реализация FAT16) добавились ещё две разновидности, используемые в ши- роко распространенных операционных системах Microsoft (конкретно – в Windows
95 и Windows NT): VFAT (виртуальная FAT) и FAT32, используемая в одной из редакций ОС Windows 95 и Windows 98. Ныне эта файловая система (FAT32) под- держивается и такими ОС, как Windows Millennium Edition, и всеми ОС семейства
Windows 2000. Имеются реализации систем управления файлами для FAT32, Win- dows NT и ОС Linux.
Файловая система VFAT впервые появилась в Windows for Workgroups 3.11 и была предназначена для выполнения файлового ввода/вывода в защищённом ре- жиме (см. раздел «Реальный и защищенный режимы работы процессора», глава 3).
С выходом Windows 95 в VFAT добавилась поддержка длинных имён файлов (long file name, LFN). Тем не менее, VFAT сохраняет совместимость с исходным вариан- том FAT; это означает, что наряду с длинными именами в ней поддерживаются имена формата «8.3», а также существует специальный механизм для преобразова- ния имен «8.3» в длинные имена, и наоборот. Именно файловая система VFAT
поддерживается исходными версиями Windows 95, Windows NT 4. При работе с
VFAT крайне важно использовать файловые утилиты, поддерживающие VFAT во- обще и длинные имена в частности. Дело в том, что более ранние файловые утили- ты DOS запросто модифицируют то, что кажется им исходной структурой FAT.
Это может привести к потере или порче длинных имен из таблицы FAT, поддержи- ваемой VFAT (или FAT32). Следовательно, для томов VFAT необходимо пользо-
1
Поскольку файловая система FAT32 нынче имеет очень широкое распространение, мы считаем, что информация,
приведенная в табл. 4.6, может быть полезна.

202
ваться файловыми утилитами, которые понимают и сохраняют файловую структу- ру VFAT.
В исходной версии Windows 95 основной файловой системой была 32–разряд- ная VFAT. VFAT может использовать 32-разрядные драйверы защищённого режи- ма или 16-разрядные драйверы реального режима. При этом элементы FAT остают- ся 12- или 16-разрядными, поэтому на диске используется та же структура данных,
что и в предыдущих реализациях FAT. VFAT обрабатывает все обращения к жёст- кому диску и использует 32-разрядный код для всех файловых операций с диско- выми томами.
Основными недостатками файловых систем FAT и VFAT являются большие потери на кластеризацию при больших размерах логического диска и ограничения на сам размер логического диска. Это привело к разработке новой реализации фай- ловой системы с использованием той же идеи использования таблицы FAT. Поэто- му в Microsoft Windows 95 OEM Service Release 2 (эта версия Windows 95 часто на- зывается Windows 95 OSR2) на смену системе VFAT пришла файловая система
FAT32. FAT32 является полностью самостоятельной 32-разрядной файловой сис- темой и содержит многочисленные усовершенствования и дополнения по сравне- нию с предыдущими реализациями FAT.
Принципиальное отличие заключается в том, что FAT32 намного эффективнее расходует дисковое пространство. Прежде всего, система FAT32 использует кла- стеры меньшего размера по сравнению с предыдущими версиями, которые ограни- чивались 65 535 кластерами на том (соответственно, с увеличением размера диска приходилось увеличивать и размер кластеров). Следовательно, даже для дисков размером до 8 Гбайт FAT32 может использовать 4-килобайтные кластеры. В ре- зультате по сравнению с дисками FAT 16 экономится значительное дисковое про- странство (в среднем 10-15 %) [53].
FAT32 также может перемещать корневой каталог и использовать резервную копию FAT вместо стандартной. Расширенная загрузочная запись FAT32 позволяет создавать копии критических структур данных; это повышает устойчивость дисков
FAT32 к нарушениям структуры FAT по сравнению с предыдущими версиями.