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

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

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

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

Добавлен: 12.01.2024

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

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

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

186
ет установить, что все линии передачи данных могут передавать и нули, и едини- цы.
Таблица partition table описывает размещение и характеристики имеющихся на винчестере разделов. Можно сказать, что эта таблица разделов – одна из наибо- лее важных структур данных на жестком диске. Если эта таблица повреждена, то не только не будет загружаться операционная система (или одна из операционных систем, установленных на винчестере), но перестанут быть доступными и данные,
расположенные на винчестере, особенно если жёсткий диск был разбит на не- сколько разделов.
Смещение (Offset)
Размер (Size)
Содержимое (Contents)
0
446
Программа анализа Partition Table и загрузки System
Bootstrap с активного раздела жесткого диска
+1BEh
16
1   ...   11   12   13   14   15   16   17   18   ...   37

Partition 1 entry (Описатель раздела)
-1CEh
16
Partition 2 entry
+1DEh
16
Partition 3 entry
+1EEh
16
Partition 3 entry
+1FEh
16
Сигнатура (AA55h)
Рис.4.4. Структура MBR
Упрощенно структура MBR представлена на рис. 4.4. Из неё видно, что в на- чале этого сектора располагается программа анализа таблицы разделов и чтения первого сектора из активного раздела диска. Сама таблица partition table располага- ется в конце MBR, и для описания каждого раздела в этой таблице отводится по 16
байтов. Первым байтом в элементе раздела идет флаг активности раздела boot indi- cator (0 – не активен, 128 (80Н) – активен). Он служит для определения, является ли раздел системным загрузочным и есть ли необходимость производить загрузку операционной системы с него при старте компьютера. Активным может быть толь- ко один раздел. За флагом активности раздела следует байт номера головки, с ко- торой начинается раздел. За ним следует два байта, означающие соответственно номер сектора и номер цилиндра загрузочного сектора, где располагается первый

187
сектор загрузчика операционной системы. Затем следует кодовый идентификатор
System ID (длиной в один байт), указывающий на принадлежность данного раздела к той или иной операционной системе и установке на нём соответствующей файло- вой системы. В табл. 4.1 приведены некоторые (наиболее известные) идентифика- торы.
Таблица 4.1. Сигнатуры (типы) разделов
System ID
Тип раздела
System ID
Тип раздела
00
Empty («пустой» раздел)
41
PPC PreP Boot
01
FAT12
42
SFS
02
XENIX root
4D
QNX 4.x
03
XENIX usr
4E
QNX 4.x 2nd part
04
FAT16 (<32 Мбайт)
4F
QNX 4.x 3nd part
05
Extended
50
OnTrack DM
06
FAT16
51
OnTrack DM6 Aux
07
HPFS/NTFS
52
CP/M
08
AIX
53
OnTrack DM6
09
AIX bootable
54
OnTrack DM6
0A
OS/2 Boot Manager
55
EZ Drive
0B
Win95 FAT32
56
Golden Bou

Win95 FAT32 LBA
5C
Priam Edisk

Win95 FAT16 LBA
61
Speed Stor
0F
Win95 Extended
64
Novell Netware
10
OPUS
65
Novell Netware
11
Hidden FAT12
75
PC/IX
12
Compaq diagnost
80
Old Minix
14
Hidden FAT16 (<32 Мбайт)
82
Linux swap
16
Hidden FAT16
83
Linux native
17
Hidden HPFS/NTFS
84
OS/2 hidden C:
18
AST Windows swap
85
Linux Extended
1B
Hidden Win95 Fat
86
NTFS volume set
1C
Hidden Win95 Fat
A5
BSD/386
1E
Hidden Win95 Fat
A6
Open BSD
24
NEC DOS
A7
Next Step
3C
Partition Magic
ЕВ
Be OS
40
Venix 80286
За байтом кода операционной системы расположен байт номера головки конца раздела, за которым идут два байта – номер сектора и номер цилиндра последнего сектора данного раздела. Ниже представлен формат элемента таблицы разделов.


188
Таблица 4.2. Формат элемента таблицы разделов
Название записи элемента Partition Table
Длина, байт
Флаг активности раздела
1
Номер головки начала раздела
1
Номер сектора и номер цилиндра загрузочного сектора раздела
2
Кодовый идентификатор операционной системы
1
Номер головки конца раздела
1
Номер сектора и цилиндра последнего сектора раздела
2
Младшее и старшее двухбайтовое слово относительного номера начального
сектора
4
Младшее и старшее двухбайтовое слово размера раздела в секторах
4
Номера сектора и номер цилиндра секторов в разделах занимают по 6 и 10 бит соответственно. Ниже представлен формат записи, содержащей номера сектора и цилиндра.
Биты номера цилиндра
Биты номера сектора
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
Как мы уже сказали, загрузчик non-system bootstrap служит для поиска с по- мощью partition table активного раздела, копирования в оперативную память ком- пьютера загрузчика system bootstrap из выбранного раздела и передачи ему управ- ления, что позволяет осуществить загрузку ОС.
Вслед за сектором MBR размещаются собственно сами разделы (рис. 4.5). В
процессе начальной загрузки сектора MBR, содержащего таблицу partition table,
работают программные модули BIOS. Начальная загрузка считается выполненной корректно только в том случае, когда таблица разделов содержит допустимую ин- формацию.
В MS-DOS в первичном разделе может быть сформирован только один логи- ческий диск, а в расширенном – любое их количество. Каждый логический диск
«управляется» своим логическим приводом. Каждому логическому диску на вин- честере соответствует своя (относительная) логическая нумерация. Физическая же адресация жесткого диска сквозная.

189
Первичный раздел DOS включает только системный логический диск без ка- ких-либо дополнительных информационных структур.
Рис.4.5. Разбиение диска на разделы
Расширенный раздел DOS содержит вторичную запись MBR (secondary MBR,
SMBR), в состав которой вместо partition table входит таблица логического диска
(LDT, logical disk table), ей аналогичная. Таблица LDT описывает размещение и ха- рактеристики раздела, содержащего единственный логический диск, а также может специфицировать следующую запись SMBR. Следовательно, если в расширенном разделе DOS создано К логических дисков, то он содержит К экземпляров SMBR,
Первичный раздел
Расширенный раздел
Не использован
Не использован
Первая расширенная
таблица разделов
Логический диск D:
Адрес таблицы для диска
E:
Не использован
Не использован
Логический диск E:
0–конец цепочки
Не использован
Не использован
Главная таблица
разделов
Master Boot Record
Загрузочный сектор
Расширенная таблица
разделов
Загрузочный сектор
Расширенная таблица
разделов
Загрузочный сектор
Первичный
раздел DOS
(диск С:)
Расширенный
раздел DOS с
логическими
дисками
D: и E:


190
связанных в список. Каждый элемент этого списка описывает соответствующий логический диск и ссылается (кроме последнего) на следующий элемент списка.
Утилиты, позволяющие разбить диск на разделы и тем самым сформировать как partition table, так и, возможно, списковую структуру из LDT (подобно тому,
как это изображено на рис. 4.6), обычно называются FDISK (от form disk), хотя есть утилиты и с другим названием, умеющие выполнить разбиение диска. Напомним,
что FDISK от MS-DOS позволяет создать только один primary-раздел и один ex- tended, который, в свою очередь, предлагается разделить на несколько логических дисков. Аналогичные утилиты других ОС имеют существенно больше возможно- стей. Так, например, FDISK системы OS/2 позволяет создавать несколько primary–
разделов, причем их можно выделять не только последовательно, начиная с первых цилиндров, но и с конца свободного дискового пространства. Это удобно, если нужно исключить из работы некоторый диапазон дискового пространства (напри- мер, из-за дефектов на поверхности магнитного диска). С помощью этой утилиты можно установить и менеджер загрузки (boot-менеджер).
Прежде чем перейти к boot-менеджерам, рассмотрим ещё раз процесс загрузки
ОС. Процедура начальной загрузки (bootstrap loader) вызывается как программное прерывание (BIOS INT 19h). Эта процедура определяет первое готовое устройство из списка разрешенных и доступных (гибкий или жесткий диск, в современных компьютерах это могут быть также CD-ROM, привод ZIP-drive компании Iomega,
сетевой адаптер или другое устройство) и пытается загрузить с него в ОЗУ корот- кую главную программу-загрузчик. Для винчестеров – это загрузчик non-system bootstrap из MBR, и ему передаётся управление. Главный загрузчик определяет на диске активный раздел, загружает его собственный загрузчик (system bootstrap) и передаёт управление ему. И, наконец, этот загрузчик загружает необходимые фай- лы операционной системы и передаёт ей управление. Далее операционная система выполняет инициализацию подведомственных ей программных и аппаратных средств. Она добавляет новые сервисы, вызываемые, как правило, тоже через ме- ханизм программных прерываний, и расширяет (или заменяет) некоторые сервисы
BIOS. Необходимо отметить, что в современных мультипрограммных операцион-

191
ных системах большинство сервисов BIOS, изначально расположенных в ПЗУ, как правило, заменяются собственными драйверами, поскольку они должны работать в режиме прерываний, а не в режиме сканирования готовности.
Соответственно рассмотренному процессу загрузки, мы каждый раз при за- пуске компьютера будем попадать в одну и ту же ОС. Но иногда это нас не устраи- вает. Так называемые boot-менеджеры (менеджеры загрузки) предназначены для того, чтобы пользователь мог выбрать среди нескольких установленных на компь- ютере ОС нужную и передать управление загрузчику этой выбранной ОС. Суще- ствует большое количество таких менеджеров, хороший обзор таких программ приведен в работе [78]. В ней рекомендуется в качестве менеджера загрузки ис- пользовать System commander. Однако этот менеджер должен располагаться в ак- тивном разделе с файловой системой FAT, что в наше время нельзя признать хо- рошим решением. На наш взгляд, одним из лучших долгое время был Boot manager компании IBM, входящий в состав утилит OS/2. Для его размещения создается от- дельный primary-раздел, который, естественно, и является активным (он помечает- ся как startable). Раздел для Boot-менеджера OS/2 занимает всего один цилиндр и может размещаться не только на нулевом (начальном) цилиндре, но и на послед- нем цилиндре. В этом разделе не организуется никакой файловой системы, по- скольку обращение к менеджеру идет с использованием абсолютной адресации, а сам Boot manager представляет собой простейшую абсолютную двоичную про- грамму. Установка Boot manager осуществляется из программы FDISK. При этом появляется возможность указать, какие разделы могут быть загружаемыми (они помечаются как bootable), то есть в каких разделах на первом логическом секторе будут размещены программы загрузки ОС. Загружаемыми могут быть как primary-,
так и extended-разделы. При этом, естественно, имеется возможность указать как время на принятие решения, так и загрузку некоторой ОС «по умолчанию». Удоб- ным является и то, что при разбиении диска на разделы можно вообще не создавать primary-разделов. Это особенно важно, если в компьютере установлено более од- ного дискового накопителя либо если мы подготавливаем винчестер, который дол- жен достаточно часто переноситься с одного компьютера на другой. Дело в том,


192
что в большинстве ОС принято следующее правило именования логических дис- ков: первый логический диск обозначается литерой С:, второй – D: и т. д. При этом литеру С: получает активный primary-раздел. Однако если к одному винчестеру в персональном компьютере подключить второй винчестер и он тоже имеет актив- ный primary-раздел, то этот primary-раздел второго винчестера получит литеру D:,
отодвигая логический диск D: первого винчестера на место диска Е: (и т. д. по це- почке). Если же второй (и последующие) винчестер не имеет primary-раздела с ус- тановленной на нем файловой системой, которую данная ОС знает, то «именова- ние» логических дисков первого винчестера не нарушается. Естественно, что логи- ческие диски второго винчестера получают литеры логических дисков вслед за дисками первого винчестера. Boot manager OS/2, создавая только логические диски на винчестере, на самом деле создает и «пустой» primary-раздел, однако этот раз- дел не становится активным и не получает статус логического диска. К сожалению,
все более популярная в наши дни ОС Windows 2000 теперь не только снимает флаг активности с раздела, в котором размещен Boot manager (как это происходило при инсталляции любых ОС от компании Microsoft), но и физически уничтожает его двоичный код. Замена драйвера FASTFAT.SYS системы Windows 2000 на более раннюю версию (в бета-версии ОС Windows 2000 система не уничтожала код Boot manager) помогает лишь до установки Service pack. Поэтому рекомендовать этот менеджер загрузки уже нельзя. Из последних менеджеров загрузки, пожалуй, наи- более мощным является Boot star, но его нельзя рекомендовать неподготовленным пользователям.
Одной из самых известных и до сих пор достаточно часто используемых ути- лит, с помощью которой можно посмотреть и отредактировать таблицу разделов, а также выполнить и другие действия, связанные с изучением и исправлением дан- ных как на дискете, так и на винчестере, является программа Disk editor из ком- плекта нортоновских утилит. Работа с ней достаточно подробно изложена в книге
[9]. Следует, однако, заметить, что Disk editor, с одной стороны, очень мощное средство, и поэтому его следует использовать с большой осторожностью, а с дру- гой стороны – эта утилита работает только в среде DOS. На сегодняшний день

193
главным недостатком этой утилиты является ограничение на максимальный размер диска в 8 Гбайт.
Надо признать, что в последнее время появилось большое количество утилит,
которые предоставляют возможность более наглядно представить разбиение диска на разделы, поскольку в них используется графический интерфейс. Эти программы успешно и корректно работают с наиболее распространенными типами разделов
(разделы под FAT, FAT32, NTFS). Однако созданы они в основном для работы в среде Win32API, что часто ограничивает возможность их использования. Одной из самых известных и мощных программ для работы с разделами жесткого диска яв- ляется Partition Magic фирмы Power Quest.
Файловая система FAT
Как мы уже отмечали, аббревиатура FAT (file allocation table) расшифровыва- ется как «таблица размещения файлов». Этот термин относится к линейной таб- личной структуре со сведениями о файлах – именами файлов, их атрибутами и другими данными, определяющими местонахождение файлов (или их фрагментов)
в среде FAT. Элемент FAT определяет фактическую область диска, в которой хра- нится начало физического файла.
В файловой системе FAT логическое дисковое пространство любого логиче- ского диска делится на две области (рис. 4.6): системную область и область дан-
ных.
Рис.4.6. Структура логического диска
Системная область логического диска создается и инициализируется при фор- матировании, а впоследствии обновляется при манипулировании файловой струк- турой. Область данных логического диска содержит файлы и каталоги, подчинён- ные корневому. Она, в отличие от системной области, доступна через пользова-
R
Sec
Fat1
Fat2
Dir
Каталоги и файлы
Системная область
Область данных