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

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

При работе микропроцессорной системы часто возникают ситуации, когда требуется прервать выполнение текущей программы и перейти к подпрограмме, обеспечивающей необходимую реакцию системы на создавшиеся обстоятельства. Такие ситуации называются прерываниями (или исключениями) в зависимости от причин, вызывающих их возникновение. В данной главе мы рассмотрим механизмы возникновения и обработки прерываний на примере процессоров семействаix86, поскольку именно здесь реализованы многие из этих механизмов. В конце главы упомянуты особенности, характерные для других типов процессоров.

$.1. Виды прерываний и исключений, реализация их обслуживания

Прерываниями(interruption) являются штатные ситуации, возникающие при поступлении соответствующих инструкций (программные прерывания) или внешних сигналов (аппаратные прерывания). Исключениями (exception) являются нештатные ситуации (ошибки), возникающие при работе процессора. При выявлении таких ошибок соответствующие блоки, контролирующие работу процессора, вырабатывают внутренние сигналы запроса, обеспечивающие вызов необходимой подпрограммы обслуживания. Процессор способен обеспечить обслуживание 256 различных типов исключений и прерываний. Соответствующая обработка информации при возникновении таких ситуаций выполняется с помощью специальных подпрограмм (обработчиков) обслуживания (interrupthandlers), указатели на обработчики (вектора прерываний) хранятся в таблице, размещаемой в памяти системы.

По типу возникновения прерывания делятся на программные, аппаратные и прерывания от внутренних блоков процессора.

Программныепрерывания – это своеобразный способ вызова процедур, как правило, системных. Осуществляется по инструкциямINTn, INTO, INT3, BOUND.

Запросы на выполнение аппаратныхпрерываний поступают от внешних устройств на входы LINT0/INTR,LINT1/NMIпроцессора. В мультипроцессорной системе, когда включен внутренний контроллер локальных прерыванийAPIC(см. раздел $.4), сигналы LINT1-0на этих входах определяют номер запроса, поступающего от других устройств (процессоров) системы. В однопроцессорной системе, когда функционирование контроллера APIC запрещено, эти входы служат, соответственно, для подачи маскируемых INTRи немаскируемых NMIзапросов прерывания от различных внешних устройств.

Маскируемыепрерывания вызываются активизацией входаINTR(InterruptRequest). Их обслуживание может быть запрещено (замаскировано) путем установке значения признакаIF=1 в регистре состоянийEFLAGS. Обычно такой запрос поступает от внешнего устройства через специальный контроллер прерываний, который собирает запросы от различных внешних устройств и передает их для обработки процессору, указав для них также номерnопределяющий вид прерывания (INTRn). На вход NMIпоступает запрос на немаскируемое прерывание, процедура обслуживания которого имеет фиксированный номерn=2 (см. табл.$.1). Значение признакаIFв регистреEFLAGSне влияет на обслуживание процессором немаскируемого запроса прерывания NMI. При работе процессора в мультипроцессорной системе, когда функционирует контроллер локальных прерыванийAPIC, запросы аппаратных прерывания (маскируемые и немаскируемые) поступают по специальной APIC-шине (см. разд.$.4).

Для исключений зарезервированы первые 32 вектора в таблице прерываний. Каждый тип исключения имеет мнемоническое обозначение. Исключения делятся на ошибки (Faults), ловушки (Traps)иотказы (Aborts). В табл. $.1 указан их список для защищенного режима. В реальном режиме некоторые прерывания (например, #TSили #PF) имеют несколько другой смысл, но эти случаи здесь не рассматриваются. Пояснение столбца «класс» будет дано при описании отказа #DFв разделе $.2.

Ошибкивыявляются и обслуживаются до выполнения инструкции, которая является причиной их возникновения. Примером ошибки может служить ситуация, возникающая при обращении очередной инструкции к странице или сегменту, отсутствующим в адресуемой оперативной памяти (обращение к сегменту или странице, для которых бит присутствияP=0, см. разд. 7.3). При ошибке в качестве адреса возврата к прерванной программе сохраняется адрес инструкции, выполнение которой вызвало данное исключение.

Таблица $.1.