Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Основные сведения о системном отладчике 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 [регистр] - загрузка регистров процессора. При отсутствии параметра выводится содержимое всех регистров процессора. Обозначение флагов приведено в табл. 6.

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

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

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

 

 

Таблица 6

Флаг Установлен Сброшен
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

 

Системные средства распределения дискового пространства в ОС Windows и MS DOS

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

В файловых системах ОС Windows, (как и в однопрограммной системе MS DOS), реализован один из наиболее эффективных способов распределения дискового пространства, в котором любой файл может занимать произвольные секторы диска. При этом для нового файла начальное распределение памяти не задается и пространство выделяется файлу по мере необходимости отдельными участками фиксированного размера, называемыми кластерами. Кластер может состоять из одного или нескольких смежных секторов. При создании нового или расширении существующего файла дисковое пространство выделяется ему отдельными кластерами, которые могут располагаться не обязательно в смежных областях диска.

В этом случае ОС должна вести учет используемых кластеров диска. Для каждого файла она должна хранить где-то информацию о том, какие участки диска распределены данному файлу.

В различных версиях Windows и MS DOS для хранения этой информации используется специальная служебная таблица, называемая таблицей размещения файлов (File Allocation Table - FAT).

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

По своей структуре FAT представляет собой одномерный массив данных, состоящий из элементов фиксированного формата. Каждый элемент (за исключением первых двух) хранит данные об определенном кластере диска, которые представляются в виде беззнакового целого числа. Размер FAT определяется общим количеством кластеров (а не секторов!) на диске. Элементы FAT последовательно нумеруются, начиная с нуля. Кластеры диска также нумеруются, начиная от номера 2, до числа, которое на 1 больше общего количества кластеров на диске. Между номерами элементов таблицы и номерами кластеров устанавливается взаимнооднозначное соответствие, то есть элемент FAT с номером n, n>=2 соответствует кластеру с тем же номером.

Первые реализации FAT (или иначе форматы FAT) были разработаны для MS DOS: 12-битовый (полуторабайтный – FAT 12) и 16-битовый (двухбайтный – FAT 16). В Windows используется усовершенствованный 32-битовый формат FAT (FAT 32) для ЖМД больших объемов. Формат FAT 12 удобен для логических дисков с небольшим количеством секторов, формат FAT 16 - для дисков средних размеров. Тип формата, а также другие характеристики FAT хранятся в блоке параметров BIOS.

Интерпретация значений элементов FAT для наиболее простых форматов FAT 12 и FAT 16 представлена в табл. 1 [3]. Первый байт FAT называется байтом идентификации (ID) FAT и имеет такое же значение, как и байт-описатель среды носителя данных, находящийся в блоке BPB.

Таблица 1

Формат и значения элементов Интерпретация значений элементов FAT
FAT 12 FAT 16
000h 0000h Свободный кластер
ff0h - ff6h fff0h - fff6h Зарезервированный кластер
ff7h fff7h Дефектный кластер
ff8h - fffh fff8h - ffffh Последний кластер файла
002h - fefh 0002h - ffefh Номер следующего кластера файла

 

Следующие два байта FAT 12 и три байта FAT 16 содержат значение ffh. Остальная часть FAT состоит из 12- или 16-битовых элементов, интерпретация значений которых приведена в табл. 1.

Очевидно, что любой файл в общем случае может занимать несколько кластеров. При этом, как следует из последней строки табл.6, все занимаемые файлом кластеры связываются в список (цепочку кластеров). Начало этого списка, то есть номер первого кластера, выделенного файлу, хранится в элементе каталога, описывающего данный файл. Иными словами, номер первого кластера равен номеру элемента FAT, определяющего кластер с начальной частью данных файла. Этот элемент содержит номер другого элемента FAT, соответствующего по номеру следующему кластеру с очередной частью данных файла, и т.д. до достижения последнего кластера, который отмечается в FAT элементом со специальным значением(f)ff8h - (f)fffh. Чаще всего используется значение (f)fffh. Таким образом, цепочка кластеров, выделенных файлу, представляется в FAT списком элементов, каждый из которых указывает на кластер, номер которого совпадает с номером соответствующего элемента FAT. Поэтому по существу значение в табл. 1 из диапазона (0)002h - (f)fefh является номером элемента FAT, указывающим на очередной кластер с тем же номером.

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

Во всех случаях предварительно необходимо прочитать одну копию FAT в память, используя, например, прерывание 25h. Затем, определив из элемента каталога номер первого кластера файла, следует с помощью FAT найти номер следующего кластера и т.д. до конца файла.

Процедура извлечения номера следующего кластера из FAT зависит от формата таблицы размещения файлов.

16-битовую FAT можно представить как массив 16-битовых чисел. Для определения номера следующего кластера следует прочитать из FAT слово, используя в качестве его индекса (номера) в массиве номер предыдущего кластера. Значение этого слова и будет являться искомым номером следующего кластера.

Для 12-битовой FAT необходимо выполнить следующие действия:

1) умножить номер предыдущего кластера на 3 и результат разделить на 2 (т.к. каждый элемент таблицы имеет длину 1.5 байта);

2) прочитать из FAT слово, используя в качестве номера его первого байта целую часть произведения, полученного в п.1;

3) если номер предыдущего кластера четный, то из прочитанного слова следует отбросить старшую шестнадцатеричную цифру, если нечетный - то младшую.

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

Принципиальной особенностью файловых систем Windows и DOS является их иерархическая, древовидная структура. Файлы, содержащие однородную и взаимосвязанную информацию, объединяются в группы, которые называются каталогами. В файловой структуре каталоги могут быть связаны друг с другом так, что внутри одного каталога могут создаваться другие каталоги, иначе называемые подкаталогами. Каждый подкаталог по своей структуре фактически является обычным файлом, содержащим список входящих в него файлов и подкаталогов.

На любом устройстве дисковой памяти ПК при выполнении операции форматирования средствами ОС (например, командой format в MS DOS) создается основной так называемый корневой каталог диска. Он находится сразу за последней копией FAT и занимает непрерывную область фиксированного размера, который задается при форматировании и определяет максимальное количество файлов и каталогов, зарегистрированных в корневом каталоге. После корневого каталога на диске находится область файлов и подкаталогов корневого каталога. На рис. 1 представлены основные области диска. Такую структуру имеют логические диски и флеш-диски.

Корневой каталог и любой подкаталог состоит из нескольких элементов (дескрипторов), описывающих файлы и подкаталоги данного каталога. Элемент каталога имеет длину 32 байта и формат[4], представленный в табл. 2.

 

 
 

 

 


Рис. 1

Таблица 2

Номер поля Смеще-ние Размер, байт Содержимое
  00h   Имя файла или каталога (для MS DOS)
  08h   Расширение имени файла
  0Bh   Атрибуты файла
  0Ch   Зарезервировано
  16h   Время создания или последней модификации файла
  18h   Дата создания или последней модификации файла
  1Ah   Номер первого кластера, распределенного файлу
  1Ch   Размер файла в байтах

 

Рассмотрим подробнее информацию, содержащуюся в полях элементов каталога.

Первое поле отведено для имени файла или каталога, представленного в символьной форме. Если число символов в имени меньше 8, то правые байты заполняются пробелами (код 20h). В первом байте поля могут находиться специальные коды, показывающие особые состояния файла. Код 00h означает, что данный элемент еще не использовался и является свободным. Когда элемент каталога выделяется для вновь создаваемого файла, в этот байт записывается код первого символа имени файла. Код E5h показывает, что соответствующий файл удален из каталога. Помимо модификации в поле имени файла изменяется также содержимое соответствующих элементов FAT(они отмечаются кодом (0)000h), но при этом информация в кластерах не изменяется. Это обстоятельство используется в программах восстановления удаленных файлов. Очевидно, что успешное восстановление возможно, если только после удаления файла на диск ничего не записывалось. По коду E5h ОС определяет, что данный элемент каталога можно использовать для нового файла.

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

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

Бит 0 отмечает файл, как только читаемый. Такое состояние защищает файл от модификации и удаления.

Биты 1 и 2 при установке в 1 превращают файл соответственно в скрытый и системный. Оба эти атрибута функционально идентичны и при установке любого из них файл не будет появляться в оглавлении каталога. Системные файлы обычно имеют оба этих атрибута.

Бит 3 означает, что данный элемент каталога хранит метку диска. Такой элемент правильно распознается только в корневом каталоге. Сама метка занимает поля имени файла и расширения, которые рассматриваются как одно поле длиной 11 байт. Для такого элемента каталога поля размера файла и номера начального кластера не используются, но поля даты и времени присутствуют.

Бит 4 означает, что элемент каталога описывает файл, являющийся подкаталогом данного каталога. Для таких элементов используются все поля элемента каталога, за исключением поля размера файла, которое содержит нули. Действительный размер подкаталога находится в результате прослеживания его цепочки кластеров в FAT. Сами подкаталоги также состоят из 32-байтных элементов, описывающих файлы и каталоги нижнего уровня. При этом в любом подкаталоге два первых элемента содержат в поле имени специальные коды и имеют специальное назначение. Первый элемент содержит в поле имени строку ". _______"(код "." - 2Eh) и служит указателем на содержащий его каталог. В поле номера начального кластера этот элемент хранит номер первого кластера, в котором находится сам подкаталог. Второй специальный элемент содержит в поле имени строку вида " .. ______". Он служит указателем каталога более высокого уровня по отношению к данному и в поле номера начального кластера хранит номер первого кластера родительского каталога. Если родительским является корневой каталог, то в указанном поле находится нулевое значение. Наличие в подкаталогах двух специальных элементов позволяет ОС организовывать связи между различными уровнями каталогов.

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

Биты 6,7 байта атрибутов не используются.

В заключение следует отметить, что один и тот же файл может иметь несколько атрибутов.

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

 

№ бит 15 11 10 5 4 0

Часы(0..23) Минуты(0..59) Секунды/2(0..29)

Рис. 2.

Шестое поле элемента каталога используется для хранения даты создания или обновления файла. Формат поля даты приведен на рис. 3.

 

№ бит 15 9 8 5 4 0

Год(0..119) Месяц(1..12) День(1..31)

Рис. 3.

Для того чтобы получить значение года обновления файла, необходимо прибавить к величине, хранимой в старших семи битах, значение 1980. Отметим, что в полях времени и даты первым размещается младший байт.

Седьмое поле элемента каталога предназначено для хранения номера начального кластера, выделенного файлу. Номер представляется целым беззнаковым числом, первый байт которого имеет смеще­ние 1Ah. Самый первый кластер пространства данных на диске всегда имеет номер 2.

Восьмое поле является последним в элементе каталога и предназначено для хранения размера файла в байтах как четырехбайтного целого беззнакового числа, причем первый байт со смещением 1Ch является младшим, а последний со смещением 1Fh - старшим. Такое поле допускает размеры файлов до 4 Гб.

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

2.1. Чтение и анализ системных областей каталогов

2.1.1. Создать на диске A: в корневом каталоге средствами NC или командами DOS структуру подкаталогов S1 – S6, по варианту, задаваемому преподавателем.

Скопировать из текущего или другого каталога винчестера 2-3 файла длиной 10 - 12 Кб (или создать эти файлы) во все подкаталоги диска A:. Командой LABEL задать диску метку.

2.1.2. Вычислить границы в секторах основных системных областей дискеты. Построить структуру всего диска (см. рис. 1), указав на ней значение границы каждой области.

2.1.3. С помощью команд отладчика debug l,d прочитать в память необходимое число секторов корневого каталога диска A:. Найти строки дампа, содержащие следующие элементы: а) файлов корневого каталога; б) подкаталогов корневого каталога; в) метки диска. Занести в отчет структуру каждого элемента, заполнив таблицу 3.

2.1.4. По номерам начальных кластеров подкаталогов S1,S2 вычислить соответствующие номера начальных секторов этих подкаталогов. Прочитать секторы в память и проанализировать их содержимое. Найти специальные элементы подкаталогов. Зафиксировать в отчете их структуру и содержимое полей в виде таблицы 4, структура которой аналогична табл. 3. Найти элементы файлов, зарегистрированных в каждом подкаталоге. Занести в табл. 4 структуру и расшифрованное содержимое полей этих элементов.

Таблица 3

Смещение Размер, байт Содержимое в 16-ричном коде Расшифровка содержимого
Метка
       
Файлы корневого каталога
       
Подкаталоги S1, S2
       

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

2.1.5. Выполнить задание п.2.1.4 для подкаталогов S3 - S6 в файловой структуре диска A:. Построить структуру каталогов диска c указанием на ней начальных номеров секторов для каждого подкаталога.

 

2.2. Чтение, анализ и методика практического применения FAT

2.2.1. Используя результаты п.2.1.2, с помощью команд отладчика l, d прочитать FAT диска A: в память. Содержимое FAT (2-3 первых сектора) зафиксировать в отчете.

2.2.2. Для файловой структуры диска, созданной в п.2.1.1, найти:

а) цепочку кластеров для двух файлов корневого каталога;

б) цепочку кластеров для двух подкаталогов из множества S1-S6;

в) цепочку кластеров для двух файлов любого из подкаталогов.

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

№ п/п Номер преды- дущего кластера Четность   Результат х 3 Результат Div 2 (ад- рес в FAT) Элемент FAT Адрес сле- дующего кластера
Файлы корневого каталога
             
Подкаталоги корневого каталога
             
Файлы подкаталогов
             

Таблица 5

 

Примечание. Для определения номера начального кластера файла или подкаталога запустить отладчик debug, прочитать в память корневой каталог (или требуемый подкаталог), найти соответствующие им элементы и в них прочитать поле номера начального кластера.

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

2.2.4. Выполнить п.2.2.2 для диска A: с помощью программы DISKEDIT.

2.2.5. Используя программу DISKEDIT, прочитать FAT диска D:. Найти и просмотреть цепочку кластеров для 2-3 файлов и подкаталогов рабочего каталога группы. Зафиксировать их номера в отчете.

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

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

 



Поделиться:


Последнее изменение этой страницы: 2017-02-06; просмотров: 441; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.17.156.103 (0.01 с.)