Когда процесс выполняет недопустимую инструкцию (например, деление на ноль или пытается получить доступ к запрещенной области памяти), это обнаруживается ЦП, затем ЦП сохраняет то, что должно сохранить, и изменяет IP (указатель инструкции) на адрес подпрограммы ОС, которая отвечает за эту конкретную ошибку. Тогда процесс ненормально завершается (или нет?).

Я хотел бы знать две вещи:
1. Всегда ли ненормально завершить процесс , который пытается выполнить недопустимую инструкцию?
2. Завершение выполняется ОС или процессором?

1 ответ1

1
  1. Нет.
  2. Исключение происходит в ЦП, затем ЦП передает управление ОС.

Мы называем это событие "исключением". DivisionByZero является типичным исключением.

CPU работает с кодами операций, а не с полным процессом / программным обеспечением. ОС передает следующий код операции в CPU. Если отклик ЦП является исключением, ОС обрабатывает то, что будет дальше: завершение или запуск вперед. Также процесс может настроить ОС для управления самими исключениями, в этом случае исключение ЦП получает ОС и пересылает процессу, а процесс может управлять следующим шагом.

Но это очень сложная тема, которую сложно сформулировать в двух словах.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .