Аппаратные и программные средства встраиваемых систем


  Классификация прерываний



Pdf көрінісі
бет25/268
Дата07.01.2022
өлшемі3,23 Mb.
#18255
1   ...   21   22   23   24   25   26   27   28   ...   268
1.2.4.1  Классификация прерываний 
В  зависимости  от  источника  возникновения  сигнала  прерывания  делятся 
на: 
•  асинхронные  или  внешние  (аппаратные) — события,  которые  исходят 
от  внешних  источников  (например,  периферийных  устройств)  и  могут 
произойти в любой произвольный момент: сигнал от таймера, внешнего 
интерфейса, АЦП и других; 
•  внутренние — события  в  самом  процессоре  как  результат  нарушения 
каких-то  условий  при  исполнении  машинного  кода:  деление  на  ноль 
или  переполнение,  обращение  к  недопустимым  адресам  или 
недопустимый код операции. Такого рода прерывания еще называются 
исключительными ситуациями (exceptions);  
•  программные  (частный  случай  внутреннего  прерывания) — 
инициируются  исполнением  специальной  инструкции  в  коде 
программы.  Программные  прерывания  как  правило  используются  для 
обращения  к  функциям  встроенного  программного  обеспечения  
драйверов и операционной системы. 
Аппаратные  прерывания  могут  возникать  в  произвольные  моменты 
времени и являются асинхронными по отношению к выполняемой программе. 
С  помощью  аппаратных  прерываний  осуществляется  взаимодействие 
процессора  с  периферийными  устройствами,  а  также  сообщается  о  различных 
ошибках аппаратуры (например, ошибка памяти, ошибка передачи по шине и т. 


 
24 
п.)  или  об  аварийном  отключении  питания.  Во  втором  случае  иногда  такие 
прерывания называют исключительными ситуациями (exceptions).  
Реагируя на аппаратное прерывание, процессор должен идентифицировать 
его  источник,  сохранить  минимальный  контекст  прерываемой  программы  и 
переключаться на специальную программу – обработчик прерывания (interrupt 
handler), который может быть оформлен как процедура или задача. 
Действия 
обработчика 
прерывания, 
называемые 
обслуживанием 
прерывания, заключается в том, чтобы правильно отреагировать на прерывание 
конкретного  источника  (например,  поместить  символ  нажатой  клавиши  в 
буфер, произвести инкремент системных часов и т. п.). 
После  завершения  обслуживания  прерывания  процессор  возвращается  к 
выполнению  прерванной  программы,  и  она  должна  продолжиться  таким 
образом, как будто прерывания не было. 
К  основным  ситуациям,  возникающим  вне  процессора  и  приводящим  к 
прерыванию, относятся: 
•  запросы  от  управляемого  объекта  (являются  типичными  для 
управляющих систем), т.е. запросы от ВУ: 
a)  ВУ, готовые к обмену, требуют реакции процессора для организации 
программно-управляемой передачи данных; 
b)  завершение работы ВУ или КВВ по передаче данных; 
c)  особая (аварийная) ситуация в ВУ или КВВ. 
•  запросы  прерываний  от  других  процессоров  для  обеспечения 
синхронизации  вычислительных  процессов,  протекающих  в  рамках 
многопроцессорной системы. 
 
Программные  прерывания,  в  отличие  от  аппаратных,  появляются 
синхронно по отношению к выполняемой программе. 
Причинами  программных  прерываний  могут  служить  особые  ситуации, 
возникающие  при  выполнении  программы,  препятствующие  нормальному 
продолжению  программы  и  требующие  специального  обслуживания 
(переполнение,  нарушение  защиты  памяти,  отсутствие  нужной  страницы  в 
оперативной  памяти  и  т.п.),  а  также  специальные  команды  типа INT n ( n — 
номер прерывания), являющиеся генераторами программных прерываний. Эти 
команды обычно используются для вызова определенных функций ОС. 
 
Обработка  исключительных  ситуаций (exception handling) — механизм 
языков программирования, предназначенный для описания реакции программы 
на ошибки времени выполнения и другие возможные проблемы (исключения), 
которые  могут  возникнуть  при  выполнении  программы  и  приводят  к 
невозможности  (бессмысленности)  дальнейшей  отработки  программой  её 


 
25 
базового алгоритма. В русском языке также применяется более короткая форма 
термина: «обработка исключений». 
Во  время  выполнения  программы  могут  возникать  ситуации,  когда 
состояние  данных,  УВВ  или  компьютерной  системы  в  целом  делает 
дальнейшие  вычисления  в  соответствии  с  базовым  алгоритмом  невозможным 
или бессмысленными. Классические примеры подобных ситуаций: 
•  Нулевое 
значение 
знаменателя 
при 
выполнении 
операции 
целочисленного  деления.  Результата  у  операции  быть  не  может, 
поэтому  ни  дальнейшие  вычисления,  ни  попытка  использования 
результата деления не приведут к решению задачи. 
•  Ошибка  при  попытке  считать  данные  с  внешнего  устройства.  Если 
данные  не  удаётся  ввести,  любые  дальнейшие  запланированные 
операции с ними бессмысленны. 
•  Исчерпание  доступной  памяти.  Если  в  какой-то  момент  система 
оказывается  не  в  состоянии  выделить  достаточный  для  прикладной 
программы объём оперативной памяти, программа не сможет работать 
нормально. 
•  Появление  сигнала  аварийного  отключения  электропитания  системы. 
Прикладную  задачу,  по  всей  видимости,  решить  не  удастся,  в  лучшем 
случае (при наличии какого-то резерва питания) прикладная программа 
может озаботиться сохранением данных. 
•  Появление  на  входе  коммуникационного  канала  данных,  требующих 
немедленного  считывания.  Чем  бы  ни  занималась  в  этот  момент 
программа,  она  должна  перейти  к  чтению  данных,  чтобы  не  потерять 
поступившую информацию. 


Достарыңызбен бөлісу:
1   ...   21   22   23   24   25   26   27   28   ...   268




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет