Где определяются прерывания и как они обрабатываются
Что проверяют
Для QA вопрос обычно двойной. Либо проверяют базу по устройству компьютера, если вы идёте в тестирование встраиваемых систем или драйверов, либо имеют в виду тестирование прерываний в мобильных приложениях. Уточните, о чём речь, и покажите, что знаете оба смысла. Следом просят придумать тест-кейсы.
Как отвечать
Про железо:
- где определяются: в таблице векторов прерываний. На x86 это IDT, её адрес процессору сообщает инструкция
lidt. На ARM Cortex-M таблица лежит в начале прошивки, а приоритетами управляет контроллер NVIC. В Linux драйвер регистрирует обработчик черезrequest_irq(), счётчики видны в/proc/interrupts; - виды: аппаратные от устройств (таймер, сеть, диск), исключения, которые процессор генерирует сам на ошибке (деление на ноль, page fault), и программные, вызванные инструкцией, например системные вызовы;
- обработка: процессор завершает текущую инструкцию, сохраняет контекст, по вектору переходит в обработчик (ISR). Тот делает минимум работы и сообщает контроллеру о завершении, затем контекст восстанавливается. Тяжёлую часть откладывают: в Linux в softirq и workqueue, в RTOS в отдельную задачу;
- маскирование: обычные прерывания можно временно запретить, немаскируемые (NMI) нельзя.
Для мобильного QA прерывание это любое внешнее событие поверх работающего приложения: входящий звонок, пуш, будильник, блокировка экрана, поворот, потеря сети, переход с Wi-Fi на мобильный интернет, низкий заряд, системный диалог разрешений. Проверяют, что после возврата сохранены данные формы, позиция в плеере и шаг оплаты, а приложение не упало и не отправило запрос дважды.
Где спотыкаются
Называют деление на ноль программным прерыванием. Это исключение: синхронное событие, которое процессор создаёт сам, а не инструкция, которую написал программист.
Отвечают только теорией и не переходят к тест-кейсам. Для тестировщика встраиваемых систем ценно, что вы проверите гонки между обработчиком и основным кодом, задержку реакции и шторм прерываний.
В мобильных тестах смотрят лишь на то, что приложение не упало. Настоящие дефекты обычно в потерянном состоянии: пустая форма, сброшенная корзина, повторный платёж.