Скачать 419.36 Kb.
|
Министерство образования Украины Одесская государственная академия холодаИнститут информационных технологийКафедра «Информационных систем» Разработка резидентного обработчика прерываний от клавиатуры Курсовой проект по дисциплине «Системы программирования и операционные системы» Руководитель Ненов А. Д. Исполнитель Ст. гр. 333А Лазанюк А. С. Зач. книжка № 983214 Защищён с оценкой _____________________ (личная подпись) _______________ г. Одесса 2000 г. Содержание:
1. Задание Разработка резидентного обработчика прерываний от клавиатуры с подключением до системного. Данный обработчик должен производить запись скэн-кодов всех нажимаемых клавиш, а также фиксировать байт флагов клавиатуры при каждом нажатии. Обработчик должен иметь механизм выгрузки из оперативной памяти встроенный в него самого. Также программа должна иметь защиту от повторной установки в оперативную память. 2. Краткие теоретические сведенья 2.1. Резидентный обработчик прерываний Большой класс программ, обеспечивающих функционирование вычислительной системы (драйверы устройств, программы шифрации и защиты данных, русификаторы, обслуживающие программы типа электронных блокнотов или калькуляторов и др.), должны постоянно находиться в памяти и быстро реагировать на запросы пользователя или на какие-то события, происходящие в вычислительной системе. Такие программы носят названия программ, резидентных в памяти (Terminate and Stay Resident, TSR), или просто резидентных программ. Сделать резидентной можно как программу типа СОМ, так и программу типа ЕХЕ, однако ввиду того, что резидентная программа должна быть максимально компактной, чаще всего в качестве резидентных используют программы типа СОМ. Рассмотрим типичную структуру резидентной программы и системные средства оставления ее в памяти после инициализации (рис. 2.1). text segment 'code' assume CS:text,DS:text org 100h main proc jmp init ;Переход на секцию инициализации ; Данные резидентной секции программы . . . entry: ; Текст резидентной секции программы . . . main endp init proc ;Секция инициализации . . . mov DX, (init-main+10Fh)/16;Paзмер в параграфах mov АН,3100h ;функция "Завершить и оставить в int 21h ; памяти" init endp text ends end main Рис 2.1. Типичная структура резидентной программы. Программа пишется в формате СОМ, поэтому в ней предусматривается только один сегмент, с котором связываются сегментные регистры CS и DS; в начале сегмента резервируется l00h байт дня PSP. При запуске программы с клавиатуры управление передается (в соответствии с параметром директивы end) на начало процедуры main. Командой jmp сразу же осуществляется переход на секцию инициализации, которая может быть оформлена в виде отдельной процедуры или входить в состав процедуры main. В секции инициализации, в частности, подготавливаются условия для работы программы уже в резидентном состоянии. Последними строками секции инициализации вызывается функция DOS 31h, которая выполняет завершение программы с оставлением в памяти указанной ее части. Эта функция не может оставлять резидентными программы размером больше 64 Кб, но многие программы, написанные на ассемблере, соответствуют этому условию. Так как резидентные программы уменьшают объем основной памяти, их всегда пишут на ассемблере и оптимизируют для достижения минимального размера. Размер резидентной части программы (в параграфах) передается DOS в регистре DX. Определить размер резидентной секции можно, например, следующим образом. К разности смещений mil-main, которая равна длине резидентной части программы в байтах, прибавляется размер PSP (l00h) и еще число 15 (Fh) для того, чтобы после целочисленного деления на 16 результат был округлен в большую сторону. С целью экономии памяти секция инициализации располагается я конце программы и отбрасывается при ее завершении. Точка входа main при загрузке jmp init . Резидентные поля данных Резидентная часть Точка входа entry программы при вызове . Резидентные коды iret init . Секция инициализации Завершение программы Функция DOS 31h с составлением в памяти её резидентной части Рис. 2.2 Взаимодействие элементов резидентной программы. Функция 31h, закрепив за резидентной программой необходимую для ее функционирования память, передает управление командному процессору и вычислительная система переходит в исходное состояние. Наличие программы, резидентной в памяти, никак не отражается на хода вычислительного процесса, за исключением того, что уменьшается объем свободной памяти. Одновременно в память может быть загружено любое число резидентных программ. На рис. 2.2 показаны элементы резидентной программы и их взаимодействие. Любая резидентная программа имеет по крайней мере две точки входа. При запуске с клавиатуры программы типа .СОМ управление всегда передается на первый байт после PSP (IP=l00h). Поэтому практически всегда первой командой резидентной программы является команда jmp, передающая управление на начало секции инициализации. После отработки функции DOS 31h программа остается в памяти в пассивном состоянии. Для того, чтобы активизировать резидентную программу, ей надо как-то передать управление и, возможно, параметры. Вызвать к жизни резидентную программу можно разными способами, но наиболее употребительным является механизм аппаратных или программных прерываний. В этом случае в секции инициализации необходимо заполнить соответствующий вектор адресом резидентной части программы (точка entry на рис. 2.2). Адрес entry образует вторую точку входа в программу, через которую осуществляется ее активизация. Очевидно, что резидентная секция программы должна заканчиваться командой выхода из прерывания iret. Поля данных резидентной части программы переместились в начало программы после команды imp. Это довольно естественное место дня резидентных данных, потому что и при первом запуске, и при активизации сюда никогда не будет передано управление. При заполнении в секции инициализации векторов не возникает проблем с перенастройкой регистра DS, так как в программе типа СОМ все регистры указывают на единственный сегмент программы. В секции инициализации предусмотрен, как это обычно делается, вывод на экран сообщения о загрузке программы в память. После запуска программы она остается в памяти и, активизируясь фактически аппаратными прерываниями от клавиатуры (а более точно – программой BIOS, активизируемой аппаратными прерываниями от клавиатуры). |
Конспект лекций по дисциплине: «Операционные системы и среды» «Системы баз данных», «Инструментальные средства разработки аппаратно-программных систем», «Микропроцессоры и микропроцессорные системы»,... | Рабочая учебная программа по дисциплине «Операционные системы» разработана... Операционные системы [Текст]: рабочая учебная программа. Тюмень: гаоу впо то «тгамэуп». 2013. 17 с | ||
Паспорт программы учебной дисциплины «Операционные системы» Область применения Рабочая программа учебной дисциплины «Операционные системы» является частью рабочей основной профессиональной образовательной программы... | Пояснительная записка к курсовой работе по дисциплине «Разработка... Курсовой проект содержит: страниц –20, источников – 5, рисунков – 6, таблиц – 2 | ||
Пояснительная записка к курсовой работе по дисциплине «Разработка... Курсовой проект содержит: страниц –22, источников – 5, рисунков – 6, таблиц – 2 | Самостоятельная работа приобщает студентов к творчеству, поиску и... Автор разработки: Торгашин Геннадий Владимирович, гобу спо во «Борисоглебский индустриальный техникум», преподаватель дисциплины... | ||
Конспект по курсу лекций Операционные системы Граур Светлана группа... Основные блоки: 1)введение (историческое развитие вычислительных систем (ВС), определяемое появлением и развитием программного обеспечения... | Вопросы для экзаменов по предмету операционные системы Основные компоненты компьютерной системы, общая картина функционирования компьютерной системы | ||
Рабочая программа По дисциплине «Операционные системы» | Пояснительная записка к курсовому проекту по дисциплине «Разработка... Курсовой проект содержит: страниц – 22, источников – 8, рисунков – 9, таблиц – 1 | ||
Приложение примерные Темы для Курсовой работы по дисциплине Курсовой работа по дисциплине «Технологии программирования» состоит из 2 частей: теоретическая часть; практическое задание | Методические указания к практическим занятиям рпк «Политехник» Методические указания предназначены для проведения практических занятий по дисциплине “Базы данных” в соответствии со стандартом... | ||
Операционные системы конспект лекций Внутренняя организация файловой системы: модель версии Fast File System (ffs) bsd 193 | Пояснительная записка к курсовому проекту по дисциплине «Разработка... Курсовой проект содержит: страниц –19, источников – 5, рисунков – 6, таблиц – 2 | ||
Методические указания по выполнению самостоятельной работы по дисциплине... Самостоятельная работа является одним из видов учебной деятельности студентов, способствует развитию самостоятельности, ответственности... | Методические указания к курсовой работе по дисциплине «Системы, технология... Системы, технология и организация услуг автосервиса: Метод указания к курсовой работе. – Ростов н/Д: Изд центр дгту, 2007. 31 с |