Запросы внешних прерываний поступают в процессор по двум входам: INTR и NMI, и сами прерывания делятся соответственно на маскируемые и немаскируемые.
• Запросы маскируемых прерываний обычно поступают на входы встроенного в МП программируемого контроллера прерываний 8259, который формирует сигнал, подаваемый на вход INTR. Реакция микропроцессора на маскируемые запросы зависит от состояния флага разрешения прерывания IF: если IF=1, то прерывания разрешены, если IF=0, прерывания запрещены.
• Действия процессора при поступлении разрешенного прерывания (IF=1) на вход INTR строго детерминированы. После завершения текущей команды микропроцессор прекращает выполнение основной программы и готовится выполнить подпрограмму обработки прерывания конкретного типа. Прежде всего он запоминает в стеке текущее состояние регистра признаков и адрес возврата (текущее содержимое регистров (ЕIP и CS).
• Затем микропроцессор получает от внешнего устройства тип прерывания и, используя его как индекс таблицы прерывания, выбирает из таблицы адрес подпрограммы обработчика прерывания и помещает его в регистры ЕIP и CS.
• С помощью аппаратных прерываний осуществляется взаимодействие процессора с периферийными устройствами.
• Внутренние — события в самом процессоре как результат нарушения каких-то условий при исполнении машинного кода: деление на ноль или переполнение, обращение к недопустимым адресам или недопустимый код операции;
• Программные (частный случай внутреннего прерывания) — инициируются исполнением специальной инструкции в коде программы. Программные прерывания как правило используются для обращения к функциям встроенного программного обеспечения (firmware),драйверов и операционной системы.
• Программные прерывания, инициируемые командой INTn, являются специальными командами вызова процедур, которые программист при необходимости может использовать по своему усмотрению, например, для отладки. Программные прерывания в большинстве случаев представляют собой оптимизированные системные процедуры, вызываемые пользовательскими или системными программами для наиболее часто применяемых операций. С помощью команды INT n можно вызывать программы-обработчиков прерываний, начальные адреса которых размещены в таблице прерываний IDT.
• Программные прерывания также используются для вызовов процедур BIOS (Basis Input/Output System), обеспечивающих обмен информацией между процессором и внешними устройствами, и для вызовов процедур операционной системы, в частности, MS DOS.
• Внутренние прерывания, генерируемые процессором, при возникновении определенных условий выполнения команд, обычно называют особыми случаями или исключениями (exceptions).
• Особый случай - это внутреннее событие возникающее при невозможности выполнять следующую команду. Особые случаи возникают, например, при нарушении защиты по привилегиям, превышении предела сегмента, делении на нуль и т.п. Как и аппаратные прерывания, предвидеть особые случаи практически невозможно.
• Коды (типы) внутренних прерываний устанавливаются разработчиком микропроцессора и не могут быть использованы при назначении внешних (аппаратных) прерываний.
• Реакция процессора на особый случай зависит от условий его возникновения. В соответствии с этими условиями исключения (особые случаи) подразделяются на ошибки(fault), ловушки(trap) и аварийные завершения.
• Ошибкаили нарушение (отказ) - это особый случай, который обнаруживается и обслуживается до выполнения команды, вызывающей ошибку. После обработки подобного исключения управление возвращается команде, которая вызвала ошибку. Типичный пример нарушения имеет место ошибка страничного отказа при работе виртуальной памяти.
• Ловушка - это особый случай, который обнаруживается и обслуживается после выполнения команды, его вызвавшей. По завершению обслуживания особого случая типа ловушка процессор возвращает управление команде, следующей за командой, вызвавшей ловушку. Примером ловушки является команда прерывания при переполнении INT0 и программные прерывания, вызываемые командой INTn.
• Аварийное завершение- особый случай, который не позволяет точно установить команду, его вызвавшую. Аварийное завершение является серьезной ошибкой. При ее возникновении осуществить рестарт программы не удается
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.