Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
686.docx
Скачиваний:
85
Добавлен:
24.04.2019
Размер:
6.68 Mб
Скачать

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

В зависимости от источника возникновения сигнала прерывания делятся

на:

 асинхронные или внешние (аппаратные) — события, которые исходят

от внешних источников (например, периферийных устройств) и могут

произойти в любой произвольный момент: сигнал от таймера, внешнего

интерфейса, АЦП и других;

 внутренние — события в самом процессоре как результат нарушения

каких-то условий при исполнении машинного кода: деление на ноль

или

переполнение,

обращение

к

недопустимым

адресам

или

недопустимый код операции. Такого рода прерывания еще называются

исключительными ситуациями (exceptions);

 программные

(частный

случай

внутреннего

прерывания) —

инициируются

исполнением

специальной

инструкции

в

коде

программы. Программные прерывания как правило используются для

обращения к функциям встроенного программного обеспечения

драйверов и операционной системы.

А п п а р а т н ы е п р е р ы в а н и я могут возникать в произвольные моменты

времени и являются асинхронными по отношению к выполняемой программе.

С помощью аппаратных прерываний осуществляется взаимодействие

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

ошибках аппаратуры (например, ошибка памяти, ошибка передачи по шине и т.

23

п.) или об аварийном отключении питания. Во втором случае иногда такие

прерывания называют исключительными ситуациями (exceptions).

Реагируя на аппаратное прерывание, процессор должен идентифицировать

его источник, сохранить минимальный контекст прерываемой программы и

переключаться на специальную программу – обработчик прерывания (interrupt

handler), который может быть оформлен как процедура или задача.

Действия

обработчика

прерывания,

называемые

обслуживанием

прерывания, заключается в том, чтобы правильно отреагировать на прерывание

конкретного источника (например, поместить символ нажатой клавиши в

буфер, произвести инкремент системных часов и т. п.).

После завершения обслуживания прерывания процессор возвращается к

выполнению прерванной программы, и она должна продолжиться таким

образом, как будто прерывания не было.

К основным ситуациям, возникающим вне процессора и приводящим к

прерыванию, относятся:

 запросы

от

управляемого

объекта

(являются

типичными

для

управляющих систем), т.е. запросы от ВУ:

a) ВУ, готовые к обмену, требуют реакции процессора для организации

программно-управляемой передачи данных;

b) завершение работы ВУ или КВВ по передаче данных;

c) особая (аварийная) ситуация в ВУ или КВВ.

 запросы

прерываний

от

других

процессоров

для

обеспечения

синхронизации вычислительных процессов, протекающих в рамках

многопроцессорной системы.

Программные прерывания, в отличие от аппаратных, появляются

синхронно по отношению к выполняемой программе.

Причинами программных прерываний могут служить особые ситуации,

возникающие при выполнении программы, препятствующие нормальному

продолжению

программы

и

требующие

специального

обслуживания

(переполнение, нарушение защиты памяти, отсутствие нужной страницы в

оперативной памяти и т.п.), а также специальные команды типа INT n ( n —

номер прерывания), являющиеся генераторами программных прерываний. Эти

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

Обработка исключительных ситуаций (exception handling) — механизм

языков программирования, предназначенный для описания реакции программы

на ошибки времени выполнения и другие возможные проблемы (исключения),

которые могут возникнуть при выполнении программы и приводят к

невозможности (бессмысленности) дальнейшей отработки программой её

24

базового алгоритма. В русском языке также применяется более короткая форма

термина: «обработка исключений».

Во время выполнения программы могут возникать ситуации, когда

состояние данных, УВВ или компьютерной системы в целом делает

дальнейшие вычисления в соответствии с базовым алгоритмом невозможным

или бессмысленными. Классические примеры подобных ситуаций:

 Нулевое

значение

знаменателя

при

выполнении

операции

целочисленного деления. Результата у операции быть не может,

поэтому ни дальнейшие вычисления, ни попытка использования

результата деления не приведут к решению задачи.

 Ошибка при попытке считать данные с внешнего устройства. Если

данные не удаётся ввести, любые дальнейшие запланированные

операции с ними бессмысленны.

 Исчерпание доступной памяти. Если в какой-то момент система

оказывается не в состоянии выделить достаточный для прикладной

программы объём оперативной памяти, программа не сможет работать

нормально.

 Появление сигнала аварийного отключения электропитания системы.

Прикладную задачу, по всей видимости, решить не удастся, в лучшем

случае (при наличии какого-то резерва питания) прикладная программа

может озаботиться сохранением данных.

 Появление на входе коммуникационного канала данных, требующих

немедленного считывания. Чем бы ни занималась в этот момент

программа, она должна перейти к чтению данных, чтобы не потерять

поступившую информацию.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]