Автор работы: Пользователь скрыл имя, 15 Декабря 2010 в 22:24, курсовая работа
Компьютер должен обладать способностью реагировать на события, происходящие вне его микропроцессора, например, воспринимать информацию, вводимую с клавиатуры.
Существует два способа организации такой реакции. Один способ состоит в постоянном ожидании события. Такой способ называется "сканированием" или "опросом", и такой опрос может занимать большую часть времени компьютера. Другой способ позволяет компьютеру спокойно выполнять свою работу, пока не произойдет событие, требующее его внимания. Такой подход называется использованием "прерываний". Прерывания и исключения — такие ситуации в операционной системе, в которых нормальный поток выполнения кода процессором прерывается. Эти ситуации обнаруживаются как программным, так и аппаратным обеспечением.
•Введение………………………………………………………………….3
•1. Общий механизм прерываний………………………………………..4
•2. Классификация прерываний………………………………………….8
2.1. Виды прерываний…………………………………………….8
2.2.Уровни запросов программных прерываний………………..9
2.3. Предопределенные IRQL……………………………………11
2.4. Общая классификация прерываний………………………...12
•3. Средства системы прерываний………………………………………14
3.1. Аппаратные средства системы прерываний………………..14
3.2. Программные средства системы прерываний ………..……14
3.3. Обработка прерывания в реальном режиме ………………..15
3.4. Обработка прерываний в защищенном режиме …..………. 17
3.5. Классификация прерываний в защищенном режиме………18
3.6. Диспетчеризация прерываний……………………………….20
3.7. Обработка аппаратных прерываний…………………………20
3.8. Таблица дескрипторов прерываний IDT…………………….23
3.9. Особенности таблицы IDT……………………………………24
3.10. Обобщенная схема обработки прерывания в защищенном режиме………………………………………………………………25
•Вывод………………………………………………………………………29
•Библиографический список………………………………………………31
Например,
ядро обновляет системные часы. Но
внешние устройства вроде клавиатур,
координатных и дисковых устройств тоже
генерируют множество прерываний; значит,
драйверы устройств должны как-то сообщать
ядру, какую процедуру следует вызвать
для обработки прерывания от того или
иного устройства.
3.8.
Таблица дескрипторов
прерываний IDT
Вместо таблицы векторов прерываний система прерываний имеет дело с таблицей дескрипторов прерываний IDT (interrupt descriptor table)
Таблица IDT связывает каждый вектор прерывания с дескриптором процедуры или задачи, которая будет обрабатывать это прерывание.
Элементами таблицы IDT являются дескрипторы. Размер дескриптора равен 8 байтам.
Дескрипторы в таблице прерываний обычно называются шлюзами (иногда коммутаторами).
Шлюзы предназначены для указания точки входа в программу обработки прерывания.
В
дескрипторной таблице
Физически
микропроцессор отличает шлюзы по содержимому
полей.
3.9.
Особенности таблицы IDT
В отдельных случаях есть смысл описывать все 256 дескрипторов этой таблицы, формируя для неиспользуемых номеров прерываний шлюзы-заглушки. Это позволит корректно обрабатывать все прерывания, даже если они и не планируются к использованию в данной задаче. Если этого не сделать, то при незапланированном прерывании с номером, превышающим пределы IDT для данной задачи, будет возникать исключительная ситуация общей защиты (с номером 13 (ODh)).
Адрес и длина таблицы IDT содержатся в регистре idtr.
В реальном режиме регистр idtr также содержит адрес таблицы прерываний, но при этом каждый вектор занимает 4 байта и содержит 32-разрядный адрес в формате CS:IP. Начальное значение этого регистра равно нулю, но в него можно занести и другое значение.
Þ Возможно произвольное размещение в памяти этой таблицы не только в защищенном режиме, но и реальном.
В защищенном режиме произвести загрузку регистра idtr может только код с максимальным уровнем привилегий.
Доступ
к таблице IDT со стороны пользовательских
(прикладных) программ невозможен.
3.10.
Обобщенная схема обработки
прерывания в защищенном
режиме
При возникновении прерывания от источника с номером п микропроцессор, находясь в защищенном режиме, выполняет следующие действия:
1.
Определяет местонахождение
2. Складывает значение адреса, по которому размещена IDT, и значение n*8. По данному смещению в таблице IDT должен находиться 8-байтовый дескриптор, определяющий местоположение процедуры обработки прерывания.
3.
Переключается на процедуру
Шлюз ловушки
Формат шлюза ловушки:
Offset(16..31), offset(0..15) - первая и вторая половины смещения в сегменте
Selector - селектор, указывающий на дескриптор в LDT (local descriptor table) или GDT (global descriptor table)
P - Бит присутствия (0 или 1)
DPL - Определение минимального уровня привилегий задачи, которая может передать управление обработчику прерываний через данный шлюз (обычно DPL = 112)
Type - Тип шлюза (1111 – ловушка)
000 - Постоянное значение
WC – не используется
Когда возникает прерывание и его вектор выбирает в таблице IDT дескриптор шлюза с типом ловушки, микропроцессор сохраняет в стеке информацию о месте, где он прервал работу текущей программы. После этого он передает управление в соответствии с полями Selector и offset.
Поле Selector представляет селектор одной из таблиц, GDT или LDT, в зависимости от состояния бита TI в нем.
Поле offset определяет смещение в сегменте кода. Этот сегмент кода описывается дескриптором, на который указывает селектор в поле Selector.
После того как управление было передано обработчику прерывания, он выполняет свою работу до тех пор, пока не встретит команду iret. Эта команда восстанавливает из стека состояние регистров eflags, cs и eip на момент возникновения прерывания, и работа приостановленной программы продолжается.
При
подготовке выхода из программы обработки
прерывания надо иметь ввиду, что команда
iret ничего не знает о возможности наличия
в стеке кода ошибки, поэтому для корректного
возврата управления следует предварительно
удалять командой pop код ошибки из
стека.
Шлюз прерывания
Шлюз прерывания отличается только полем Type = 1110.
При возникновении прерывания, которому соответствует шлюз прерывания, микропроцессор выполняет те же действия, что и для шлюза ловушки, но с одним важным отличием:
Этот факт имеет важное значение для программирования обработчиков аппаратных и программных прерываний.
Шлюз задачи
Шлюз задачи отличается
1) поле Type = 1110
2) поле Selector вместо селектора сегмента кода указывает на дескриптор сегмента состояния задачи (TSS).
Осуществляется переход на новую задачу, которая будет осуществлять обработку прерывания. Задача является частью механизма многозадачности. То есть производится переключение задач. (Текущее состояние прерываемой задачи аппаратно сохраняется в ее собственном TSS.)
Для каждой задачи определяется сегмент состояния задачи TSS (Task Segment Status) со строго определенной структурой. В этом сегменте есть поля для сохранения всех регистров общего назначения, некоторых системных регистров и другой информации. Всю совокупность этой информации называют контекстом задачи. Этот сегмент описывается, подобно другим сегментам, дескриптором в таблице GDT или LDT.
Если с помощью некоторого селектора обратиться к такому дескриптору, то микропроцессор осуществит переключение на соответствующую задачу. Подобные переключения могут, в частности, осуществляться операционной системой, поддерживающей многозадачность, в соответствии с некоторой дисциплиной разделения времени между задачами. Переключение задач может производиться обычными командами межсегментной передачи управления либо по возникновению прерывания при переходе к обработчику прерывания через шлюз задачи.
Шлюзы ловушки и прерывания с помощью полей Selector и offset определяют адрес, по которому находится точка входа в программу обработки прерывания.
Шлюз задачи предназначен для реализации принципиально иного перехода к обработчику прерываний — с использованием механизма переключения задач.
Разработчики
современных ОС редко используют шлюз
задачи, т.к. переключение на другую задачу
требует существенно больших затрат времени,
а полное сохранение всех рабочих регистров
часто не требуется. Таким образом, используются
чаще всего шлюзы прерываний.
Вывод
Прерывание означает временное прекращение основного процесса вычислений для выполнения некоторых запланированных или незапланированных действий, вызываемых работой аппаратуры или программы. Адрес программы-обработчика прерывания вычисляется по таблице векторов прерываний. Механизм прерываний поддерживается на аппаратном уровне.
Использование прерываний позволяет наиболее эффективно организовать работу компьютера, поскольку время центрального процессора не расходуется вхолостую на ожидание. Устройства, управляемые на основе прерываний, позволяют операционной системе максимально полно использовать процессор. Без прерываний невозможно понять работу резидентных программ или драйверов устройств.
Система прерываний - это совокупность программных и аппаратных средств, реализующих механизм прерываний.
К аппаратным средствам системы прерываний относятся:
· выводы микропроцессора - на них формируются сигналы, извещающие микропроцессор либо о том, что некоторое внешнее устройство «просит уделить ему внимание» (INTR), либо о том, что требуется безотлагательная обработка некоторого события или катастрофическая ошибка (NMI)
· программируемый контроллер прерываний 8259А (предназначен для фиксирования сигналов прерываний от восьми различных внешних устройств; он выполнен в виде микросхемы; обычно используют две последовательно соединенные микросхемы, поэтому кол-во возможных источников внешних прерываний до 15 плюс одно немаскируемое прер.; именно он формирует номер вектора прерывания и выдает его шину данных);
· внешние устройства (таймер, клавиатура, магнитные диски и т.п.)
К программным средствам системы прерываний относятся:
Она содержит адреса (векторы - «векторы», т.к. два значения для указания адреса) обработчиков прерываний и состоит из 256 (0..255) элементов по 4 байта каждый:
Таблица векторов прерываний инициализируется при запуске системы, но в принципе может быть изменена и перемещена.
Каждый вектор имеет свой номер и называется номером прерывания.
· IF (Interrupt Flag) - флаг прерывания. Предназначен для маскирования (запрещения) аппаратных прерываний. Если IF=1, микропроцессор обрабатывает внешние прерывания, если = 0, то игнорирует;
· TF(Trace Flag) - флаг трассировки. Если он=1, то микропроцессор переходит в режим покомандной работы. В этом режиме в микропроцессоре генерируется внутреннее прерывание с номером 1;
Библиографический
список
1. Соломон Д.,
Руссинович М.
«Внутреннее устройство Microsoft Windows 2000»
СПб: Издательский дом Питер, М.: Русская
редакция, 2001
2. Персональный сайт Ливак Е. Н., доцента кафедры информатики и вычислительной техники, кандидата технических наук Гродненского государственного университета имени Янки Купалы
http://mf.grsu.by/UchProc/
3. Википедия. Прерывание
http://ru.wikipedia.org/