Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Алгоритм написания TSR программ




 

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

1) Формулируем задачу.

2) Определяем "точки входа" и, исходя из них, выбираем номера прерываний, которые нужно перехватить. При этом учитываем проблему нереентерабельности. Также анализируем целесообразность возвращения управления исходным обработчикам перехваченных нами прерываний.

3) Пишем целевую процедуру (процедуры) с учетом или без учета реентерабельности.

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

Любая программа, будь то простейший пример типа “Hello world” или TSR всегда содержит ошибки, причем, если их нет в исходном тексте программы - значит есть наверняка в самом компиляторе. Под средствами анализа и отладки программ, написанных на языке ассемблер, понимают средства, которые статически или динамически позволяют анализировать ход выполнения программы и изучать ее структуру.

Самым распространенным средством отладки являются специальные программы – отладчики (debugger). Стандартный отладчик debug.com входит в комплект поставки MS DOS, однако ввиду его простоты работать с ним очень сложно. Самым распространенным средством отладки под MS DOS является программа Turbo Debugger. Это средство позволяет работать с резидентами следующим образом. Для отладки резидентных программ необходимо загрузить отлаживаемую программу, запустить ее, найти точку входа, поставить там клавишей F2 точку останова и выбором в меню FILE – RESIDENT оставить отладчик резидентным в памяти, далее произойдет выход в MS DOS и пользователю будет необходимо предпринять действия по активизации резидента. При проходе точки останова управление будет передано отладчику, после чего можно приступать к работе.

Под статическими методами отладки понимают анализ структуры программы дизассемблером - программой, преобразующей код в ассемблерную мнемонику. Основная трудность в этом случае состоит в определении дизассемблером, какие участки программы являются данными, а какие - кодом. В первом случае дизассемблеру необходимо оставить их без изменений, а во втором преобразовать их в ассемблерные мнемоники. Задача такого рода не является тривиальной.

Sourcer v 4.2 by V Communication Inc, IDA v3.43 – примеры дизассемблеров.


 

КОНТРОЛЬНАЯ РАБОТА № 1

ЗАДАНИЕ К КОНТРОЛЬНОЙ РАБОТЕ № 1

 

· Используя знания, полученные при выполнении лабораторных работ

№№ 1,2,3, выполнить исследования по изучению принципов представления информации на магнитных дисководах.

· Ответить письменно на контрольные вопросы. Номер блока вопросов выбирается по общим правилам.

 

Цель работы

 

§ Изучить принципы представления информации на накопителях типа магнитных дисков.

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

 

Задание

1. Изучить теоретический материал.

2. Просмотреть каталог диска в сервисной надстройке NORTON COMMANDER и OS SHELL. Создать директорию на винчестере и переписать в нее содержимое гибкого магнитного диска (ГМД).

3. Проверить ГМД утилитой NDD на наличие сбойных блоков и потерянных кластеров. Сформировать файл результата проверки.

4. Утилитой SD добиться минимальной фрагментации файлов. Оценить, изменился ли объем занятой части диска.

5. Отформатировать ГМД в виде системного диска и запустить с него машину.

6. Восстановить на ГМД хранящуюся, на нем ранее информацию.

7. Вновь выполнить пп 2.3., 2.4.

8. Удалить на ГМД несколько файлов и, затем соответствующей утилитой восстановить их.

9. Найти область FAT и просмотреть ее содержимое.

10. Написать отчет о проделанной работе, где кратко привести теоретические сведения и результаты Вашего исследования ГМД.

 

Изучение принципов работы с дисковыми накопителями в системе MS DOS

 

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

- какие диски используются в ЭВМ;

- структура диска;

- администратор работы с дисками;

- форматирование и инициализация системного и обычного (рабочего) дисков;

- системные файлы;

- форматеры дисков - утилиты:

SF (из пакета Norton Utilites);

FORMAT (штатный форматер MS DOS);

MAXI

Магнитные диски

 

Итак, какие магнитные диски наиболее широко используются в современных ЭВМ для создания энергонезависимых устройств памяти?

Магнитные диски (МД) - представляют собой немагнитный диск, покрытый слоем ферроматериала, способного под действием магнитного поля принимать определенную магнитную ориентацию и затем длительное время сохранять ее. По конструктивному исполнению диски могут быть гибкими и дешевыми или жесткими и дорогими.

Гибкий магнитный диск расположен в защитном пластиковом конверте.

В настоящее время наиболее распространены диски диаметром 3 дюйма. Они имеют жесткий конверт, а также пластину, закрывающую рабочую зону диска и открывающие ее только когда диск находится в дисководе. Этот вариант ГМД имеет емкость 720 Кб или 1.44 Мб (зависит от типа диска).

Существуют также жесткие магнитные диски (ЖМД). ЖМД представляет собой один, а чаще несколько параллельно расположенных, дисков, вращающихся на одной оси и также покрытых ферромагнитным слоем. Эти диски находятся в герметизированном корпусе, чаще в вакууме. Вращаются диски постоянно, после включения питания компьютера. Скорость вращения ЖМД значительно превышает скорость вращения ГМД. Этим и некоторыми другими способами достигается высокая скорость обмена информацией с ЖМД, а также высокая информационная емкость ЖМД (5, 20, 40...40000 Мб и выше). ЖМД располагается в корпусе компьютера.

Структура диска.

 

Под структурой диска будем понимать совокупность и порядок следования расположенных на нем информационных элементов.

Как Вам известно, или, как Вы уже догадались, диски предназначены для хранения полезной пользователю информации. Это может быть текст, рисунки, музыка и т. д. Информация, представленная на физических носителях, делится на блоки разных размеров, содержащих логически связанную информацию. Упорядоченная система записей называется "файл".

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

Каким образом достигается оперативность обработки файлов и как она организована?

Вращение диска производится очень медленно по сравнению со скоростью работы процессора: одну и ту же запись можно считать за время не меньшее, чем период вращения диска. Поэтому произвольный доступ к информации на диске обычно не используется, а применяется считывание и запись по блокам. Размер блока может быть 256 или 512 байт.

Весь диск разбит на дорожки, называемые треками или цилиндрами (если в дисководе имеется несколько дисков), являющимися окружностями разного диаметра с центром, совпадающим с осью вращения диска. Количество треков конечно (от нескольких десятков на ГМД до сотен на ЖМД) и определяется типом дисковода и разметкой (толкование понятия ниже) диска. Для удобства поиска информации и ускорения обращения к диску каждый трек разбит на секторы (толковать в геометрическом смысле). Их может быть от восьми до нескольких десятков и также определяется типом диска и разметкой.

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

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

Однако, на новом, только что выпущенном диске, еще нет никакой информации, в том числе нет поля адреса, без которого никакие полезные действия с диском производить нельзя (если не считать использования ГМД в качестве летающей тарелки, а ЖМД - в качестве молотка для забивания шурупов). Программа, подготавливающая новый диск к работе, называется форматером. Она записывает (размечает) служебные области (сравните с разлиновкой строк в тетради), после чего проводит инициализацию диска - указывает, что на диске отсутствует информация (после разметки на диске остаются произвольные данные (зависят от форматера), в том числе в каталоге могут оказаться отмечены несуществующие файлы). Так же форматер проверяет физические ошибки диска и отмечает их в служебной области FAT (объяснение FAT далее по тексту).

При обработке файла- а это наиболее частая операция с диском- требуется обработать несколько секторов (объем сектора может быть 512 байт). Однако, после чтения или записи одного сектора, драйверу требуется обработать его - найти нужные данные или что-либо еще. За это время диск повернется на некоторый угол и около головки окажется уже следующий сектор или последующий или еще дальше. Однако может оказаться, что дальше требуется предыдущий сектор. Несомненно, можно дождаться, когда диск повернется на необходимый угол, но время - деньги.

Чтобы как-то уменьшить требуемое время, введена логическая структура кластер - совокупность секторов, которые обрабатываются одновременно. Иначе говоря, диск разбит на сектора, а секторы объединены в кластеры (от одного до десятка или более секторов на кластер). Секторы в кластере расположены в таком порядке, чтобы после считывания первого сектора кластера в память, около головки оказался второй сектор и т.д. Тот же порядок будет наблюдаться при записи.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...