Высокоуровневое форматирование

Высокоуровневое форматирование(создание файловой системы) - проводится пользователем для каждого раздела в отдельности с помощью системной программы форматирования, и включает следующие операции:

· Создает загрузочный сектор (Boot Sector).

· Создает список свободных блоков (если в разделе установлена ОС UNIX) или таблицу (или таблицы) размещения файлов (FAT- File Allocation Table) (если в разделе установлена ОСWindows).

· Создает корневой каталог диска.

· Создает, пустую файловую систему.

· Указывает тип файловой системы данного раздела [4].

· Помечает дефектные кластеры.

Кластеры и блоки - единицы хранения информации на поверхности диска в файловых системах. Данные файлов записываются на диск порциями в виде блоков или кластеров.

При загрузке операционной системы выполняются следующие действия:

1. Запускается загрузчик BIOS.

2. Загрузчик BIOS считывает главную загрузочную запись, и передает управление на ее программную часть.

3. Программа главной загрузочной записи определяет активный раздел диска.

4. Из этого раздела считывается и запускается программа загрузочного сектора.

5. Программа загрузочного сектора находит в корневом каталоге диска системный загрузочный файл.

6. Этот файл загружается в память и запускается на выполнение - начинается процесс загрузки файлов ОС с диска в память.

Приложение 2

Основные сведения о системном отладчике DEBUG

Отладчик DEBUG обеспечивает тестовую среду для отладки двоичных и исполняемых файлов. Для вызова отладчика нужно ввести команду debug или debug [<спецификация файла>[<список параметров>]. Если указывается имя exe-файла, то может быть задан и список параметров, содержащий имена файлов и ключи, которые должны быть переданы в программу. Приглашением отладчика является символ "-".

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

Описание основных параметров:

адрес - 16-ричное значение адреса в виде dddd или ssss:dddd, сег_рег:dddd. Здесь dddd - относительный адрес, ssss - сегментный адрес, сег_рег - обозначение сегментного регистра;

диапазон - диапазон адресов в виде адрес1 адрес2 или адрес L счетчик. Здесь адрес1 и адрес2 - адреса начала и конца диапазона, счетчик - 16-ричное число байтов в диапазоне;

регистр - обозначение регистра процессора;

порт - 16-ричный номер порта.

Основные команды отладчика:

a [адрес] - ассемблирование вводимых после указанной команды команд на языке ассемблера и запись их кодов в память, начиная с указанного адреса. Действие команды завершается после ввода пустой строки;

d [адрес] или [диапазон] - дамп памяти;

g [адрес] [[адрес]...] - пуск программы. Команды выполняются, начиная с текущего значения регистров CS:IP (или с адреса =адрес) с необязательными точками останова по указанным адресам;

i порт - ввод из указанного порта;

l [адрес] диск сектор n - загрузка n дисковых секторов с дисковода диск , начиная с относительного сектора сектор по указанному адресу или адресу CS:100h;

o порт байт - вывод значения байт в указанный порт;

w адрес – запись в файл блока памяти, начиная с адреса адрес;

n имя – присвоение файлу имени имя;

r [регистр] - загрузка регистров процессора. При отсутствии параметра выводится содержимое всех регистров процессора. Обозначение флагов приведено в табл. 3.

t [=адрес] n - выполнение n команд, начиная с указанного адреса;

u [адрес] или [диапазон] - дисассемблирование указанной области памяти;

q- завершение сеанса работы с отладчиком.

Таблица 3

Флаг Установлен Сброшен
CF CY CN
PF PO PE
AF AC NA
ZF ZR NZ
SF NG PL
IF EI DI
DF UP DN
OF NV OV

Л А Б О Р А Т О Р Н А Я Р А Б О Т А № 2

Чтение и анализ содержимого загрузочной записи логического диска

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

В первом секторе на первой стороне нулевой дорожки логического диска и первом секторе на нулевой стороне той же дорожки каждой дискеты размещается так называемая загрузочная запись - Boot Record (BR), которая записывается туда программой форматирования диска. Содержимое первого сектора считывается из активного раздела винчестера программой MBR, после чего программная часть загрузочной записи запускается на выполнение. Помимо программной составляющей в загрузочной записи в ее форматированной области хранятся параметры, описывающие характеристики логического диска или дискеты. Эти параметры объединяются в структуру, называемую блоком параметров BIOS - BIOS Parameter Block (BPB). Формат загрузочного сектора логического диска или дискеты представлен в табл.4.

Таблица 4

Номер поля Смеще-ние Размер, байт Содержимое Примечание
00h Код команды EBxx90 перехода на программу начальной загрузки Форматированная область сектора
03h Имя и версия ОС  
0Bh Расширенный (Extended) блок BPB  
03Eh Программа начальной загрузки Неформатирован- ная область сектора
1FEh Cигнатура AA55h - признак окон-чания загрузочного сектора  

Блок BPB в зависимости от версии ОС и типа FAT, имеет структуру, отличающуюся от аналогичной структуры в более ранних версиях. Он состоит из стандартного BPB и дополнительного расширения [5]. Формат расширенного блока BPB приведен в табл.4.

Таблица 5

Смеще-ние Размер, байт Содержимое Примечание
0Ch Количество байтов в одном секторе Стандартный     блок     параметров     BIOS
0Dh Количество секторов на кластер
0Eh Количество резервных секторов, включая Boot-сектор
10h Число таблиц FAT
11h Максимальное число элементов в корневом каталоге
13h Общее количество секторов на логическом диске
15h Тип носителя (media descriptor)
16h Количество секторов в одной FAT
18h Количество секторов на дорожке
1Ah Количество головок
1Ch Количество "скрытых" секторов
20h Общее количество секторов на логическом диске Расширение   блока   параметров   BIOS
24h Физический номер диска
25h Зарезервировано
26h Код 29h символа ')'
27h Двоичный номер диска
28h Метка диска
36h Зарезервировано

Как обычный, так и расширенный блоки параметров BIOS содержат байт-описатель среды носителя данных (media descriptor). Этот байт служит для идентификации носителя данных и может содержать следующие коды, характеризующие носитель данных по количеству сторон и числу секторов на дорожке: FDh - 2 стороны, 9 секторов; F9h - 2 стороны, 15 секторов; F9h - 2 стороны ,9 секторов и F0h - 2 стороны, 15 секторов; F8h - жесткий диск.

Для непосредственного обращения к загрузочной записи можно использовать прерывания MS DOS 25h и 26h, позволяющие выполнять операции чтения и записи сектора соответственно по его относительному (логическому) номеру. Формат этого прерывания для в случае работы с логическим диском объемом свыше 32 Мб, имеет вид:

на входе: AL = адрес дисковода (0=A, 1=B, 2=C и т.д.);

CX = FFFFh - код, определяющий, что работа будет производиться с логическим диском, имеющим размер более 32 Мб;

DS:BX = адрес управляющего блока следующей структуры (табл. 6):

Таблица 6

Размер поля, байт Содержимое
Начальный номер логического сектора
Число секторов для чтения/записи
FAR-адрес буфера для данных

на выходе:

CF=1 - ошибка, AH = код ошибки;

CF=0 - ошибки нет.

Если размер логического диска менее 32 Мб, формат вызова прерываний 25h,26h несколько иной:

на входе:

AL = адрес дисковода;

CX = количество читаемых (или записываемых) секторов;

DX = начальный номер логического сектора;

DS:BX = адрес буфера для передачи данных;

на выходе:

CF, AH имеют те же значения.

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

Для чтения секторов диска в память может быть использована также команда l системного отладчика debug.

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

2.1. Прочитать загрузочный сектор логического диска A: c помощью прерывания25h, составив для этого фрагмент ассемблерной программы и выполнив его с помощью команды отладчика a. Проанализировать полученный дамп памяти, расшифровать его и заполнить в отчете таблицу форматированной области сектора (см. табл.4 и 5 в теоретической части). При выполнении прерывания 25h принять BX=200.

2.2. Выполнить задание п.1 другим способом, для чего:

а) подготовить в редакторе NC текстовый файл br.dbg вида:

l cs:100<номер логич.диска> <нач.номер читаемого сектора> <число читаемых секторов>

r cx

n boot.sec

w

q

б) выполнить команду debug<br.dbg;

в) получить файл загрузочного сектора boot.sec, проанализировать его содержимое. Сравнить полученные результаты с данными в п.1.

2.3. Выполнить задание п.2 для логических дисков C:,D:. Занести в отчет содержимое форматированной области загрузочных секторов этих дисков.

2.4. Сопоставить результаты по п. 3 с данными, полученными в пп.1, 2. Результаты для дисков A:, C:, D: представить в виде сравнительной таблицы .

2.5. Прочитать и проанализировать содержимое загрузочных секторов дисков A:, C:,D: с помощью программы DISKEDIT. Сравнить полученные результаты с данными, полученными в пп. 1. – 3.

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

Требования к содержанию отчета соответствуют требованиям к отчету в лабораторной работе № 1.

Наши рекомендации