В чем разница между прерыванием и контекстом исключения? - PullRequest
13 голосов
/ 04 сентября 2011

Есть ли существенная разница между этими двумя?Есть ли что-нибудь, что можно сделать в одном, а не в другом?Нужно ли быть более внимательным при изменении, например, обработчика ошибок страницы, чем при обработке таймера?

Ответы [ 2 ]

20 голосов
/ 06 сентября 2011

Прерывание - это асинхронное событие, которое обычно генерируется аппаратными средствами (Ex, I / O), не синхронизированными с выполнением инструкций процессора. Исключением являются синхронные события, которые генерируются, когда процессор обнаруживает любое предопределенное условие при выполнении инструкции.

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

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

Вы должны быть осторожны при написании / изменении обработчика прерываний

6 голосов
/ 06 ноября 2013

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

Прерывания обрабатываются процессором после завершения ток инструкция. Если он находит сигнал на своем контакте прерывания, он будет смотреть вверх адрес обработчика прерываний в таблице прерываний и передать этот рутинный контроль. После возвращения из прерывания обработчик программа возобновит выполнение программы на инструкция после прерванная инструкция.

Исключения, с другой стороны, делятся на три вида. Это Неисправности, ловушки и прерывания. Неисправности обнаружены и обслужены посредством процессор перед ошибочными инструкциями. Ловушки обслуживается после инструкция, вызывающая ловушку. Пользовательские прерывания войти в это категория и, можно сказать, ловушки; это включает в себя MS- DOS INT 21h программное прерывание, например. Прерывания используются только для сильный сигнал системные проблемы, когда работа больше невозможна.

Исследования по адресу: https://www.allinterview.com/showanswers/14289/distinguish-between-interrupts-and-exceptions.html

...