Создает ли обработчик прерываний новый процесс или он является частью существующего процесса?

С самого начала https://en.wikipedia.org/wiki/Interrupt существует три вида прерываний:

  • аппаратное прерывание,

  • Программное прерывание, вызванное исключительным состоянием в самом процессоре (часто называемое ловушкой или исключением)

  • Программное прерывание, вызванное выполнением специальной инструкции в наборе команд. (Например системные вызовы)

Мой вопрос заключается в том, что когда процессор переключается на запуск обработчика прерываний,

  1. новый процесс создан для запуска обработчика прерываний?

  2. Или выполнение обработчика прерываний является частью существующего процесса, например

    • в первом типе прерывания - процесс, который запрашивает некоторую услугу у аппаратного устройства и затем ожидает аппаратного прерывания, которое указывает, что работа устройства заканчивается,
    • процесс, который вызывает исключение во втором типе прерывания,
    • процесс, который делает системный вызов в третьем виде прерывания.

1 ответ

новый процесс создан для запуска обработчика прерываний?

Запущенный процесс обрабатывает прерывание в режиме ядра.

Ваши три класса прерываний объединяют разные, но связанные понятия, в один термин "прерывание".

Неисправности и ловушки - это ИСКЛЮЧЕНИЯ, а не прерывания. Они обычно обрабатываются так же, как и прерывания, но они происходят синхронно с потоком команд (прерывания асинхронны) и (в отличие от прерываний) их нельзя заблокировать.

Обычно системный вызов является ОШИБКОЙ.

Другие вопросы по тегам