цифровая электроника
вычислительная техника
встраиваемые системы

 



Что такое прерывания в микропроцессорных системах

Автор: Mike(admin) от 19-12-2019, 04:35

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


Что такое прерывания в микропроцессорных системах

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


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


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


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


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


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


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




© digitrode.ru


Теги: прерывания




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

Комментарии:

Оставить комментарий