Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MProc / M5 / Прерывания и исключения.doc
Скачиваний:
49
Добавлен:
16.04.2013
Размер:
238 Кб
Скачать
☆

Виртуальные прерывания в режиме виртуального 8086

При работе процессора в режиме виртуального 8086 вводится дополнительный механизм, обеспечивающий реализацию виртуальных прерываний. Функционирование данного механизма разрешается при установке бита CR0.VME=1. При этом обслуживание маскируемых аппаратных прерываний можно производить с помощью признаков VIF, VIP, как описано выше. Обслуживание программных прерываний, выполняющихся по инструкциям INT n, может осуществляться с помощью таблицы дескрипторов прерываний IDT, как это выполняется в защищенном режиме, или путем непосредственного обращения к таблице векторов прерываний, как в реальном режиме (см. разд. $.1). Отметим, что обработка исключений всегда производится с помощью таблицы IDT, как в защищенном режиме.

В результате режим виртуального 8086 обеспечивает шесть возможных вариантов обработки прерываний (табл.$.6), выбор которых определяется значениями бита VME в регистре CR0, поля IOPL в регистре EFLAGS и содержимым битовой карты направления прерываний (БКНП), которая располагается в сегменте задачи TSS.

Если виртуальные прерывания разрешены (VME=1). То для обработки программных прерываний (инструкции INT n) привлекается БКНП, а при обработке маскируемых прерываний (запросов, поступающих по входу INTR) используются признаки VIF и VIP в регистре EFLAGS (при значении поля IOPL<3). Если виртуальные прерывания запрещены, или IOPL=3, то выполняется обработка маскируемых прерываний с помощью таблицы IDT (см. разд. $.1).

Таблица $.6

Варианты обработки прерываний в режиме виртуального 8086

№ вар.

VME

IOPL

Бит в БКНП

Программные прерывания

Маскируемые

прерывания

1

0

3

X

Обрабатываются с использованием

таблицы IDT

2

0

<3

X

Вызывают исключение #GP

Обрабатываются с исполь­зованием таблицы IDT

3

1

<3

1

Обрабатываются с исполь­зованием флагов VIF и VIP

4

1

3

1

Обрабатываются с использованием

таблицы IDT

5

1

3

0

Обрабатываются с использованием таблицы векторов прерываний

Обрабатываются с исполь­зованием таблицы IDT

6

1

<3

0

Обрабатываются с исполь­зованием флагов VIF и VIP

Битовая карта перенаправления прерываний БКНП (Interrupt Redirection Bit Map) имеет размер 32 байта и располагается в сегменте TSS (см. рис.7.13) непосредственно перед битовой картой ввода-вывода (БКВВ). Относительный адрес начала БКНП в сегменте TSS равен адресу БКВВ минус 32 байта. Каждый бит этой карты bi определяет, будет ли программное прерывание с соответствующим номером n=i обрабатываться в защищенном или реальном режиме. При bi=1 обработка осуществляется с использованием дескрипторов, размещенных в таблице IDT, как это принято для защищенного режима. При bi=0 производится обращение к подпрограмме обслуживания, вектор которой содержится в таблице прерываний, размещаемой в начальной области адресного пространства, начиная с адреса 0...0h, как это выполняется в реальном режиме (см. разд. $.1).