В чем разница между прерыванием и прерыванием?
Если терминология различна для разных систем, то что они означают на x86?
В чем разница между прерыванием и прерыванием?
Если терминология различна для разных систем, то что они означают на x86?
Ловушка представляет собой исключение в пользовательском процессе. Это вызвано делением на ноль или неправильным доступом к памяти. Это также обычный способ вызова подпрограммы ядра ( системный вызов ), потому что она запускается с более высоким приоритетом, чем пользовательский код. Обработка синхронная (поэтому код пользователя приостановлен и продолжается после этого). В некотором смысле они «активны» - большую часть времени код ожидает, что ловушка произойдет, и полагается на этот факт.
Прерывания является то генерируется аппаратными средствами (устройства , такие как жесткий диск, видеокарта, порты ввода / вывода, и т.д.). Это асинхронные (то есть они не происходят в предсказуемых местах в пользовательском коде) или «пассивные», поскольку обработчик прерываний должен ждать, пока они не произойдут.
Вы также можете видеть прерывание как своего рода внутреннее прерывание ЦП, поскольку обработчик обработчика прерываний выглядит как обработчик прерываний (регистры и указатели стека сохранены, имеется переключение контекста, выполнение может возобновиться в некоторых случаях, когда оно было остановлено) ,
Ловушки и прерывания тесно связаны между собой. Ловушки - это тип исключения , а исключения похожи на прерывания.
Intel x86 определяет две перекрывающиеся категории: векторные события ( прерывания против исключений ) и классы исключений ( ошибки против ловушек против прерываний ).
Все цитаты в этом посте взяты из версии Руководства разработчика программного обеспечения Intel за апрель 2016 года . Для (окончательной и сложной) точки зрения x86 я рекомендую прочитать главу SDM об обработке прерываний и исключений.
Векторные события
Векторные события ( прерывания и исключения ) приводят к тому, что процессор переходит в обработчик прерываний после сохранения большей части состояния процессора (достаточно, чтобы выполнение могло продолжаться с этого момента позже).
Исключения и прерывания имеют идентификатор, называемый вектором, который определяет, к какому обработчику прерываний переходит процессор. Обработчики прерываний описаны в таблице дескрипторов прерываний.
Прерывания
Исключения
Классификация исключений
Сводка: ловушки увеличивают указатель инструкции, ошибки - нет, а прерывает 'взорвать'.
ловушка
Fault
Пример: ошибка страницы часто исправима. Часть адресного пространства приложения могла быть выгружена на диск из оперативной памяти. Приложение вызовет ошибку страницы, когда оно попытается получить доступ к памяти, которая была выгружена. Ядро может перенести эту память с диска на оперативную память и передать управление обратно в приложение. Приложение продолжит работу с того места, где оно было остановлено (по ошибочной инструкции, которая обращалась к выгруженной памяти), но на этот раз доступ к памяти должен завершиться без сбоев.
Прервать
Краевые Чехлы
Вызываемые программным обеспечением прерывания (запускаемые инструкцией INT) ведут себя подобно ловушкам. Инструкция завершается до того, как процессор сохраняет свое состояние и переходит к обработчику прерываний.
источник
Вообще говоря, такие термины , как исключения, разломы, Прерывает, ловушки и Прерывания всего это означает тот же самое , и называется «Прерывание».
В связи с разницей между Trap и Interrupt:
В то время как
источник
Ловушка представляет собой особый вид прерывания , которое обычно называют программное прерывание . Прерывание представляет собой более общий термин , который охватывает как аппаратные прерывания (перебивает от аппаратных устройств) и программные прерывания (перебивает от программного обеспечения, такие как ловушки ).
источник
Ловушка вызывается программами, подобными коду, и используется, например, для вызова подпрограмм ОС (т.е. обычно синхронно). Прерывание вызывается событиями (много раз аппаратными, такими как сетевая карта, получившая данные, или таймером ЦП), и - как следует из названия - прерывает нормальный поток управления, поскольку ЦП должен переключиться на процедуру драйвера для обработки событие.
источник
Прерывание - это аппаратное изменение потока в системе. Обработчик прерывания вызывается для устранения причины прерывания; Затем управление возвращается в прерванный контекст и инструкцию. Ловушка - это сгенерированное программным обеспечением прерывание. Прерывание может использоваться, чтобы сигнализировать о завершении ввода-вывода, чтобы устранить необходимость опроса устройства. Ловушка может использоваться для вызова подпрограмм операционной системы или для обнаружения арифметических ошибок.
источник
Я думаю, что ловушки вызваны выполнением текущей инструкции, и поэтому они называются синхронными событиями. где прерывания вызваны независимой командой, выполняющейся в процессоре, которая связана с внешними событиями и, таким образом, называется асинхронной.
источник
Прерывания - это аппаратные прерывания, а прерывания - это программные прерывания. Появление аппаратных прерываний обычно отключает другие аппаратные прерывания, но это не так для ловушек. Если вам нужно запретить аппаратные прерывания до тех пор, пока не будет обработана ловушка, вам необходимо явно сбросить флаг прерывания. И обычно флаг прерывания на компьютере влияет на (аппаратные) прерывания, а не на прерывания. Это означает, что очистка этого флага не предотвратит ловушки. В отличие от прерываний, прерывания должны сохранять предыдущее состояние процессора.
источник
Ловушка - это программное прерывание. Если вы пишете программу, в которой вы объявляете переменную с делением на нулевое значение, то она обрабатывается как ловушка. Когда вы запускаете эту программу, она выдает одну и ту же ошибку одновременно. Системный вызов специальная версия ловушки, в которой программа запрашивает у нужного ей сервиса. В случае прерывания (общее слово для аппаратных прерываний), например, ошибки ввода-вывода, процессор прерывается в случайное время и, конечно же, это не ошибка наших программистов. Это аппаратное обеспечение, которое их вызывает.
источник