- •1. 6. Основы программной инициализации и изменения режимов работы pic
- •1. 7. Основные функции и назначения основных битов приказов инициализации
- •1. 8. Слова рабочих приказов
- •§ 3. Организация прерываний в реальном и защищенном режимах в старших моделях семейства Intel 80x86, Pentium
- •3.1. Аппаратные средства системы прерываний Intel 80x86
- •3.2. Реальный режим и его основные особенности
- •3.3. Основные отличия r-режима старших моделей Intel 80x86 от Intel 8086
- •3.4. Особенности организации прерываний в реальном режиме
- •3.4.1. Программные средства системы прерываний реального режима
- •3.4.2. Идеология организации прерываний в процессорах Intel 80х86
- •3.4.3. Этапы обработки прерываний в реальном режиме процессоров Intel 80х86
- •3.4.4. Основные отличия обработки прерываний в r-режиме по сравнению с базовой моделью Intel 8086
- •3.4. Организация прерываний в защищенном режиме
- •3.4.1 Основные положения
- •3.5. Расширенная классификация прерываний в защищенном режиме
- •3.6. Дескрипторная таблица прерываний и ее элементы
- •Шлюз ловушки
- •Шлюз прерывания
- •Шлюз задач
- •Код ошибки
- •3.7. Обобщенная схема обработки прерывания в защищенном режиме
- •§ 4. Система прерываний пэвм ibm pc
- •4.1. Основные сведения
- •4.2. Действия микропроцессора при возникновении прерывания в ibm pc
- •4.3. Обработка прерывания в реальном режиме и в защищенном режиме
Шлюз прерывания
Шлюз прерывания отличается только полем типа = 1110.
При возникновении прерывания, которому соответствует шлюз прерывания, микропроцессор выполняет те же действия, что и для шлюза ловушки, но с одним важным отличием:
при передаче управления обработчику прерывания через шлюз прерывания, микропроцессор сбрасывает флаг прерывания в регистре eflags в 0, запрещая тем самым обработку аппаратных прерываний. Этот факт имеет важное значение для программирования обработчиков аппаратных и программных прерываний.
Совет. Если у вас есть сомнение в том, какой из шлюзов - прерывания или ловушки - использовать — применяйте шлюз прерывания.
При вызове обработчика прерывания или особого случая через шлюз прерывания или ловушки 32-битное поле offset, задающее смещение в сегменте кода обработчика, загружается в регистр процессора EIP. В свою очередь 16-битное поле селектора, предназначенное для выбора сегмента кода обработчика, загружается в процессоре в регистр CS (сегмент кода). После этой загрузки в процессоре полностью определен начальный адрес обработчика прерывания или особого случая. Основным отличием использования шлюза прерывания и шлюза ловушки для вызова обработчика является аппаратный сброс флага IF при вызове обработчика через шлюз прерывания. В свою очередь вызов обработчика через шлюз ловушки не оказывает аппаратного воздействия на флаг IF.
Шлюз задач
В отличие от шлюзов прерывания и ловушек, в шлюзе задач поле offset не используется. Вызов обработчика прерывания через шлюз задачи сопровождается переключением задач с использованием системной структуры данных в виде TSS – Task State Segment (сегмент состояния задачи). В связи с этим обработчик прерывания трактуется как отдельная задача, в отличие от обработчика, вызываемого через шлюз ловушки или прерывания, при котором обработка прерывания или особого случая реализуется в контексте прерываемой задачи. В связи с тем, что в TSS обработчика прерывания задается содержимое регистра IP, то и поле offset в шлюзе задачи является невостребованным. В свою очередь поле селектора шлюза задачи должно обязательно определять дескриптор TSS, иначе генерируется особый случай.
Шлюз задачи отличается:
1) поле типа = 1110;
2) поле selector вместо селектора сегмента кода указывает на дескриптор сегмента состояния задачи (TSS).
Осуществляется переход на новую задачу, которая будет осуществлять обработку прерывания. Задача является частью механизма многозадачности. Т.е. производится переключение задач. (Текущее состояние прерываемой задачи аппаратно сохраняется в ее собственном TSS.)
Для каждой задачи определяется сегмент состояния задачи TSS (Task Segment Status) со строго определенной структурой. В этом сегменте есть поля для сохранения всех регистров общего назначения, некоторых системных регистров и другой информации. Всю совокупность этой информации называют контекстом задачи. Этот сегмент описывается, подобно другим сегментам, дескриптором в таблице GDT или LDT.
Если с помощью некоторого селектора обратиться к такому дескриптору, то микропроцессор осуществит переключение на соответствующую задачу. Подобные переключения могут, в частности, осуществляться операционной системой, поддерживающей многозадачность, в соответствии с некоторой дисциплиной разделения времени между задачами. Переключение задач может производиться обычными командами межсегментной передачи управления либо по возникновению прерывания при переходе к обработчику прерывания через шлюз задачи.
РЕЗЮМЕ. Шлюзы ловушки и прерывания с помощью полей selector и offset определяют адрес, по которому находится точка входа в программу обработки прерывания.
Шлюз задачи предназначен для реализации принципиально иного перехода к обработчику прерываний — с использованием механизма переключения задач.
Обратим внимание, разработчики современных ОС редко используют шлюз задачи, т.к. переключение на другую задачу требует существенно больших затрат времени, а полное сохранение всех рабочих регистров часто не требуется. Таким образом, используются чаще всего шлюзы прерываний.
