Обработчик прерываний
-
Основы аппаратных прерываний
- Аппаратные прерывания — это события, которые вызывают прерывание выполнения программы.
- Прерывания могут быть запрограммированы пользователем или возникать автоматически из-за аппаратных сбоев.
-
Типы прерываний
- Прерывания делятся на аппаратные и программные.
- Аппаратные прерывания генерируются аппаратными устройствами, такими как клавиатура или мышь.
- Программные прерывания генерируются программным обеспечением, например, при выполнении системных вызовов.
-
Обработка прерываний
- Обработчик прерываний — это функция, которая выполняется при возникновении прерывания.
- Обработчики прерываний обычно имеют низкий приоритет и выполняются в отдельном контексте.
- Обработчик прерываний должен быстро реагировать на прерывание и сбрасывать флаг прерывания.
-
Контекст выполнения и стек
- В современных операционных системах контекст выполнения обработчика прерываний обычно не заметен.
- В микроконтроллерах стек может быть ограничен, что требует анализа требований к стеку для каждого обработчика.
-
Ограничения по времени и параллелизму
- Обработчики прерываний должны быть короткими и избегать блокирующих системных вызовов.
- В многозадачных системах важно разделение аппаратных обработчиков на переднюю и заднюю части для обеспечения параллелизма.
-
Разделение обработчиков прерываний
- В некоторых операционных системах, таких как Linux, обработчики прерываний делятся на FLIH (жесткие) и SLIH (медленные).
- FLIH выполняют специфичную для платформы обработку и планирование выполнения SLIH.
- SLIH выполняют долговременную обработку прерываний и могут быть реализованы в отдельных потоках или пулах рабочих потоков.