Примеры программного прерывания и исключения на уровне приложения

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

Может ли кто-нибудь дать мне четкий пример того и другого, который поможет мне понять различия между ними?

Например, является ли деление на ноль программным прерыванием? Или исключение?


person user3054735    schedule 06.11.2016    source источник


Ответы (1)


Прерывания и исключения имеют один и тот же метод диспетчеризации (обычно через вектор системного прерывания). Однако прерывания и исключения запускаются по-разному.

Исключение возникает при выполнении потока инструкций. Таким образом, исключения возникают в предсказуемых точках приложения.

Прерывания возникают в результате событий, внешних по отношению к потоку выполнения.

Деление на ноль происходит в результате того, что поток инструкций делает его исключением.

Некоторые операционные системы основаны на прерываниях (например, Windoze и VMS). Они позволяют прерывать работу приложения в пользовательском (или других режимах) по разным причинам.

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

person user3344003    schedule 07.11.2016