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

Виртуальные прерывания в режиме виртуального 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

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