Обработчик прерывания
Обрабо́тчик прерыва́ний (или процедура обслуживания прерываний) — специальная процедура, вызываемая по прерыванию для выполнения его обработки. Обработчики прерываний могут выполнять множество функций, которые зависят от причины, которая вызвала прерывание.
Обработчик прерываний — это низкоуровневый эквивалент обработчика событий. Эти обработчики вызываются либо по аппаратному прерыванию, либо соответствующей инструкцией в программе, и соответственно обычно предназначены для взаимодействия с устройствами или для осуществления вызова функций операционной системы.
На современных ПК обработчики основных аппаратных и программных прерываний находятся в памяти BIOS. Современная операционная система, во время своей загрузки, заменяет эти обработчики своими. При загрузке драйверов устройств операционная система распределяет управление обработкой прерывания между ними. В операционных системах семейства Windows программные прерывания используются для вызовов многих API функций. В ассемблере X86 прерывание вызывается командой int.
Обзор
В современных системах обработчики прерываний делятся на высокоприоритетные обработчики прерываний (ВОП) и низкоприоритетные обработчики прерываний (НОП).
К выполнению ВОП обычно предъявляются жесткие требования: малое время на выполнение, малое количество операций, разрешенных к выполнению, особая надежность, так как ошибки, допущенные во время выполнения, могут обрушить операционную систему, которая не может корректно их обработать. Поэтому ВОП обычно выполняют минимально необходимую работу: быстро обслуживают прерывание, собирают критичную информацию, которая доступна только в это время, и планируют выполнение НОП для дальнейшей обработки.
ВОП, которые обслуживают аппаратные устройства, обычно маскируют своё прерывание для того, чтобы предотвратить вложенные вызовы, которые могут вызвать переполнение стека.
НОП завершает обработку прерывания. НОП либо имеет собственный поток для обработки, либо заимствует на время обработки поток из системного пула. Эти потоки планируются наравне с другими, что позволяет добиться более гладкого выполнения процессов. НОП выполняется с гораздо менее жесткими ограничениями по времени и ресурсам, что облегчает программирование и использование драйверов.
В разных системах ВОП и НОП именуются по-разному. В операционной системе Windows ВОП называется обработчиком прерывания, а НОП — отложенный вызов процедуры (DPC, Deferred Procedure Call)