Создание TSR программ в операционной

Страницы работы

Содержание работы

Министерство общего и профессионального образования Российской Федерации

Комсомольский-на-Амуре государственный технический университет

Факультет компьютерных технологий

кафедра «Математического обеспечения и применения ЭВМ»

                                                                                             Тихомиров В.А.

Создание TSR программ в операционной

системе MS DOS

лабораторная работа  № 5 по курсу

“Операционные системы”

специальность 2204

Комсомольск-на-Амуре

2001 г.


Создание TSR программ в операционной системе MS DOS лабораторная работа по курсу

“Операционные системы”, специальность 2204 /Сост. Тихомиров В.А. – Комсомольск-на-Амуре: Комсомольский-на-Амуре государственный технический университет, 2001, - 14 с.

Приводятся теоретические материалы по правилам разработки резидентных программ в операционной системе MS DOS. Подробно разбирается  пример написания резидентной программы на языке ассемблер с соблюдением всех особенностей работы резидентной программы в памяти.

Разработка предназначена для студентов второго высшего образования специальности 2204 (программное обеспечение вычислительных машин и автоматизированных комплексов).

Может использоваться в курсе «Операционные системы» бюджетной формы обучения студентов специальности 2204.


Резидентные программы.

Резидентная программа (terminate and stay resident, TSR) является специальным типом программы, которая остается в памяти после того, как вы ее запустили. Такое поведение находится в полной противоположности к поведению обычной прикладной программы, которая остается в памяти только в процессе выполнения. Эти программы называются резидентными еще и потому, что они требуют для себя блок памяти и обычно остаются в нем до тех пор, пока система не будет перезагружена. Фактически, они становятся почти постоянными жителями в памяти, подобно самой DOS.

Обычно установленная резидентная программа бездействует до тех пор, пока некоторый внешний стимул (нажатие на клавишу или такт системных часов вашей ПЭВМ) не "разбудит" ее. В этот момент резидентная программа временно берет на себя управление, выполняет свою назначенную задачу и затем возвращает управление с тем, чтобы могла продолжить выполнение прерванная программа. Классический пример резидентной программы "всплывающий" на экране калькулятор, который появляется, когда вы нажимаете на определенную комбинацию клавиш. Другой пример - спулер печати, программа, которая перехватывает данные, посылаемые другой программой на принтер, буферизует эту информацию в ОЗУ и передает ее принтеру символ за символом. Ценность таких программ заключается в том, что они преодолевают ограничения однопрограммного режима DOS. Вы можете воспользоваться их услугами в любое время, даже если работает другая программа. В случае спулера печати резидентная программа как бы превращает DOS в многозадачную систему (что означает, что две или более программы могут работать одновременно), потому что вы можете продолжать свою работу, в то время как на ее фоне выполняется печать.

Резидентные программы  и  система прерываний, перехват прерываний.

Как уже говорилось выше, резидентная программа бездействует до тех пор, пока некоторый внешний стимул не "разбудит" ее. Очень часто таким внешним стимулом является возникновение какого-либо прерывания в работе операционной системы. Если резидентная программа «следит» за этим прерыванием, то она может активизироваться.

Для организации системы синхронных прерываний в MS DOS отводится первый килобайт оперативной памяти компьютера, где записаны четырехбайтовые вектора прерываний. При выдаче команды INT N вызывается подпрограмма обработки прерывания, адрес которой расположен на N-ном месте в таблице векторов прерываний. Каждый вектор прерывания представляет из себя две двухбайтовые записи, первая из которых IP программы обработки прерывания (IP - название счетчика команд микропроцессоров семейства 8086, сокращение английского Instruction Pointer), а вторая CS этой программы. Так как каждый вектор обработки прерывания имеет длину четыре байта то адрес N-го вектора просто равен N*4.

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

На перехвате системных и организации собственных прерываний как правило основана работа так называемых TSR-программ (Terminate but Stay Resident). При обращении к соответствующим прерываниям управление получает ТSR-программа, которая и выполняет нестандартную, или расширенную обработку этого прерывания. Обработка в TSR-программе может быть организована как перед, так и после системной обработки, а также и вместо системной обработки. Все программы обработки прерываний должны оканчиваться командой IRET которая, в отличии от команды RЕТ, не только возвращает управление в вызвавшую программу но и восстанавливает PSW - слово состояния процесса (Process Status Word). Аналогично и команда INT, в отличии от команды CALL, сохраняет в стеке не только адрес возврата но и текущее PSW. Кроме того команда INT сбрасывает флаги IF и TF, а команда IRET, восстанавливая PSW, восстанавливает тем самым и их.

Похожие материалы

Информация о работе