Каково различие между Прерыванием и Прерыванием?
Если терминология отличается для различных систем, то, что они имеют в виду на x86?
Прерывание является исключением в пользовательском процессе. Это вызвано делением на ноль или недопустимым доступом к памяти. Это также обычный способ вызова подпрограммы ядра (системный вызов ), потому что они выполняются с более высоким приоритетом, чем код пользователя. Обработка выполняется синхронно (поэтому код пользователя приостанавливается и продолжается после этого). В некотором смысле они «активны» - большую часть времени код ожидает, что ловушка произойдет, и полагается на этот факт.
прерывание генерируется оборудованием (такими устройствами, как жесткий диск, графическая карта, порты ввода-вывода и т. Д.). Они бывают асинхронными (т.е. они не происходят в предсказуемых местах пользовательского кода) или «пассивными», поскольку обработчик прерывания должен ждать, пока они в конечном итоге произойдут.
Вы также можете рассматривать ловушку как своего рода внутреннее прерывание ЦП, поскольку обработчик для обработчика прерывания выглядит как обработчик прерывания (регистры и указатели стека сохраняются, есть переключение контекста, выполнение может возобновиться в некоторых случаях, когда оно остановился).
Ловушка - это особый вид прерывания , которое обычно называют программным прерыванием . прерывание - это более общий термин, который охватывает как аппаратные прерывания (прерывания от аппаратных устройств), так и программные прерывания (прерывания от программного обеспечения, такие как прерывания ).
Ловушка вызывается кодом, подобным программам, и используется e. грамм. для вызова подпрограмм ОС (т.е. обычно синхронных). Прерывание вызывается событиями (часто аппаратными средствами, такими как сетевая карта, получившая данные, или таймер ЦП), и, как следует из названия, прерывает нормальный поток управления, поскольку ЦП должен переключиться на процедуру драйвера для обработки событие.