Важнейшими характеристиками системы прерываний является глубина прерываний и приоритет. В ЭВМ существует одноуровневая и многоуровневая система прерываний. В одноуровневых системах нет реакции при обработке прерываний на сигналы других поступающих прерываний. Удовлетворение запросов на прерывание в таких системах осуществляется только после завершения обработки ранее возникшего прерывания. В современных ПК используются многоуровневые системы, допускающие прерывания различной глубины. Глубина прерываний — это максимальное число программ ISR, которые могут прерывать друг друга. При этом, если глубина прерываний п, то может быть прервано п подпрограмм. Глубина возможных прерываний зависит от класса решаемых задач и определяется организацией очередности обработки прерываний. Одновременно поступившие запросы на прерывания на регистр прерываний МП, обрабатываются по принципу приоритетности. В первую очередь обслуживаются прерывания с наивысшим приоритетом. При поступлении запросов на прерывание соответствующий триггер в регистре прерываний устанавливается в 1. Перед завершением выполнения очередной команды МП опрашивает регистр прерываний. Очередность реализации запросов на прерывание устанавливается в порядке приоритета, заранее присвоенного каждому типу прерывания. Присвоение приоритета представляет собой сложную задачу, при решении которой необходимо учитывать важность и срочность обслуживания тех или иных прерываний. Обычно наивысшим приоритетом обладают прерывания от схем управления энергопотреблением и по машинной ошибке.
Прерывание подпрограмм ISR называется вложением прерываний. Для организации вложенных прерываний в каждой подпрограмме обслуживания прерываний необходимо выполнить:
1. разрешить прерывание по команде EI
2. временно запомнить приоритет прерванной программы
3. загрузить в схему приоритетных прерываний новый текущий приоритет
4. обслужить это прерывание
5. восстановить прежний приоритет
6. восстановить прерванную программу (командой IRET)
Аппаратные прерывания:
- внутренние (от процессора и сопроцессора)
- внешние:
- маскируемые
- немаскируемые
- программно-вызываемые прерывания
К внутренним прерываниям можно отнести и программно-вызываемые прерывания. Внутренние прерывания МП генерируются при возникновении особых условий при выполнении текущей команды (пример: деление на нуль переполнение разрядной сетки и т.п.).
Програмно-вызываемые прерывания выполняются под действием команды INT, и в этом случае действия МП аналогичны вызову программы ISR, т.е. сохранение в стеке адреса возврата, передача управления по указанному адресу, но имеются и некоторые отличия:
A) выполняется прерывание, помещенное в стек и в регистре флагов сбрасывается в 0 бит IF (разрешения обработки прерываний).
Б) вместо адреса вызываемой подпрограммы аргументом вызова является номер вектора прерываний.
B) по окончании выполнения процедуры програмно-вызываемого прерывания процессор извлекает из стека кроме адреса возврата и сохраненное значение регистра флагов. Программо-вызываемые прерывания позволяют легко и быстро вызывать процедуры из любого сегмента памяти, не применяядальних вызовов. Например, программное прерывание INT3 традиционно используется в целях отладки программ для создания точки останова и оно вызывается однобайтной инструкцией.