Механизм автоматической обработки прерываний в программировании работает следующим образом: 2
- Установление факта прерывания. 2 Контроллер принимает и идентифицирует сигнал прерывания. 2
- Запоминание состояния прерванного процесса. 2 Состояние процесса определяется значением счётчика команд, содержимым регистра процессора, спецификацией режима (пользовательский или привилегированный). 2
- Приостановка текущей последовательности команд. 2 Управление передаётся обработчику прерывания, который реагирует на событие и обслуживает его, после чего возвращает управление в прерванный код. 2
Программный код, обрабатывающий прерывания, может выполняться: 3
- На уровне потока. 3 В этом случае для присоединения прерывания используется библиотечная функция InterruptAttachEvent(). 3
- На уровне сверхприоритетной функции-обработчика ISR. 3 Она выполняет самую необходимую работу по идентификации источника прерываний и его очистке. 3 Последующие, связанные с прерываниями действия, если они необходимы, выполняет специально предназначенная для этого нить, запускаемая из ISR с помощью события-уведомления. 3
Например, нажатие клавиши на клавиатуре компьютера или перемещение мыши запускает прерывания, которые вызывают обработчики прерываний, которые считывают клавишу или положение мыши и копируют соответствующую информацию в память компьютера. 4