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