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