Министерство общего и профессионального образования Российской Федерации
Комсомольский-на-Амуре государственный технический университет
Факультет компьютерных технологий
кафедра «Математического обеспечения и применения ЭВМ»
Тихомиров В.А.
системе MS DOS
лабораторная работа № 5 по курсу
“Операционные системы”
специальность 2204
Комсомольск-на-Амуре
2001 г.
“Операционные системы”, специальность 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, восстанавливает тем самым и их.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.