7.3.6. Прерывания и исключения

 

Как и 8086/88, процессор 80286 может обслуживать до 256 типов прерываний. Прерывания подразделяются на аппаратные (маскируемые и немаскируемые), вызываемые электрическими сигналами на входах процессора, программные, выполняемые по инструкции INT хх, и исключения инструкций. Аппаратные и программные прерывания работают так же, как и в 8086.

Исключения инструкций (Instruction Exceptions), или просто исключения, случаются прет появлении особых условий при выполнении операций (в 8086 аналогом исключений являлись внутренние прерывания процессора). В отличие от прерываний после обработки исключений (кроме исключения 9, относящегося к сопроцессору) управление возвращается снова к той же инструкции (включая все префиксы), которая вызвала исключение. Набор и обработка исключений реального и защищенного режимов различны. Под исключения Intel резервирует векторы 0-31 в таблице прерываний, однако в PC часть из них перекрывается системными прерываниями BIOS и DOS.

Процедура, обслуживающая прерывание или исключение, определяется по таблице с помощью номера — восьмибитного указателя (вектора) прерывания. Указатель для программных прерываний задается командой, для маскируемых аппаратных прерываний вводится от внешнего контроллера во втором цикле INTA#, немаскируемое прерывание имеет фиксированный вектор, а исключения генерируют и передают вектор внутри процессора.

Каждому номеру прерывания соответствует элемент в таблице дескрипторов прерываний IDT (Interrupt Descriptor Table). В реальном режиме таблица прерываний организована так же, как у 8086/88, — она содержит двойные слова (дальние адреса) обслуживающих процедур и после сброса располагается, начиная с нулевых адресов. Однако командой LJDT можно изменять ее положение \ после сброса — 00000h) в пределах первого мегабайта, а размер (03FFh) может быть уменьшен до 007Fh. При попытке обслуживания прерывания с номером, выходящим за заданный размер таблицы, генерируется исключение типа 8. В защищенном режиме таблица IDT содержит 8-байтные дескрипторы прерываний, может иметь размер от 32 до 256 дескрипторов и располагаться в любом месте физической памяти.

Двойной отказ (Double Fault) — ситуация, когда процессор обнаруживает ива независимых исключения при отработке одной инструкции. В этом случае исполняется исключение 8. Если во время его обслуживания произойдет какое-либо исключение, происходит отключение (Shutdown) процессора. Во время отключения никакие новые инструкции не выполняются. Из этого состояния процессор можно вывести только аппаратно сигналом NMI (оставляя его в защищенном режиме) или RESET, который переведет процессор в реальный режим.

 

 

HotLog

Заказчику web дизайна и программирования - каталог сайтов, обзор дизайн студий