Предыдущий раздел ПРЕРЫВАНИЯ И РЕЗИДЕНТНЫЕ ПРОГРАММЫ Следующая глава

19.1.1. Внешние аппаратные прерывания

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

Допустим, что на ЦП выполняется прикладная программа, вошедшая в бесконечный цикл вследствие ошибки программирования. Тогда для прекращения выполнения этой программы достаточно нажать ту комбинацию клавиш, которая специально предназначена для этой цели в используемой ВС. Например, в DOS это одновременное нажатие клавиш <Ctrl> и <C>. Следствием этого является выдача интерфейсным устройством клавиатуры аппаратного сигнала прерывания, который поступает в ЦП по ОШ. Процессор прерывает выполнение зациклившейся программы и начинает выполнять обработчик прерываний клавиатуры. Эта подпрограмма распознает код нажатой комбинации клавиш (<Ctrl>+<C>) и обеспечивает завершение программы. (Обработчик прерываний клавиатуры прекращает выполнение текущей программы не сам, а использует для этого программное прерывание “int 23h”.)

В качестве второго примера рассмотрим обслуживание таймера. Таймер – аппаратное устройство, выдающее сигналы прерываний в ЦП через фиксированные промежутки времени. Эти сигналы называются тиками. Их можно использовать в ВС, например, для определения времени суток. Для этого по приходу каждого тика ЦП прерывает выполнение текущей прикладной программы и начинает выполнять обработчик прерываний таймера, который, в свою очередь, увеличивает на единицу счетчик тиков и, возможно, пересчитывает текущее время, увеличивая значения счетчиков секунд, минут и часов.

Прерывания от клавиатуры и таймера являются примерами внешних аппаратных прерываний. Сигналы этих прерываний выдаются в ЦП различными ПУ (а точнее – их ИУ), которым требуется внимание со стороны программ ЦП. Эти сигналы передаются в ЦП по шине управления, которая входит в состав ОШ. Характерной особенностью этих прерываний является то, что их первичной причиной являются процессы, асинхронные (независимые) по отношению к текущей работе ЦП. Примером такого асинхронного процесса является деятельность пользователя по нажатию клавиш, приводящая к возникновению прерываний от клавиатуры и мыши.

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

Внешние аппаратные прерывания разделяются на маскируемые и немаскируемые прерывания. Немаскируемые прерывания – наиболее важные прерывания, обработка которых не может быть отложена ни на какое время. Сюда относятся прерывания, возникающие при сбоях питания. Соответствующие сигналы прерываний выдаются в ЦП аппаратными схемами контроля питания. Маскируемые прерывания – прерывания, обработка которых может быть отложена на время, требуемое ЦП для выполнения какой-то другой, более важной операции. Запрет всех маскируемых прерываний выполняет машинная команда cli, а разрешение – команда  sti. Первая из этих команд сбрасывает, а вторая устанавливает флажок разрешения прерываний IF в регистре FLAGS.

 


Предыдущий раздел В начало Следующая глава