Создает ли обработчик прерываний новый процесс или он является частью существующего процесса?
С самого начала https://en.wikipedia.org/wiki/Interrupt существует три вида прерываний:
аппаратное прерывание,
Программное прерывание, вызванное исключительным состоянием в самом процессоре (часто называемое ловушкой или исключением)
Программное прерывание, вызванное выполнением специальной инструкции в наборе команд. (Например системные вызовы)
Мой вопрос заключается в том, что когда процессор переключается на запуск обработчика прерываний,
новый процесс создан для запуска обработчика прерываний?
Или выполнение обработчика прерываний является частью существующего процесса, например
- в первом типе прерывания - процесс, который запрашивает некоторую услугу у аппаратного устройства и затем ожидает аппаратного прерывания, которое указывает, что работа устройства заканчивается,
- процесс, который вызывает исключение во втором типе прерывания,
- процесс, который делает системный вызов в третьем виде прерывания.
1 ответ
новый процесс создан для запуска обработчика прерываний?
Запущенный процесс обрабатывает прерывание в режиме ядра.
Ваши три класса прерываний объединяют разные, но связанные понятия, в один термин "прерывание".
Неисправности и ловушки - это ИСКЛЮЧЕНИЯ, а не прерывания. Они обычно обрабатываются так же, как и прерывания, но они происходят синхронно с потоком команд (прерывания асинхронны) и (в отличие от прерываний) их нельзя заблокировать.
Обычно системный вызов является ОШИБКОЙ.