Я читал (и изучал) об обработке прерываний.
Я всегда не понимаю, как мы узнаем, куда вернуться (PC / IP) из обработчика прерываний.
Как я понимаю:
- Прерывание вызвано устройством (скажем, клавиатурой)
- Соответствующий обработчик вызывается - под запущенным процессом. То есть переключение контекста на ОС не выполняется.
- Обработчик прерываний завершает работу и передает управление запущенному приложению.
Процесс, описанный выше, который является моим пониманием обработки прерываний, происходит в контексте текущего запущенного процесса. Так что это похоже на вызов метода, а не на переключение контекста.
Однако, поскольку мы фактически не вызывали CALL для обработчика прерываний, у нас не было возможности поместить текущий IP в стек.
Итак, как мы узнаем, где можно вернуться от прерывания. Я не совсем понимаю.
Буду признателен за любое объяснение, в том числе однострочники, которые просто указывают на хороший pdf / ppt, посвященный именно этому вопросу.
[Я обычно имею в виду вышеописанный процесс в коде Linux и C - но все хорошие ответы приветствуются]