Курсовой проект по дисциплине «Системы программирования и операционные системы»





Скачать 419.36 Kb.
НазваниеКурсовой проект по дисциплине «Системы программирования и операционные системы»
страница2/5
Дата публикации11.03.2015
Размер419.36 Kb.
ТипКурсовой проект
100-bal.ru > Информатика > Курсовой проект
1   2   3   4   5

2.2. Защита резидентной программы от повторной установки


Как правило, в секции инициализации загружаются векторы прерываний, через которые будет активизироваться программа. Последними строками секции инициализации вызывается функция DOS 31h, которая выполняет завершение программы с оставлением в памяти ее резидентной части.

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

Наиболее распространенным методом защиты резидентной программы от повторной установки является использование прерывания 2Fh, специально предназначенного для связи с резидентными программами. При вызове этого прерывания в регистре АН задается номер функции (от 00h до FFh), а в регистре AL - номер подфункции (в том же диапазоне). 00h - 7Fh зарезервировано для DOS/Windows 0B8h - 0BFh зарезервировано для сетевых функций 0C0h - 0FFh отводится для программ.

Для того, чтобы резидентная программа могла отозваться на вызов прерывания int 2Fh, в ней должен иметься обработчик этого прерывания. Фактически все резидентные программы, как системные, так и прикладные, имеют такие обработчики, через которые осуществляется не только проверка на повторную установку, но и вообще связь с резидентной программой: смена режима ее работы или получение от неё в транзитную программу каких-то параметров. Задание действия, которое надлежит выполнить обработчику прерывания 2Fh конкретной резидентной программы, осуществляется с помощью номера подфункции, помещаемого перед вызовом прерывания в регистр AL

Таким образом, обработчик прерывания 2Fh резидентной программы должен, прежде всего, проверить номер функции в регистре АН; при обнаружении "своей" функции обработчик анализирует содержимое регистра AL и выполняет затребованные действия, после чего командой iret передаст управление вызвавшей его программе. Если, однако, обработчик обнаружил в регистре АН "чужую" функцию, он должен командой jmp CS:old_2fh передать управление по цепочке тому обработчику, адрес которого был ранее в векторе 2Fh. В результате вызов int 2Fh из любой программы будет проходить по цепочке через все загруженные резидентные программы, пока не достигнет "своей" программы или не вернет управление в вызвавшую программу через обработчик DOS (который, очевидно, всегда будет самым последним в цепочке).

Естественно, для коммуникации с резидентной программой должен быть установлен некоторый интерфейс. Обычно при проверке на повторную установку резидентная программа, если она уже находится в памяти, возвращает в регистре AL значение FFh, которое является признаком запрета вторичной загрузки. Иногда для большей надежности идентификации "своей" функции резидентная программа, помимо значения FFh в регистре AL, возвращает еще какие-то обусловленные заранее коды в других регистрах. Часто через дополнительные регистры передастся символьная информация, например, имя программы. В этом случае, если вызвавшая программа с именем DUMP.COM (т.е. вторая копия резидентной программы, выясняющая, можно ли ей остаться резидентной в памяти) получает после вызова int 2Fh в регистре AL значение FFh, а в регистрах СХ и DX символьные коды 'DU' и 'МР', она может быть уверена, что ее первая копия уже находится в памяти. Если же в регистре AL вернулся код FFh, а в регистрах СХ и DX -коды, например, 'ОК' и 'RB', это, скорее всего означает, что закрепленная за нашей программой функция мультиплексного прерывания ухе используется другой резидентной программой. В этом случае стоит сменить функцию, чтобы не возбуждать конфликтных ситуаций.

В резидентную часть следует включить обработчик прерывания 2Fh. Его расположение в пределах текста программы не имеет особого значения; мы поместили его в начале резидентной части. Секция инициализации претерпела большие изменения. Она должна начинаться с вызова прерывания 2Fh с соответствующей функций для проверки на повторную установку. Если первая копия программы уже загружена, текущую программу следует завершить не функцией 3th (завершить и оставить в памяти), а обычной функцией завершения 4Ch. Если же нашей программы в памяти нет, то в секции инициализации, помимо заполнения ее "рабочего" вектора, в данном случае 03h, следует также установить наш обработчик мультиплексного прерывания.

Среди функций мультиплексного прерывания, предназначенных для прикладных программ, мы произвольно выбрали для нашей программы функцию F1h, а для проверки на повторную установку подфункцию 00h. Резидентный обработчик прерывания 2Fh, включенный в нашу программу, проверяет номера функции и подфункции и при обнаружении каких-либо других кодов передает управление следующему обработчику этого прерывания. Если же вызвана функция F1h с подфункцией 00h, обработчик устанавливает в регистре AL значение FFh ("я уже загружен") и возвращает управление в вызвавшую программу командой iret.

Секция инициализации начинается с проверки на повторную установку. После загрузки в регистр АН номера функции (F1h), а в регистр AL - номера подфункции (00h), вызывается прерывание 2Fh. После возврата из прерывания анализируется содержимое регистра AL Если обработчик вернул значение FFh, программа должна завершиться без оставления в памяти. Эти действия выполняются по метке installed. Если возвращено другое значение, инициализация продолжается (для надежности стоило проверить, возвращен ли именно 0). Сохраняется старое содержимое вектора 2Fh, устанавливается наш обработчик этого прерывания, после чего выполняются все действия по установке, предусмотренные в старом варианте программы динамического дампа. При переходе на метку installed на экран выводится сообщение о невозможности повторной установки и выполняется функция завершения 4Сh с кодом возврата 01h. Последнее, конечно, имеет символический характер, поскольку этот код в дальнейшем не анализируется.
1   2   3   4   5

Похожие:

Курсовой проект по дисциплине «Системы программирования и операционные системы» iconКонспект лекций по дисциплине: «Операционные системы и среды»
«Системы баз данных», «Инструментальные средства разработки аппаратно-программных систем», «Микропроцессоры и микропроцессорные системы»,...
Курсовой проект по дисциплине «Системы программирования и операционные системы» iconРабочая учебная программа по дисциплине «Операционные системы» разработана...
Операционные системы [Текст]: рабочая учебная программа. Тюмень: гаоу впо то «тгамэуп». 2013. 17 с
Курсовой проект по дисциплине «Системы программирования и операционные системы» iconПаспорт программы учебной дисциплины «Операционные системы» Область применения
Рабочая программа учебной дисциплины «Операционные системы» является частью рабочей основной профессиональной образовательной программы...
Курсовой проект по дисциплине «Системы программирования и операционные системы» iconПояснительная записка к курсовой работе по дисциплине «Разработка...
Курсовой проект содержит: страниц –20, источников – 5, рисунков – 6, таблиц – 2
Курсовой проект по дисциплине «Системы программирования и операционные системы» iconПояснительная записка к курсовой работе по дисциплине «Разработка...
Курсовой проект содержит: страниц –22, источников – 5, рисунков – 6, таблиц – 2
Курсовой проект по дисциплине «Системы программирования и операционные системы» iconСамостоятельная работа приобщает студентов к творчеству, поиску и...
Автор разработки: Торгашин Геннадий Владимирович, гобу спо во «Борисоглебский индустриальный техникум», преподаватель дисциплины...
Курсовой проект по дисциплине «Системы программирования и операционные системы» iconКонспект по курсу лекций Операционные системы Граур Светлана группа...
Основные блоки: 1)введение (историческое развитие вычислительных систем (ВС), определяемое появлением и развитием программного обеспечения...
Курсовой проект по дисциплине «Системы программирования и операционные системы» iconВопросы для экзаменов по предмету операционные системы
Основные компоненты компьютерной системы, общая картина функционирования компьютерной системы
Курсовой проект по дисциплине «Системы программирования и операционные системы» iconРабочая программа По дисциплине «Операционные системы»

Курсовой проект по дисциплине «Системы программирования и операционные системы» iconПояснительная записка к курсовому проекту по дисциплине «Разработка...
Курсовой проект содержит: страниц – 22, источников – 8, рисунков – 9, таблиц – 1
Курсовой проект по дисциплине «Системы программирования и операционные системы» iconПриложение примерные Темы для Курсовой работы по дисциплине
Курсовой работа по дисциплине «Технологии программирования» состоит из 2 частей: теоретическая часть; практическое задание
Курсовой проект по дисциплине «Системы программирования и операционные системы» iconМетодические указания к практическим занятиям рпк «Политехник»
Методические указания предназначены для проведения практических занятий по дисциплине “Базы данных” в соответствии со стандартом...
Курсовой проект по дисциплине «Системы программирования и операционные системы» iconОперационные системы конспект лекций
Внутренняя организация файловой системы: модель версии Fast File System (ffs) bsd 193
Курсовой проект по дисциплине «Системы программирования и операционные системы» iconПояснительная записка к курсовому проекту по дисциплине «Разработка...
Курсовой проект содержит: страниц –19, источников – 5, рисунков – 6, таблиц – 2
Курсовой проект по дисциплине «Системы программирования и операционные системы» iconМетодические указания по выполнению самостоятельной работы по дисциплине...
Самостоятельная работа является одним из видов учебной деятельности студентов, способствует развитию самостоятельности, ответственности...
Курсовой проект по дисциплине «Системы программирования и операционные системы» iconМетодические указания к курсовой работе по дисциплине «Системы, технология...
Системы, технология и организация услуг автосервиса: Метод указания к курсовой работе. – Ростов н/Д: Изд центр дгту, 2007. 31 с


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск