Главная » Ассемблер, Железо » Организация данных на жестких дисках

0

Данные на гибком диске организованы в виде одного логического диска, а жесткие диски имеют более сложную структуру. Как уже было указано выше, пространство на жестком диске может быть организовано в виде одного или нескольких разделов, а разделы могут содержать один или несколько логических дисков. Кроме того, разделы могут быть как совместимыми, так и несовместимыми с операционными системами Microsoft, а разделы Microsoft могут иметь различную внутреннюю структуру (ниже будут рассматриваться только разделы со структурой FAT).

Независимо от установленного на диске набора операционных систем (куда могут входить не только системы Microsoft, но и системы других типов), для управления разделами диска используется структура в виде упорядоченного однонаправленного списка. В начальном секторе жесткого диска (в секторе с абсолютным номером 0) размещается главная загрузочная запись (Master Boot Record, сокращенно MBR). В состав MBR входят загрузочная запись (MSB), которая в старой документации именовалась также системно-независимым загрузчиком (NSB), таблица разделов (Partition Table, сокращенно РТ) и типовая сигнатура загрузочного сектора (AA55h).

MSB обеспечивает передачу управления загрузочному сектору активного раздела, a MBR содержит список указателей на разделы4 диска. Внутренняя структура MBR показана в табл. 6.38.

Таблица 6.38. Структура главной загрузочной записи и таблицы разделов

Смещение

Размер

Описание

 

поля, байт

 

OOOh

446

Загрузочная запись (MSB)

1 BEh

16

Описатель раздела 1

1CEh

16

Описатель раздела 2

1DEh

16

Описатель раздела 3

1EEh

16

Описатель раздела 4

1FEh

2

Сигнатура таблицы разделов (значение AA55h)

Таблица разделов является вершиной дерева разделов (рис. 6.7), разделы в котором обычно размещаются в следующем порядке:

•      первичный раздел Microsoft (Primary Partition);

•      расширенный раздел Microsoft (Extended Partition);

•      разделы других операционных систем (Non-DOS Partitions). Первичный раздел присутствует на диске в обязательном порядке, а все остальные создаются по усмотрению пользователя. Размеры всех разделов также определяются пользователем в процессе выполнения процедуры начальной разметки диска FDISK. Структура описателя раздела показана в табл. 6.39. Описатель содержит признак активности (то есть того, должна ли операционная система загружаться из данного раздела), координаты начала раздела в формате CHS, код типа раздела (см. табл. 6.26), координаты конца раздела в формате CHS, координаты начала раздела в формате LBA и размер раздела (в 512-байтных секторах).

Таблица 6.39. Структура описателя раздела

Смещение

Размер поля, байт

Описание

00h

1

Признак активности (0 — раздел не активный, 80h — раздел активный)

01 h

1

Номер поверхности диска, с которой начинается раздел

02h

2

Номер цилиндра и номер сектора, с которых начинается раздел’

04h

1

Код типа раздела (см. табл. 6.26)

05h

1

Номер поверхности диска, на которой заканчивается раздел

06h

2

Номер цилиндра и номер сектора, которыми заканчивается раздел’

08h

4

Абсолютный (логический) номер начального сектора раздела

OCh

4

Размер раздела (число секторов)

Индекс 1 означает, что номера цилиндра и сектора задаются в формате прерывания Int 13h, то есть биты 0-5 содержат номер сектора, биты 6-7 — старшие два бита 10-разрядного номера цилиндра, биты 8-15 — младшие восемь битов номера цилиндра.

Код раздела используется для определения наличия и положения на диске основного и расширенного разделов (порядок «основной раздел — расширенный раздел — разделы не-DOS» по стандарту Microsoft должен соблюдаться всегда, но на практике возможны разнообразные варианты). После обнаружения нужного раздела его размер и координаты можно извлечь из соответствующих полей описателя. Независимо от используемого физического способа адресации координаты задаются и в формате CHS, и в формате LBA (поскольку функции DOS и BIOS используют оба формата). В табл. 6.40 перечислены только коды разделов Microsoft, а за операционными системами других фирм зарезервированы следующие коды:

•      02П – раздел СР/М;

•      03h — раздел Xenix;

•      07h — раздел OS/2 (файловая система HPFS).

Если в поле кода раздела записан 0, то описатель считается пустым, то есть он не определяет на диске никакого раздела.

Таблица 6.40. Коды разделов операционных систем Microsoft

Код

раздела

Вид раздела

Размер

Тип FAT

Ваеден в ОС

01h

Основной

0-15 Мбайт

FAT 12

MS-DOS 2.0

04h

Основной

16-32 Мбайт

FAT 16

MS-DOS 3.0

05h

Расширенный

0-2 Гбайт

MS-DOS 3.3

06h

Основной

32 Мбайт-2 Гбайт

FAT 16

MS-DOS 4.0

OBh

Основной

512 Мбайт-2 Тбайт

FAT32

OSR2

OCh

Расширенный

512 Мбайт-2 Тбайт

FAT32

OSR2

OEh

Основной

32 Мбайт-2 Гбайт

FAT 16

Windows 95

OFh

Расширенный

0-2 Гбайт

Windows 95

Описатель первичного раздела указывает сразу на загрузочный сектор логического диска (в первичном разделе всегда имеется один и только один диск), а описатель расширенного раздела — на список логических дисков (рис. 6.8), составленный из структур, которые именуются вторичными MBR (Secondary MBR, сокращенно SMBR).

Рис. 6.8. Список разделов DOS на жестком диске

Свой блок SMBR имеется у каждого диска расширенного раздела. SMBR имеет структуру, аналогичную MBR, но загрузочная запись у него отсутствует (заполнена нулями), а из четырех полей описателей используются только два. Первый описатель раздела при этом указывает на логический диск (в поле кода должно стоять значение «основной раздел», соответствующее типу FAT логического диска),

а второй — на следующую структуру SMBR в списке (в поле кода должно стоять какое-либо значение типа «расширенный раздел»). Последний SMBR списка содержит во втором элементе нулевой код раздела.

Чтобы получить доступ к данным, размещенным на логическом диске в расширенном разделе, нужно вначале произвести поиск по списку SMBR. При этом следует учитывать, что операционные системы Microsoft распределяют буквы-имена дисков следующим образом:

•       имена А: и В: закреплены за гибкими дисками независимо от того, имеются ли они в данной конфигурации компьютера;

•       разделы жестких дисков получают имена, начиная с С:, причем вначале имена получают основные разделы, а уже затем, по второму кругу, именуются логические диски расширенных разделов;

•       порядок раздачи имен основным разделам следующий: Master- диск канала 0, Slave-диск канала 0, Master-диск канала 1, Slave- диск канала 1 и т. д.;

•       порядок раздачи имен логическим дискам расширенных разделов такой: именуются по порядку все тома Master-дискэ канала  О, затем тома Slave-дискэ канала 0, затем Master-диска канала 1, затем Slave-диска канала 1 и т. д.;

•       разделы, не имеющие организации типа FAT, просто игнорируются (становятся невидимыми), и имена им не выделяются.

При одновременном использовании нескольких операционных систем следует иметь в виду, что старые системы не распознают разделы, которые имеют новую (введенную после их создания) внутреннюю организацию. Например, MS-DOS версии 6.22 игнорирует логические диски с системой FAT32, то есть не выделяет им имена и не может с ними работать.

Источник: Кулаков В. К90 Программирование на аппаратном уровне: специальный справочник (+дискета). 2-е издание. — СПб.: Питер, 2003. — 847 е.: ил.

По теме:

  • Комментарии