Что такое прерывание программы

XI. Система прерываний компьютера.

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

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

Итак: Прерыванием называется процесс, обуславливающий реакцию компьютера на некоторое событие, требующее немедленного его вмешательства. Запрос прерывания – есть сигнал процессору о появлении события, требующего немедленной реакции процессора путем перехода на подпрограмму обслуживания этого события.

Лекция 11: Прерывания

Системой прерывания называется комплекс аппаратных и программных средств, обеспечивающих выявление запросов прерывания и эффективное их обслуживание. Процесс прерывания схематически иллюстрирован на рис XI.1. Основными функциями системы прерывания являются следующие.

1. Запоминание состояния процессора, которое определяется состоянием его основных регистров на момент прерывания текущей программы. 2. Осуществление передачи управления на процедуру обслуживания прерывания. 3. Восстановление состояния процессора после окончания выполнения процедуры обслуживания прерывания. 4. Передача управления на продолжение выполнения текущей программы.

Таким образом, после появления запроса прерывания и возможности осуществления самого процесса прерывания, процессор прерывает выполнение текущей программы, автоматически запоминая в стеке адрес возврата (CS и IP), а также содержимое регистра флагов Flags. В стек может, также, передаваться и сохраняться содержимое тех регистров, которые могут понадобиться при исполнении процедуры обслуживания прерывания и, следовательно, могут быть искажены.

Рис.XI.1 Схема процесса прерывания программ. Однако, если содержимое CS, IP (адрес возврата), и Flags записываются в стек автоматически, то для записи в стек содержимого, требующихся при исполнении процедуры обслуживания прерывания регистров, об этом должен позаботиться сам пользователь (процессор ведь не знает, что может потребоваться).

Поэтому пользователь должен включить в начале процедуры обслуживания прерывания, команды сохранения в стеке этих регистров, а в конце процедуры – команды восстановления содержимого их, путем считывания из стека. 2.Классификация типов прерывания.

Запросы на прерывание могут возникать как внутри самого процессора, так и со стороны внешней среды (периферийных устройств). Поэтому можно выделить сразу же два класса типов прерываний. 1. Внешние прерывания. 2. Внутренние прерывания. Схематически, источники прерываний программ, применительно к процессорам семейства Х86 иллюстрированы на рис.XI.2.

Урок 14. Прерывания в компьютере

Рис.XI.2 Источники прерываний микропроцессоров семейства Х86. Здесь: INTi(Interrupti) – i-ый источник (тип) запроса прерывания от внешних устройств; NMI(NonmaskableInterrupt) – немаскируемое прерывание, т.е. прерывание, которое нельзя замаскировать; INTR(Interrupt) – общий запрос на прерывание процессора; INTA(InterruptAcknowledge) – подтверждение процессором получения запроса прерывания, и готовность принятия кода типа прерывания.

Внешние прерывания Внешние прерывания относят к так называемым аппаратным прерываниям, поскольку они вызываются аппаратурой, находящейся вне пределов самого компьютера. Внешние прерывания подразделяются на: а) маскируемые прерывания, б) немаскируемые прерывания. Маскируемые прерывания.

Читайте также:
Подготовка иллюстраций для помещения в программы верстки и макетирования

Маскируемыми – называются такие прерывания, запросы которых могут быть выключены из зоны внимания процессора, путем наложения маски на возможные запросы прерываний. Запросы маскируемых прерываний, в отличие от остальных, поступают на систему прерываний процессора через специальное устройство, называемое контроллером прерываний, который в современных процессорах входит в состав микросхемы «южного моста» Chipset, размещаемой на системной плате компьютера.

Основные функции контроллера прерываний заключаются в том, что с его помощью можно: — вследствие различной важности устройств, которые могут запрашивать прерывания у компьютера, устанавливать запросам прерывания определенный уровень приоритета, при котором очередность их обработки осуществляется строго в порядке присвоенной им приоритетности. Это дает возможность запросу с большим уровнем приоритета прерывать исполнение процедур обслуживания прерывания от устройств с меньшим уровнем приоритета; — устанавливать определенный порядок обслуживания запросов прерываний одного уровня привилегий, при одновременном их появлении; — дать возможность пользователю, при необходимости, запрещать компьютеру, реагировать на запросы прерывания внешних устройств, как всех одновременно, так и по отдельности для каждого устройства (т.е. выполнять так называемое маскирование запросов прерывания).

Запрещение или разрешение индивидуальных запросов прерываний реализуется при помощи использования в контроллерах прерываний кода маски. Маска представляет собой двоичный код, каждый разряд которого соответствует некоторому запросу прерывания.

Обычно устройство маскирования делают таким образом, чтобы логическая единица, записанная в разряд маски, запрещала прохождение соответствующего запроса прерывания к процессору, а логический ноль – разрешала. Иллюстрация процесса маскирования запросов прерывания приведена на рис.XI.3.

Рис.X.3 Иллюстрация принципа маскирования запросов прерывания. Заметим при этом, что маскируемые прерывания, все вместе одновременно, могут быть запрещены или разрешены, путем установки или сброса флага IF в регистре флагов процессора, подачей соответствующих команд STI или CLI. Немаскируемые прерывания.

Запросы немаскируемых прерываний подаются на специально выделенный вход NMI. Они запрещены быть не могут. Источниками запросов таких прерываний являются, например, устройства контроля пропадания напряжения питания или контроля повреждения каких-либо особо важных систем обработки.

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

Внутренние прерывания. Внутренние прерывания образуются внутри компьютера по запросам его отдельных функциональных узлов, или как следствие выполнения некоторых специальных команд INT N. Внутренние прерывания замаскированы быть не могут. Код типа прерываний такого рода формируется автоматически при поступлении соответствующего запроса внутреннего прерывания.

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

К прерываниям – особым случаям (исключениям), относятся, например, такие ситуации: — ошибка деления (частный случай – деление на 0); — переполнение разрядной сетки после выполнения очередной команды; — неразрешенный код команды; — пошаговое прерывание, которое включается при установке в состояние 1 флага TF в регистре флагов Flags. При этом после выполнения каждой команды программы, в стеке автоматически запоминается состояние CS, IP, Flags и выводится на экран дисплея состояние всех регистров процессора и части ячеек ОЗУ.

Читайте также:
Какой танк лучше взять за реферальную программу

После этого процесс выполнения текущей программы останавливается и ожидается следующий запуск программы для выполнения очередного шага; и т.п. Программные прерывания. Под программными прерываниями понимаются прерывания, инициируемые самой выполняемой программой, а именно, командами типа INT N, где N – номер прерывания в некотором заданном диапазоне.

Действие этих прерываний весьма похожи на вызов подпрограмм (процедур), за исключением того, что передача управления осуществляется не по адресу, указываемому в команде CALL, а по номеру (типу) прерывания, по которому в таблице векторов прерывания находится адрес передачи управления. Кроме того, при программном прерывании обязательно автоматически запоминается в стеке состояние регистра флагов Flags. Программные прерывания отличаются от других тем, что они задаются заранее и определены в программе, а не являются случайными по отношению к работе компьютера. Они широко используются при вызове системных функций DOS и BIOS.

Ограничение

Для продолжения скачивания необходимо пройти капчу:

Источник: studfile.net

Прерывания

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

Прерывания

Каждое событие, требующее прерывания, сопровождается сигналом прерывания , оповещающим об этом вычислительную машину, и называемым запросом прерывания .

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

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

Вектор начального состояния содержит всю необходимую информацию для начального запуска программы. Во многих случаях вектор начального состояния содержит только один элемент – начальный адрес запускаемой программы.

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

Читайте также:
Лучшая программа для восстановления отформатированной флешки

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

Время реакции на прерывание

tp – время реакции системы на прерывание;
tз – время запоминания состояния прерываемой программы;
tппр – время собственно прерывающей программы;
tв – время восстановления состояния прерванной программы

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

Глубина прерываний

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

Характеристиками системы прерывания являются:

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

Маскирование прерываний используется для сообщения микроконтроллеру о необходимости реагировать на каждый тип прерывания или игнорировать его. Маска прерывания представляет двоичный код, разряды которого поставлены в соответствие источникам запроса прерываний. Единичный бит в двоичном коде сообщает микроконтроллеру о необходимости обработки прерываний такого типа. Нулевой бит напротив не позволяет микроконтроллеру переходить к обработке прерываний указанного типа.
Как правило, кроме маскирования прерываний, существует также бит глобального разрешения прерываний, нулевое значение которого отключает все обработчики прерываний (кроме аппаратного сброса и перехода к началу исполняемой программы).
Кроме двоичного кода маски прерываний существует также двоичный код флагов прерываний , который позволяет обработчику прерываний установить источник возникновения прерывания в случае если источников с указанным запросом в микроконтроллере несколько.
Назад

Комментариев к записи: 1

Источник: prog-cpp.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru