Физическая структура дисковой памяти. — КиберПедия 

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...

Физическая структура дисковой памяти.



Чтение и анализ содержимого первого сектора ЖМД

 

Теоретическая часть

Аппаратная часть современных персональных компьютеров (ПК) включает дисковую подсистему памяти на магнитных носителях, которая обычно комплектуется одним или несколькими накопителями на жестких магнитных дисках (ЖМД), условно называемыми винчестерами. Операционная система (ОС) позволяет пользователю разбивать ЖМД на части (разделы), каждая из которых рассматривается как отдельный так называемый логический диск. Поэтому вначале остановимся на логической структуре ЖМД, которая тесно связана с геометрической структурой ЖМД[1].

Конструктивно винчестер состоит из нескольких двухсторонних пластин, на обе стороны которых информация записывается в виде концентрических окружностей, называемых дорожками. Дорожки всех пластин (сторон), расположенные на одном удалении от центра, объединяются понятием цилиндра. Цилиндры, как и дорожки, нумеруются от края диска внутрь. Нумерация начинается с нуля. Стороны дисков также нумеруются, начиная с нулевой.

Чтобы данные могли быть записаны на диск и прочитаны с диска, каждая дорожка разбивается на участки, называемые секторами. Логический размер сектора для всех дисков составляет 512 байт. Секторам присваиваются номера в соответствии с двумя существующими системами нумерации - абсолютной и относительной.

Абсолютная нумерация секторов относится к физическому диску в целом независимо от того, разбит ли он (в случае ЖМД) на логические диски или нет. В этом случае местоположение сектора определяется тремя компонентами: номером магнитной головки (стороны), номером цилиндра (дорожки) и номером собственно сектора в пределах данной дорожки. При этом на каждой дорожке нумерация секторов начинается с 1, а не с нуля.

Относительная нумерация секторов ведется в пределах логических дисков винчестера, а также устанавливается для секторов дискет и флеш-дисков. Каждый логический диск имеют свою собственную относительную нумерацию секторов, начинающуюся с нуля.

Самый первый сектор жесткого диска (сторона 0, цилиндр 0, сектор 1), который называется главным загрузочным сектором (Master Boot Sector), состоит из нескольких частей. Основной из них является так называемая главная загрузочная запись - Master Boot Record (MBR). Формат первого сектора ЖМД представлен в табл.1.

Таблица 1

Номер поля Смещение Размер, байт Содержимое
00h Программа главной загрузочной записи MBR
1BEh Таблица разделов диска - Partition Table
1FEh Сигнатура AA55h - признак конца сектора

 



Поля первого сектора формируются в процессе форматирования диска, а поле 2 дополнительно заполняется во время выполнения процедуры разбиения диска на разделы.

Если загрузка ОС выполняется с винчестера, то весь Master Boot Sector читается в память модулем инициализации BIOS. При этом программа главной загрузочной записи размещается по адресу 7С00:0000h и ей передается управление. Эта программа сканирует содержимое таблицы разделов Partition Table, состоящее из четырех 16-байтных элементов, разбитых на поля. Все элементы таблицы разделов имеют одинаковый формат (табл.2).

Таблица 2

Смеще-ние Размер, байт Название поля Содержимое
00h Признак загрузки 80h - загружаемый раздел 00h - незагружаемый раздел
01h 02h 03h Начало раздела диска Биты 0 - 7: номер головки (0-255) Биты 0 - 5: номер сектора (1-63) Биты 6 и 7: ст.биты номера цилиндра Биты 0 - 7: мл.биты номера цилиндра (0-1023)
04h Тип раздела 00h - раздел не используется 01h – для ОС с 12-битовой FAT 04h – для ОС с 16-битовой FAT 05h - расширенный Extended-раздел 06h – для ОС старших версий с 16-битовой FAT
05h 06h 07h Конец раздела диска Биты 0 - 7: номер головки (0-255) Биты 0 - 5: номер сектора (1-63) Биты 6 и 7: ст. биты номера цилиндра Биты 0 - 7: мл. биты номера цилиндра (0-1023)
08h Номер сектора Количество секторов перед началом раздела
0Ch Размер раздела Количество секторов в разделе

Программа MBR при своем выполнении анализирует содержимое поля "Признак загрузки" каждого элемента и по коду 80h находит загружаемый (активный) раздел. Затем MBR считывает самый первый сектор этого раздела в память. Этот сектор содержит загрузочную запись (Boot Record - BR), которой главная загрузочная запись передает управление для дальнейшего выполнения загрузки модулей ОС, содержащихся в активном разделе.



Рассмотрим содержимое полей элемента таблицы разделов диска.

Содержимое поля "Признак загрузки" является флагом активного раздела. Коды байтов полей "Начало раздела диска" и "Конец раздела диска" определяют координаты границ раздела на диске. Несколько необычное распределение битов в байтах номеров сектора и цилиндра этих полей объясняется тем, что оно соответствует формату загрузки регистров процессора перед обращением к функции 02h чтения физического сектора диска прерывания 13h BIOS, используемого в программе начальной загрузки.

Код в поле "Тип раздела" указывает, какой именно ОС принадлежит данный раздел. Если код равен 1,4 или 6, это означает, что данный раздел используется операционной системой в качестве первичного раздела (Primary Partition), который обычно является загружаемым. В зависимости от того, какой именно код используется для обозначения первичного раздела, меняется одна из характеристик логического диска - размер элемента таблицы размещения файлов. Таблица размещения файлов (FAT – File Allocation Table) рассматривается в следующей лабораторной работе.

Значение кода типа раздела, равное 5, обозначает так называемый расширенный раздел (Extended Partition). Использование этого раздела позволяет создать на ЖМД несколько логических дисков, что решает проблему эффективного применения винчестеров большого объема. Для создания логических дисков используются специальные вспомогательные системные программы (утилиты - диск-менеджеры). Одной из них является утилита FDISK, позволяющей создать один первичный и один расширенный раздел. Первичный раздел обычно используется как логический диск C:, является активным и из него выполняется загрузка ОС. Расширенный раздел может разбиваться утилитой на логические диски D:,E: и т.д. Он не может быть активным, и, следовательно, невозможно выполнить загрузку ОС с логических дисков, расположенных в этом разделе.

Если поле "Тип раздела" содержит код 05h, то физический сектор, определяемый в поле "Начало раздела диска", является не загрузочным сектором расширенного раздела, а по существу вторичным Master Boot-сектором винчестера. Этот сектор содержит собственную таблицу разделов, называемую таблицей логического диска (Logical Drive Table - LDT). Эта таблица определяет местоположение и размер логического диска, с которым ОС обращается как с отдельным физическим диском. Вторичный Master Boot-сектор отличается от основного Master Boot-сектора тем, что он не содержит программы загрузки и имеет в своем составе только два 16-байтных элемента аналогичной структуры, а не четыре, как у Partition Table.

В поле "Тип раздела" первого элемента LDT указывается код 1,4 или 6, а в таком же поле второго элемента таблицы может содержаться код 5 или 0. Если этот код равен 5, то второй элемент LDT определяет вторичный Master Boot-сектор другого логического диска и т.д. В результате LDT всех логических дисков связываются в список (рис. 1), на начало которого указывает элемент таблицы разделов всего диска с кодом 5 в поле "Тип раздела". Если код типа раздела равен 0, то соответствующий элемент не используется.

Рис. 1

Каждый логический диск содержит свой Boot-сектор, две копии таблицы размещения файлов (FATFile Allocation Table), корневой каталог и область данных[2]).

Для LDT имеется отличие в использовании полей границ логических дисков: если код в поле "Тип раздела" равен 1, 4, 6, границы вычисляются относительно начала расширенного раздела; если этот код равен 5 - то относительно начала физического диска.

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

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

Операционная система не предоставляет пользователю средств для непосредственной работы с таблицей разделов диска и главной загрузочной записью. Для обращения к этим системным областям необходимо либо спроектировать свои собственные функции, либо воспользоваться возможностью прямого обращения к самому первому сектору жесткого диска с помощью функции 02h прерывания 13h BIOS, либо использовать средства сервисного программного пакета Norton Utilities и, в частности, утилиту DISKEDIT (в случае, если ОС допускает прямое обращение к ЖМД).

Формат вызова функции 02h прерывания 13h имеет следующий вид:

на входе:

AH = 02h

AL = число читаемых секторов;

CH = номер дорожки;

CL = номер сектора;

DH = номер стороны диска;

DL = физический адрес дисковода (80h для ЖМД);

ES:BX = адрес буфера для данных сектора;

на выходе:

CF = 0, AX = 0000h - функция завершена успешно;

CF = 1, AX = код ошибки - функция завершилась с ошибкой.

Практическая часть

Примечание. Практическая часть работы выполняется в режиме виртуализации операционной системы MS DOS поскольку только эта система обеспечивает возможность непосредственного доступа к аппаратным средствам компьютера и, в частности, к устройствам внешней памяти.

Программная часть работы базируется на использовании средств системного отладчика debug и утилиты DISKEDIT из программного пакета Norton Utilities. При чтении содержимого памяти командами отладчика, в частности командой d, необходимо учитывать, что при выводе числовой информации на экран первый слева байт каждого поля данных является младшим, т.е. значения байтов поля записываются в обратном порядке.

 

2.1. Ознакомиться с приложением 1, а также приложением 2, в котором представлены команды отладчика debug. Только после этого перейти к выполнению следующих пунктов работы.

 

2.2. При выполнении данного пункта использовать функцию 02h прерывания 13h BIOS двумя способами:

1) С помощью команд отладчика a <смещение>, g <смещение пустой строки> выполнить ассемблерную последовательность команд, реализующую функцию 02h прерывания 13h. При выполнении команды a задать: <смещение>=100, BX=200. Командой d ES:BX получить на экране дамп первого сектора ЖМД. После команды d ES:BX трижды последовательно задать команду d.

2) С помощью текстового редактора оболочки NC создать текстовый файл[3] mbr.dbg вида:

a 100

mov ah,02

mov al,1

mov ch,0

mov cl,1

mov dh,0

mov dl,80

mov bx,200

int 13

<пустая строка>

g <смещение пустой строки>

r bx

0000

r cx

n master.sec

w es:200

q

<Enter>

Выполнить команду debug<mbr.dbg

В результате содержимое первого сектора ЖМД должно быть получено в файле master.sec текущего каталога.

Второй способ позволяет получить тот же результат, но в более удобной для дальнейшего использования форме.

2.3. Получить дамп MBR, используя первый способ чтения начального сектора винчестера. Проанализировать его занести в отчет таблицу разделов винчестера.

2.4. Используя второй способ чтения начального сектора ЖМД, получить файл master.sec. Проанализировать содержимое файла и занести в отчет таблицу разделов винчестера. Расшифровать значения всех полей элементов таблицы для первичного и расширенного разделов. Данные занести в таблицу, аналогичную табл.2. Сравнить результаты выполнения пунктов 1.3 и 1.4.

2.5. Запустить на выполнение программу просмотра диска DISKEDIT и проанализировать содержимое начального сектора винчестера в текстовом и шестнадцатеричном режимах. Сопоставить полученную информацию с результатами пп.1.3 и 1.4.

Примечание.При работе с программой DISKEDIT запрещается внесение каких-либо изменений в системные таблицы винчестера, т.к. это может сделать диск неспособным к загрузке!

2.6. На основании информации из элемента расширенного раздела, используя программу DISKEDIT, определить местоположение на диске (т.е. найти номер цилиндра, стороны, сектора) вторичного загрузочного сектора логического диска D:. Найти его таблицу разделов, прочитать и расшифровать содержимое элементов этой таблицы.

Содержание отчета

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

 

Приложение 1






Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...





© cyberpedia.su 2017 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав

0.011 с.