Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основной текст лекций.doc
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
1 Мб
Скачать
☆
    1. Система прерываний.

  • Ситуация, требующая каких – либо действий (реакции) микропроцессора при возникновении определенного события, называется прерыванием (interrupt).

Необходимую реакцию на события обеспечивает система прерывания.

  • Под системой прерывания понимают комплекс аппаратных и программных средств, обеспечивающих выявление и обработку прерываний.

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

Прерывания делятся на следующие категории:

  • Внешние аппаратные прерывания (маскируемые и немаскируемые) – возникают в результате событий вне МП (нажатие клавиши клавиатуры).

  • Внутренние аппаратные прерывания – вырабатываются самим процессором или сопроцессором (попытка деления на нуль).

  • Программно - вызываемые прерывания – инициируются выполняемой программой (любые функции ввода – вывода информации, которые требуют сервисных услуг DOS).

Последний тип прерываний в прямом смысле прерыванием не является, поскольку представляют собой лишь специфический способ вызова процедур – не по адресу, а по номеру в таблице.

Обработка прерываний сводится к приостановке исполнения программы, вместо которой начинает выполняться программа, называемая обработчиком прерываний. После её реализации выполнение прерванной программы может быть продолжено, что зависит от типа прерывания.

Основные действия обработчика прерываний сводятся к следующему:

  • условия возникновения прерывания проверяются процессором на границе инструкций. Это означает, что все шинные операции текущей инструкции будут завершены до начала обработки прерывания;

  • процессор сохраняет в стеке слово состояния (регистры флагов, кодового сегмента, указатель следующей инструкции), сбрасывает флаг разрешения прерываний (IF) и вызывает процедуру обработки, точка входа в которую описана в таблице прерываний, хранящейся в ОЗУ;

  • выполнение процедуры обработки. Процедура обработки завершается инструкцией (IRET), по которой из стека восстанавливаются автоматически сохраненные регистры (в регистре флагов прерывания разрешены);

  • процессор начинает выполнение инструкции, следующей за той, после которой исполнялось прерывание.

Если имеется только одно устройство ввода-вывода, то сложностей с обработкой прерываний не возникает. Однако в реальных условиях существует некоторая вероятность, что во время выполнения процедуры обработки прерывания одного устройства другое устройство ввода-вывода тоже захочет произвести свое прерывание. Для разрешения подобной ситуации каждому из устройств приписывается определенный приоритет (высокий для более критичных и низкий для менее критичных устройств). Центральный процессор тоже должен иметь приоритеты, которые определяются по одному из полей слова состояния программы.

Если выполняется процедуры обработки прерывания с приоритетом n , то попытка другого устройства с более низким приоритетом будет игнорироваться, пока процедуры обработки прерывания не завершится и пока центральный процессор не возвратиться к выполнению программы более низкого приоритета. С другой стороны, прерывания, поступающие от устройств с более высоким приоритетом, должны выполняться без задержек.

Со времен процессора 8088 все процессоры Intel имеют два уровня (приоритета) прерываний: маскируемые и немаскируемые прерывания. Немаскируемые прерывания обычно используются только для сообщения об очень серьезных ситуациях, например об ошибках четности в памяти. Все устройства ввода- вывода используют одно маскируемое прерывание.