Логическая структура магнитного диска

Для того чтобы можно было загрузить с магнитного диска операционную систему, а уже с ее помощью организовать работу с файлами, были приняты специальные системные соглашения о структуре диска. Хранение данных на магнитном диске можно организовать различными способами. Можно поделить все дисковое про­странство на несколько частей — разделов (partitions), а можно его и не делить. Деление НЖМД на разделы позволяет организовать на одном физическом уст­ройстве несколько логических; в этом случае говорят о логических дисках. Следу­ет, однако, заметить, что не во всех операционных системах используется понятие логического диска. Так, UNIX-системы не имеют логических дисков.

Разделение всего дискового пространства на разделы полезно по нескольким со­ображениям. Во-первых, это структурирует хранение данных. Например, выделе-


Организация внешней памяти на магнитных дисках___________________________ 147

ние отдельного раздела под операционную систему и программное обеспечение и другого раздела под данные пользователей позволяет отделить последние от си­стемных файлов и не только повысить надежность системы, но и сделать более удобным ее обслуживание. Во-вторых, на каждом разделе может быть организова­на своя файловая система, что иногда бывает необходимо. Например, при установ­ке операционной системы Linux нужно иметь не менее двух разделов, поскольку файл подкачки (страничный файл) должен располагаться в отдельном разделе. На­конец, в ряде случаев на компьютере может потребоваться установка более одной операционной системы.

Для того чтобы системное программное обеспечение получило информацию о том, как организовано хранение данных на каждом конкретном накопителе, нужно раз­местить в одном из секторов соответствующие данные. Даже если НЖМД исполь­зуется как единственный логический диск, все равно нужно указать, что имеется всего один диск, и его размер. Структура данных, несущая информацию о логичес­кой организации диска, вместе с небольшой программой, с помощью которой можно ее проанализировать, а также найти и загрузить в оперативную память программу загрузки операционной системы, получила название главной загрузочной записи (Master Boot Record, MBR). MBR располагается в самом первом секторе НЖМД, то есть в секторе с координатами 0-0-1. Программа, расположенная в MBR, носит название внесистемного загрузчика (Non-System Bootstrap, NSB).

Вследствие того что сектор состоит только из 512 байт и помимо программы в нем должна располагаться информация об организации диска, внесистемный загруз­чик очень прост, а структура данных, называемая таблицей разделов (Partition Table, РТ), занимает всего 64 байт. Таблица разделов располагается в MBR по смещению Ох 1 BE и содержит четыре элемента. Структура записи элемента таблицы разделов приведена в табл. 5.1. Каждый элемент этой таблицы описывает один раздел, при­чем двумя способами: через координаты C-H-S начального и конечного секторов, а также через номер первого сектора в спецификации LBA2 (Logical Block Ad­dressing) и общее число секторов в разделе. Важно отметить, что каждый раздел начинается с первого сектора на заданных цилиндре и поверхности и имеет размер не менее одного цилиндра. Поскольку координаты MBR равны 0-0-1, то первый сектор первого раздела в большинстве случаев получается равным 0-1-1 (в коор­динатах LBA это будет сектор 64).

Первым байтом в элементе таблицы разделов идет флаг активности раздела Boot Indicator (значение 0 — не активен, 128 (80(h)) — активен). Он позволяет опреде­лить, является ли данный раздел системным загрузочным. В результате процесс загрузки операционной системы осуществляется путем загрузки первого сектора

1 Практика показывает, что Linux и другие UNIX-подобные системы лучше всего устанавливать, раз­бив НЖМД на 6 разделов. Раздел подкачки (swap partition) служит для размещения файла подкач­ки. К основному (корневому) разделу, обозначаемому символом /, монтируются разделы /usr, /home, /var и /boot. Такое разбиение диска на разделы считается наиболее технологичным.

2 Способ указания блока данных, согласно которому все секторы диска считаются пронумерованны­ми по следующему правилу: LBA= с х Н + h) x S + s - 1. Здесь Н — это максимальное число рабочих поверхностей в цилиндре; S — количество секторов на одной дорожке; с, h и s — «координаты» иско­мого сектора.


148_____________ Глава 5. Управление вводом-выводом в операционных системах

с такого активного раздела и передачи управления на расположенную в нем про­грамму, которая и продолжает загрузку. Активным может быть только один раз­дел, и это обычно проверяется программой NSB, расположенной в MBR.

Таблица 5.1. Формат элемента таблицы разделов

Название записи элемента таблицы разделовДлина, байт

Флаг активности раздела 1

Номер головки начала раздела 1

Номера сектора и цилиндра загрузочного сектора раздела 2

Кодовый идентификатор операционной системы 1

Номер головки конца раздела 1

Номера сектора и цилиндра последнего сектора раздела 2

Младшее и старшее двухбайтовые слова относительного номера
начального сектора 4

Младшее и старшее двухбайтовые слова размера раздела в секторах 4

За флагом активности раздела следует байт номера головки, с которой начинается раздел. За ним следуют два байта, означающие соответственно номер сектора и но­мер цилиндра загрузочного сектора, где располагается первый сектор загрузчика операционной системы. Затем следует кодовый идентификатор System ID (дли­ной в один байт), указывающий на принадлежность данного раздела к той или иной операционной системе и на установку в этом разделе соответствующей файловой системы. Поскольку крайне сложно найти информацию по этим кодовым иденти­фикаторам, которыми помечаются разделы дисков, в табл. 5.2 приведены не пол­тора десятка наиболее часто встречающихся, а все известные сигнатуры (кодовые идентификаторы).

Таблица 5.2.Кодовые идентификаторы разделов диска

Код Описание Код Описание

OOOh Раздел не использован 085h Linux Extended, XOSL

001 h FAT12 086h FAT16 volume set

002h Xenix root 087h NTFS volume set

003h Xenix/usr 08Ah AiR-Boot

004h FAT16(<32Mb) 08Bh FAT32 volume set

005h Extended 08Ch FAT32 LBA volume set

006h FAT16 08Dh Free FDISKFAT12

007h NTFS, HPFS 08Eh Linux LVM

008h AIXBoot 090h Free FDISK FAT16 (<32Mb)

009h AIXData 091h Free FDISK Extended

OOAh OS/2 Boot Manager 092h Free FDISK FAT16

OOBh FAT32 093h Amoeba native


Организация внешней памяти на магнитных дисках___________________________ 149

Код Описание Код Описание

OOCh FAT32LBA 094h Amoeba BBT

OOEh FAT16LBA 095h MITEXOPC

OOFh Extended LBA 097h Free FDISK FAT32

010h Opus 098h Free FDISK FAT32 LBA

011h Hidden FAT12 099h DCE376

012h Compaq Setup 09Ah Free FDISK FAT 16 LBA

013h B-TRON 09Bh Free FDISK Extended LBA

014h Hidden FAT16 (<32Mb) 09Fh BSDI

016h Hidden FAT16 OAOh Laptop hibernation

017h Hidden NTFS, HPFS 0A1h NEC hibernation

018h AST Windows Swap 0A5h Free BSD, BSD/386

019h Photon 0A6h Open BSD

01 Bh Hidden FAT32 0A7h NextStep

01Ch Hidden FAT32 LBA 0A8h Apple UFS

O1Eh Hidden FAT16 LBA 0A9h Net BSD

020h OFS1 OAah Olivetti service

022h Oxygen OAbh Apple Booter

024h NEC DOS OAeh ShagOS native

035h OS/2JFS OAfh ShagOS swap

035h Theos3.x OBOh BootStar Dummy

039h Theos 4.x spanned, Plan9 0B7h BSDI old native

03Ah Theos 4.x 4G 0B8h BSDI old swap

03Bh Theos 4.x Extended OBBh OS Selector

03Ch Partition Magic OBeh Solaris 8 boot

040h Venix 80286 OCOh CTOS, REAL/32 smal

041h Minix, PPC Boot 0C1h DR-DOSFAT12

042h LinuxSwp/DR-DOS, SFS, 0C6h DR-DOS FAT16, FAT16 set

Win2K DDM corrupt

043h LinuxNat/DR-DOS 0C2h Hidden Linux swap

045h Eumel/Ergos45h, Boot-US 0C3h Hidden Linux native

046h Eumel/Ergos 46h 0C4h DR-DOS FAT16 (<32Mb)

047h Eumel/Ergos 47h 0C7h Syrinx boot, NTFS set corrupt

048h Eumel/Ergos 48h OCBh DR-DOS FAT32

04Dh QNX 4.x first OCCh DR-DOS FAT32 LBA

04Eh QNX 4.x second OCDh CTOSmemdump

04Fh QNX 4.x third, Oberon OCeh DR-DOS FAT16 LBA

050h OnTrack DM R/O, Lynx RTOS ODOh REAL/32 big

продолжение


150_____________ Глава 5. Управление вводом-выводом в операционных системах

Таблица 5.2 (продолжение)

Код Описание Код Описание

051h DM6 Aux1,DMR/W 0D1h Multiuser DOS FAT12

052h CP/M, Microport System V 0D4h Multiuser DOS FAT16 (<32Mb)

053h OnTrack DM6 Aux3 0D5h Multiuser DOS Extended

054h OnTrack DM6 DDO 0D6h Multiuser DOS FAT16

055h EZ-Drive 0D8h CP/M-86

056h GoldenBowVfeature ODBh Concurrent DOS, CTOS

057h Drive Pro ODDh Hidden CTOS memdump

05Ch Priam Edisk ODFh DG/UX

061h Speed Stor OEOh STAVFS

063h Unix 0E1h Speed Stor FAT32

064h NetWare 2.x, PC-ARMOUR 0E3h Speed Stor R/O

065h NetWare 3.x 0E4h Speed Stor FAT16

067h Novell 67h OEbh BeOS

068h Novell 68h OEeh EFI header

068h Novell 69h OEfh EFI file system

070h DiskSecure Multi-Boot OFOh Linux/PA-RISC boot

074h ScramDisk 0F1h Storage Dimensions

075h PC/AX 0F2h DOS Secondary

078h XOSL 0F4h Speed Stor large, Prologue singl

07Eh F.I.X 0F5h Prologue multi

080h MINIX 1.1-1.4a OFBh VMware native

081h MINIX 1.4b+, ADM OFCh Vmware swap

082h Linux swap, Solaris OFDh Linux RAID

083h Linux native OFeh Speed Stor (>1024), LanStep

084h Hibernation, OS/2 C: Hidden OFFh Xenix BBT

Можно сказать, что таблица разделов — одна из наиболее важных структур дан­ных на жестком диске. Если эта таблица повреждена, то не только не будет загру­жаться ни одна из установленных на компьютере операционных систем, но станут недоступными данные, расположенные в НЖМД, особенно если жесткий диск был разбит на несколько разделов.

Последние два байта MBR имеют значение 55AA(h), то есть чередующиеся значе­ния 0 и 1. Эта сигнатура выбрана для того, чтобы проверить работоспособность всех линий передачи данных. Значение 55AA(h), присвоенное последним двум бай­там, имеется во всех загрузочных секторах.

Разделы диска могут быть двух типов: первичные (primary) и расширенные (ex­tended). Максимальное число первичных разделов равно четырем. Если первич­ных разделов несколько, то только один из них может быть активным. Именно загрузчику, расположенному в активном разделе, передается управление при вклю-


Организация внешней памяти на магнитных дисках___________________________ 151

чении компьютера с помощью внесистемного загрузчика. Для DOS-систем и иных операционных систем, использующих спецификации DOS, остальные первичные разделы в этом случае считаются невидимыми (hidden). Так ведут себя и операци­онные системы Windows 9x.

Согласно принятым спецификациям на одном жестком диске может быть только один расширенный раздел, который, в свою очередь, может быть разделен на боль­шое количество подразделов — логических дисков (logical disks). В этом смысле тер­мин «первичный» можно признать не совсем удачным переводом слова «primary» — лучше было бы перевести «простейший», или «примитивный». В этом случае ста­новится понятным и логичным термин «расширенный». Расширенный раздел со­держит вторичную запись MBR (Secondary MBR, SMBR), в состав которой вмес­то таблицы разделов входит аналогичная ей таблица логических дисков (Logical Disks Table, LDT). Таблица LDT описывает размещение и характеристики разде­ла, содержащего единственный логический диск, а также может специфицировать следующую запись SMBR. Следовательно, если в расширенном разделе создано К логических дисков, то он содержит К экземпляров SMBR, связанных в список. Каждый элемент этого списка описывает соответствующий логический диск и ссы­лается (кроме последнего) на следующий элемент списка.

Как мы уже сказали, загрузчик NSB служит для поиска с помощью таблицы разде­лов активного раздела, копирования в оперативную память компьютера систем­ного загрузчика (System Bootstrap, SB) из выбранного раздела и передачи на него управления, что позволяет осуществить загрузку ОС.

Вслед за сектором MBR размещаются собственно сами разделы (рис. 5.4). В процес­се начальной загрузки сектора MBR, содержащего таблицу разделов, работают про­граммные модули BIOS. Начальная загрузка считается выполненной корректно толь­ко в том случае, если таблица разделов содержит допустимую информацию.

Рассмотрим еще раз процесс загрузки операционной системы. Процедура началь­ной загрузки (bootstrap loader) вызывается как программное прерывание (BIOS INT 19h).Эта процедура определяет первое готовое устройство из списка разре­шенных и доступных (гибкий или жесткий диск, а в современных компьютерах это могут быть еще и компакт-диск, привод ZIP-drive компании Iomega, сетевой адаптер или еще какое-нибудь устройство) и пытается загрузить с него в опера­тивную память короткую главную программу-загрузчик. Для накопителей на же­стких магнитных дисках— это уже известный нам главный, или внесистемный, загрузчик (NSB) из MBR, и ему передается управление. Главный загрузчик опре­деляет на диске активный раздел, загружает его собственный системный загруз­чик и передает управление ему. И наконец, этот загрузчик находит и загружает необходимые файлы операционной системы и передает ей управление. Далее опе­рационная система выполняет инициализацию подведомственных ей программ­ных и аппаратных средств. Она добавляет новые сервисы, вызываемые, как прави­ло, тоже через механизм программных прерываний, и расширяет (пли заменяет) некоторые сервисы BIOS. Необходимо отметить, что в современных мультипро­граммных операционных системах большинство сервисов BIOS, изначально рас­положенных в ПЗУ, как правило, заменяются собственными драйверами ОС,


152_____________ Глава 5. Управление вводом-выводом в операционных системах

поскольку они должны работать в режиме прерываний, а не в режиме сканирова­ния готовности.

Рис.5.4. Разбиение диска на разделы

Согласно рассмотренному процессу, каждый раз при запуске компьютера будет загружаться одна и та же операционная система. Это не всегда нас может устраи­вать. Так называемые менеджеры загрузки (boot managers) предназначены для того, чтобы пользователь мог выбрать среди нескольких установленных на компьютере операционных систем желаемую и передать управление на загрузчик выбранной ОС. Имеется большое количество таких менеджеров. Одним из наиболее мощных менеджеров загрузки является OS Selector от фирмы Acronis. Эта программа име­ет следующие основные особенности: □ поддержка большого количества операционных систем, включая различные

версии DOS (MS DOS, DR-DOS и др.), Windows (9x/ME, NT/2000/XP), OS/2,

Linux, FreeBSD, SCO Unix, BeOS и др.;


Организация внешней памяти на магнитных дисках___________________________ 153

- возможность установки на любой раздел FAT16/FAT32, в том числе и на от­
дельный раздел, недоступный другим операционным системам;

- возможность с помощью меню загрузки, предоставляемого менеджером, осу­ществить загрузку с дискеты;

- автоматическая идентификация операционных систем как на первичных раз­
делах, так и на логических дисках расширенного раздела всех НЖМД, доступ­
ных через BIOS компьютера;

- поддержка нескольких операционных систем на одном разделе FAT16/FAT32, при этом предотвращаются конфликты по системным и конфигурационным файлам для систем, установленных на одном разделе;

- возможность дополнительной настройки конфигураций операционных систем и легкого их добавления и удаления;

- встроенная защита от загрузочных вирусов;

- легкое восстановление в случае повреждения MBR;

- поддержка больших жестких дисков во всех режимах современных подсистем BIOS;

- возможность установки паролей отдельно на меню загрузки и на выбранные конфигурации.

Формирование таблицы разделов осуществляется с помощью специальных ути­лит. Обычно их называют FDisk (от слов «Form Disk» — формирование диска). Хотя есть и иные программы, которые могут делать с разделами намного больше, чем простейшие утилиты FDisk от Microsoft. Надо признать, что в последнее вре­мя появилось большое количество утилит, которые предоставляют возможность более наглядно представить разбиение диска на разделы, поскольку в них исполь­зуется графический интерфейс. Эти программы успешно и корректно работают с наиболее распространенными типами разделов (разделы под FAT, FAT32, NTFS). Однако созданы они в основном для работы в среде Win32API, что часто ограни­чивает возможность их применения. Одной из самых известных и мощных про­грамм для работы с разделами жесткого диска является Partition Magic фирмы Power Quest.

Еще одной мощной утилитой такого рода является Администратор дисков, входя­щий в состав уже упоминавшегося менеджера загрузки OS Selector от Acronis. Эта утилита позволяет:

- создавать разделы любых типов и форматировать их под файловые системы FAT16, FAT32, NTFS, Ext2FS (Linux), Linux ReiserFS, Linux Swap, при этом можно выбирать точное или произвольное расположение раздела и указывать его параметры;

- получать подробную информацию о разделах и о самих жестких дисках;

- удалять любые разделы;

- преобразовывать разделы из FAT 16 в FAT32 и обратно;

копировать и перемещать разделы с FAT16, FAT32, NTFS, Linux Ext2FS, Linux ReiserFS и Linux Swap;


154_____________ Глава 5. Управление вводом-выводом в операционных системах

- изменять размеры разделов с вышеперечисленными файловыми системами;

- выбирать размер кластера вручную во время любой операции создания, копи­рования, перемещения или изменения размера раздела;

- посекторно редактировать содержимое жестких дисков и разделов с помощью встроенного многооконного редактора дисков.

В популярных операционных системах от Microsoft тоже имеются средства для просмотра и изменения структуры разделов жесткого диска. Так, в Windows NT 4.0 для управления дисками имеется программа Администратор дисков (Disk Manager); а в Windows 2000 и Windows XP — консоль управления с оснасткой под названием Управление дисками (Disk Management). Эти средства имеют графи­ческий интерфейс и позволяют создавать новые разделы, удалять разделы, пере­определять букву (имя) логического диска и создавать наборы дисков, выступаю­щие как один логический том.

Утилиты формирования дисков, входящие в состав MS DOS и Windows 95/98, а также утилита, встроенная в программу установки Windows NT, первым элемен­том таблицы разделов всегда делают первичный раздел. Вторым элементом стано­вится расширенный раздел, в котором, в свою очередь, организуется один или не­сколько логических дисков. При этом создаваемые логические диски помимо известного буквенного именования (диски С:, D:, Е: и т. д.) получают еще и так на­зываемые номера разделов. Диск С: получает в этом случае порядковый номер 1, диск D: — 2, диск Е: — 3, и т. д. Именно номера разделов используются в файле boot.ini, который указывает системному загрузчику Windows NT/2000/XP, где находятся файлы выбранной операционной системы.

Следует заметить, что в операционных системах типа Linux логические диски и разделы нумеруются и обозначаются иным способом. Жесткий диск с IDE-интер­фейсом, подключенный к первому контроллеру как главный (master), имеет имя hda. Если это второй диск на том же шлейфе, то его именуют hdb1. Соответственно, имя hdc будет соответствовать диску, подключенному ко второму порту контрол­лера и имеющему адрес 0, то есть главному. И так далее. Если раздел диска указан посредством таблицы из MBR, то он имеет номер элемента таблицы разделов. Если же речь идет о логических дисках, созданных в пределах расширенного раздела, то их номера уже начинаются с 5. Тем самым указывается, что раздел описан в следу­ющей (вторичной) записи MBR, то есть в SMBR.

Так, для рассматриваемого нами примера (см. рис. 5.4), раздел с номером 1 в Linux тоже будет иметь номер 1. Если мы имеем единственный накопитель, подключен­ный к первому порту контроллера, то этот раздел обозначается как hda1. А вот ло­гический диск, по умолчанию именуемый в Windows диском D: и имеющий номер раздела 2, в Linux будет обозначаться как hda5. Логический диск Е:, имеющий в Windows номер раздела 3, станет в Linux диском с номером раздела 6 и будет обозначаться hda6. Чтобы понять причину такой нумерации, рассмотрим рис. 5.4

1 Главным является тот накопитель, который имеет адресацию 0 на IDE-интерфейсе, тогда как диск с адресом 1 обозначается как вспомогательный (slave). Адресация выставляется на одной из линий IDЕ-шлейфа (26 линия).


Организация внешней памяти на магнитных дисках___________________________ 155

более внимательно. Вслед за сектором с MBR размещаются собственно сами раз­делы. Поскольку на рисунке это в явном виде не показано, напомним, что любой раздел начинается с первого сектора. В таблице разделов имеется 4 элемента, но только два из них задействованы. Первый элемент описывает раздел с номером 1 и ему соответствует логический диск С:. Второй элемент указывает на запись SMBR, в которой первый элемент в таблице логических дисков описывает логический диск D:. И этот элемент является уже пятым элементом, если учесть четыре эле­мента в MBR. А далее нумерация разделов в Linux отходит от этой идеи. Диск Е: получает порядковый номер 6, а не 9, как следовало бы ожидать, если подсчиты­вать все имеющиеся элементы в таблицах разделов. И это логично, поскольку в каж­дой таблице дисков логический диск описывает только один элемент — первый. Таким образом, если бы расширенный раздел был разбит не на два, а на три логиче­ских диска, то последний подраздел (в системе Windows он именовался бы диском F:) получил бы номер 7.








Дата добавления: 2016-09-20; просмотров: 1374;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.037 сек.