Смекни!
smekni.com

Информатика и программное обеспечение ПЭВМ (стр. 39 из 48)

Рис. 3.8. Структура системной области

Загрузочный сектор BR (SB) (рис. 3.9) каждого диска занимает по определению только один сектор и хранится в логическом секторе 0. В нем содержится некоторая информация о диске и небольшая программа IPL (2) (Initial Program Loading 2). Почему именно 2, а не 1, будет ясно из дальнейшего объяснения. Первым байтом этого сектора должен быть либо код безусловного перехода JMP (E9h) с последующим 16-битным смещением, либо код "короткого" (short) перехода JMP (EBh) с 8-битным смещением, причем третьим байтом в этом случае является код операции NOP (90h). Заканчивается сектор определенной кодовой комбинацией – сигнатурой (AA55h). Сразу за инструкцией JMP в этом секторе следует 8-байтное поле, резервируемое для идентификации имени и версии OEM (Original Eguipment Manufacturer). Программы форматирования традиционно записывают здесь ASCII-строку, содержащую марку и версию используемой операционной системы или наименование пакета, например MSDOSn.n либо PCTools.

Рис. 3.9. Структура загрузочного сектора

Безусловно, главным компонентом сектора BR является так называемый блок параметров BIOS BPB (BIOS Parameter Block). Это важнейшая структура данных, содержащая важную информацию: тип носителя (media descriptor), количество используемых байт на сектор и секторов на кластер, количество копий FAT и др.

Последний элемент сектора BR – это программа IPL2. Начальная инструкция JMP в этом секторе выполняет переход на точку входа именно этой программы.

Таблица размещения файлов располагается непосредственно после загрузочной записи и имеет переменный размер (в секторах). FAT используется для хранения сведений о размещении файлов на диске. Эта таблица состоит из элементов (12- или 16-битных), каждый из которых соответствует определенному участку дискового пространства и соответствующим кодом характеризует его состояние: занят, свободен или имеет дефект. В самом начале каждой таблицы FAT (первый элемент) хранится дескриптор (media descriptor), определяющий тип носителя (например для жесткого диска – F8h).

Минимальным элементом, которым MS-DOS оперирует при работе с дисками, является не сектор, а кластер. Кластеры состоят из нескольких секторов (2, 4 и т. д.).

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

Корневой каталог диска всегда занимает строго фиксированное место – сразу за последней таблицей FAT. Он состоит из ограниченного числа 32-байтных записей, каждая из которых содержит информацию о файле или другом каталоге (подкаталоге), а также метке диска.

Корневая директория включает список всех файлов на дискете, его элементы содержат всю информацию о файле, за исключением сведений о размещении файла, которые хранятся в таблице размещения файлов. Любой элемент имеет длину 32 байт и включает восемь полей (все они выравниваются по левой границе, пустые байты заполняются пробелами):

1) имя файла – 8 байт. Если первый байт имеет значение Е516, то элемент не используется, если 2Е16, то этот элемент указывает на директорий нижнего уровня;

2) расширение имени файла – 3 байт;

3) атрибут – 1 байт. Используется для установления признака:

- "только чтение" (нулевой бит);

- скрытого файла (первый бит);

- системного файла (второй бит);

- признака метки тома (третий бит);

- признака поддиректории (четвертый бит);

- признака архивного файла (пятый бит);

- шестой и седьмой биты этого байта резервные.

Если задан признак метки тома, то этот элемент содержит не ссылку на файл, а имя диска, которое занимает первые 11 байт. Архивный бит используется утилитами BACKUP и RESTORE;

4) зарезервированное поле для возможного использования в будущем – 10 байт;

5) время – 2 байт. Здесь хранится время создания или последней модификации файла. Первые 5 бит занимают часы, вторые 3 бит – минуты, третьи 5 бит – секунды. В последнем поле каждая единица соответствует 2 с;

6) дата – 2 байт. Здесь хранится дата создания последней модификации файла. Первые 7 бит занимают годы, которые отсчитываются от значения 1980 (от 1980 г.), вторые 4 бит – месяцы, третьи 5 бит – дни;

7) номер начального кластера – 2 байт. Начальный кластер является первой частью пространства данных в файле на дискете;

8) размер файла – 4 байт. Наличие этого поля связано с тем, что файл обычно частично занимает последний отведенный ему кластер, а здесь указывается его точная длина.

Все остальное место на диске занимает область данных, содержащая файлы данных или подкаталогов.

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

Особенности логической структуры жесткого магнитного диска обусловлены наличием несистемного загрузчика NSB (главный загрузочный сектор MBR – MASTER BOOT RECORD).

Каждый жесткий диск (как отдельное электронное устройство) имеет еще одну область, которая называется главной загрузочной записью, или сектором MBR, или несистемным загрузчиком (NSB). Единый жесткий диск может быть разбит на несколько логических дисков, с которыми она может работать как с отдельными устройствами. Именно поэтому физические сектора на жестком диске могут характеризоваться в двух системах координат: физической (сектор, головка, цилиндр) и логической (номер логического сектора).

Для MBR на жестком диске всегда выделяется физический сектор 1 (сектор 1, головка 0, цилиндр 0). Логического номера он не имеет, так как является общим для всех логических дисков.

Этот сектор содержит программу IPL1 (Initial Program Loa-ding 1), расположенную в его начале, которая при своем выполнении сканирует содержимое второго важного элемента MBR – таблицу разделов диска (Partition Table) (рис. 3.10), состоящую, в свою очередь, из четырех 16-байтных элементов (разделов), разбитых на поля. Они содержат информацию о номерах начального и конечного секторов, номерах головок и цилиндров для соответствующего раздела, а также числе секторов, предшествующих разделу и включенных в раздел. Из четырех разделов, на которые может быть поделен диск, только два могут принадлежать MS-DOS: первичный (Primary) и расширенный (Extended), два оставшихся резервируются для других операционных систем: OS/2, Xenix, UNIX, Windows NT и т. д.

Рис. 3.10. Структура MBR

Не следует отождествлять понятия "раздел" и "логический диск", поскольку, например, с расширенным разделом могут быть связаны несколько логических дисков.

Байт поля "Признак загрузки" используется программой IPL1 (при ее выполнении) для выяснения, какой из разделов диска содержит загружаемую операционную систему. Активный (загружаемый) раздел в этом поле содержит код 80h, остальные разделы должны быть помечены кодом 00h.

В поле "Начало раздела" хранятся номера головки, сектора и цилиндра стартового сектора раздела; в поле "Конец раздела" – соответствующие величины для конечного сектора этого раздела.

Число секторов до начала раздела хранится в 4-байтном поле "Относительный сектор". Это число определяется путем последовательного подсчета секторов, начиная с сектора 1, головки 0, цилиндра 0 физического диска, и увеличения номера сектора на дорожке, затем номера головки и цилиндра.

Число секторов в разделе хранится в 4-байтном поле "Размер". Как и для предыдущего поля, первое слово содержит младшую часть числа, второе – старшую.

Еще одно важное поле элементов таблицы разделов – "Тип раздела". Код в нем указывает, какой именно операционной системе принадлежит данный раздел.

Если поле "Тип раздела" содержит код 05h (Extended-раздел), то физический сектор, определяемый в поле "Начало раздела" диска, является вовсе не загрузочным сектором (BR) расширенного раздела, а вторичным главным загрузочным сектором жесткого диска SMBR (Secondary Master Boot Record). Этот сектор содержит собственную таблицу разделов, называемую таблицей логического диска LDT (Logical Drive Table), и непременную сигнатуру AA55h. Эта таблица и определяет местоположение и размер раздела, с которым MS-DOS обращается как с отдельным физическим диском.

Отличия SMBR-сектора от MBR-сектора:

- во-первых, он не содержит программы IPL1 и соответственно никогда не определяет загрузочный диск;

- во-вторых, таблица логического диска включает максимум два 16-байтных элемента, а не четыре, как основная таблица разделов. Причем, если поле "Тип раздела" первого элемента таблицы определяет размер элемента FAT, то такое же поле второго элемента таблицы (если он существует) содержит код Extended-раздела – 05h. Таким образом, второй элемент таблицы логического диска может определять следующий вторичный загрузочный сектор и т. д.

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

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

Таким образом, Extended-раздел может быть поделен на логические диски от D до Z по количеству букв латинского алфавита.

3.3.2 Начальная загрузка MS-DOS

При загрузке или перезагрузке системы выполнение начинается с адреса OFFFFOH (рис. 3.12). Это определяется особенностями семейства микропроцессоров 8086/8088, а не самой системы MS-DOS. Системы, базирующиеся на этих процессорах, сконструированы так, что адрес OFFFFOH лежит внутри области ПЗУ и содержит машинную команду передачи управления программе проверки системы и программе начального загрузчика ПЗУ.

Программа начального загрузчика ПЗУ считывает в некоторую область памяти программу дискового начального загрузчика, начиная с первого сектора загружаемого диска (сектор загрузчика), и затем передает ей управление. Кроме того, сектор загрузчика содержит таблицу с информацией о формате диска.