Прерывание означает временное прекращение основного процесса вычислений для выполнения некоторых запланированных или незапланированных действий, вызываемых работой аппаратуры или программы.Т.е. это процесс, временно переключающий микропроцессор на выполнение другой программы с последующим возвратом к прерванной программе.Нажимая клавишу на клавиатуре, мы инициируем немедленный вызов программы, которая распознает клавишу, заносит ее код в буфер клавиатуры, из которого он считывается другой программой. Т.е. на некоторое время микропроцессор прерывает выполнение текущей программы и переключается на программу обработки прерывания, так наз. обработчик прерывания. После того, как обработчик прерывания завершит свою работу, прерванная программа продолжит выполнение с точки, где было приостановлено ее выполнение.Адрес программы-обработчика прерывания вычисляется по таблице векторов прерываний.Механизм прерываний поддерживается на аппаратном уровне.
Классификация прерываний
В зависимости от источника, прерывания делятся на аппаратные - возникают как реакция микропроцессора на физический сигнал от некоторого устройства (клавиатура, системные часы, клавиатура, жесткий диск и т.д.), по времени возникновения эти прерывания асинхронны, т.е. происходят в случайные моменты времени;
программные - вызываются искусственно с помощью соответствующей команды из программы (int), предназначены для выполнения некоторых действий операционной системы, являются синхронными; · исключения - являются реакцией микропроцессора на нестандартную ситуацию, возникшую внутри микропроцессора во время выполнения некоторой команды программы (деление на ноль, прерывание по флагу TF (трассировка)).
Общая классификация прерываний
внешние - вызываются внешними по отношению к микропроцессору событиями
(по существу - это группа аппаратных прерываний) Вложенных прерываний нет!
· внутренние - возникают внутри микропроцессора во время вычислительного процесса (по существу - это исключительные ситуации и программные прерывания).
Внешние прерывания возникают по сигналу какого-нибудь внешнего устройства.
Внешние прерывания подразделяются на немаскируемые и маскируемые.
В связи с тем, что существуют два специальных внешних сигнала среди входных сигналов процессора, при помощи которых можно прервать выполнение текущей программы и тем самым переключить работу центрального процессора. Это сигналы NMI (no mask interrupt, немаскируемое прерывание) и INTR (interrupt request, запрос на прерывание).
Маскируемые прерывания генерируются контроллером прерываний по заявке определенных периферийных устройств. Контроллер прерываний (выполнен в виде специальной микросхемы i8259A) поддерживает восемь уровней (линий) приоритета; к каждому уровню “привязано” одно периферийное устройство. Именно маскируемые прерывания часто называют аппаратными прерываниями.
Операционную систему можно рассматривать как программу , управляемую прерываниями ( interrupt - driven program ).Прерывание центрального процессора передает управление подпрограмме обработки данного вида прерываний, являющейся частью ОС. В большинстве компьютеров этот механизм реализован через вектор прерываний ( interrupt vector )– резидентный массив в оперативной памяти, в котором хранятся доступные по номерам прерываний адреса подпрограмм-обработчиков прерываний (модулей ОС). При обработке прерывания аппаратура и ОС сохраняют адрес прерванной команды .При возобновлении вычислений будет вновь повторено выполнение прерванной команды.
Очевидно, что при обработке прерывания, в свою очередь, может возникнуть другое прерывание. В этом случае новое входящее прерывание задерживается (disabled),и информация о нем запоминается в очереди прерываний– системной структуре ОС, обеспечивающей поочередную обработку всех возникших прерываний.
Кроме прерываний, генерируемых аппаратурой неявно при вычислениях (например, отсутствие страницы в оперативной памяти), возможно также программируемое прерывание (trap ; дословно – ловушка ) с помощью специальной команды процессора, - например, при обнаруженной ошибке в программе. В случае такого прерывания также работает общий механизм запуска обработчика прерывания – части ОС. Таким образом, с упрощенной точки зрения, ОС можно рассматривать как набор обработчиков прерываний.
При прерывании ОС сохраняет состояние процессора –значения регистров и значение счетчика команд (program counter – PC)– адреса прерванной команды .Обработчик прерывания в ОС определяет по содержимому сегмента объектного кода, какого вида прерывание возникло и какие действия по его обработке следует предпринять. Среди возможных видов прерываний, кроме фиксации различных ошибок, имеются также прерывания по таймеру– периодические прерывания через определенный квант времени, предназначенные для опроса устройств (polling)– действий операционной системы по периодической проверке состояния всех портов и внешних устройств, которое может меняться с течением времени: например, к USB-порту была подключена флэшка; принтер закончил печать и освободился, и т.д. ОС выполняет реконфигурацию системы и корректирует системные таблицы, хранящие информацию об устройствах.