Код ядра, который был прерван в первую очередь этим прерыванием, прерывается.
Именно поэтому написание обработчиков прерываний является такой болезненной задачей: они не могут сделать ничего, что могло бы поставить под угрозу правильность основного потока выполнения.
Например, способ, которым ядро Apple xnu обрабатывает большинство видов прерываний устройства, состоит в том, чтобы захватывать информацию в прерывании в запись в памяти, добавлять эту запись в очередь и затем возобновлять нормальное выполнение; Затем ядро получает прерывания из очереди через некоторое время (я полагаю, в основном цикле планировщика). Таким образом, обработчик прерываний взаимодействует с остальной системой только через очередь прерываний, и существует небольшая опасность того, что это вызовет проблемы.
Есть немного середины; на многих архитектурах (включая x86) привилегированный код может маскировать прерывания, чтобы они не вызывали прерывания. Это может быть использовано для защиты фрагментов кода, которые действительно не должны прерываться. Тем не менее, эти архитектуры обычно также имеют немаскируемые прерывания, которые игнорируют маскирование, поэтому прерывание все еще необходимо учитывать.