В многопроцессорном режиме переключение контекста может произойти во время выполнения обработчика прерываний.На самом деле, это было бы трудно предотвратить.
На машине с одним ЦП по определению может быть запущен только один поток управления за раз.Он имеет только один набор регистров, один ALU и т. Д. Поэтому, если работает обработчик прерываний, просто нет ресурсов для выполнения переключения контекста.
Теперь, если вы имеете в виду, может ли обработчик прерываний фактически вызыватькод переключения контекста и делают единичным, ну, я полагаю, на некоторых системах, которые можно заставить работать.Но для большинства это не имело бы большого значения и было бы трудно организовать.Процессор работает с повышенным приоритетом, и этот приоритет не может быть снижен, или синхронизация между уровнями прерываний потеряна.Критические разделы в ОС уже синхронизируются с выполнением прерываний, и это может привести к сложностям.Кроме того, переключение контекста происходит путем изменения стеков, как в многопоточной программе пользовательского режима, поэтому трудно представить, как это может произойти, когда стек прерываний необходим для возврата из прерывания.