Чем отличаются TRAP, программные прерывания и аппаратные прерывания?

Я просто хотел узнать основное различие между ними.

В некоторых местах я обнаружил, что TRAP, по сути, также называется программным прерыванием или чем-то вроде исключения.

Также в чем основное различие между программным прерыванием и исключением.

Программное прерывание может быть сгенерировано инструкцией INT, но TRAP может быть сгенерирован только в определенных сценариях, таких как деление на ноль? Это правильно?

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


person Emil.Thomas    schedule 11.01.2017    source источник
comment
Мы не место для запросов или обсуждения.   -  person too honest for this site    schedule 11.01.2017
comment
грузовик или грузовик, подтяжки или подтяжки, отпуск или отпуск. И, конечно же, мы можем добавить другие. Одна группа людей в одной компании использует один или один набор терминов. ловушка, исключение, прерывание и т. д. Таблица данных, справочник, справочное руководство, руководство пользователя, справочное руководство для программистов, техническое справочное руководство и т.д. вы указываете им в туалет.   -  person old_timer    schedule 13.01.2017
comment
читая конкретную таблицу или какое-либо указанное руководство, используя контекст вокруг слов, вы можете понять, что поставщик микросхем или автор руководства использует один конкретный термин и, надеюсь, придерживается его повсюду. вы увидите, что, например, arm использует как исключение, так и прерывание, некоторые из исключений связаны с периферийными (внешними по отношению к ядру) прерываниями, а некоторые являются внутренними, как неопределенная инструкция, поэтому в этом случае все они являются исключениями, обрабатываемыми адресами таблицы исключений ( cortex-m), но некоторые из них связаны с аппаратными прерываниями.   -  person old_timer    schedule 13.01.2017


Ответы (1)


Терминология действительно немного размыта и может зависеть от производителя процессора.

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

Обозначение ловушки немного различается в зависимости от производителя процессора. Ловушки на процессорах других производителей могут (например, на процессорах 68000 или PowerPC) быть программными прерываниями. У этих процессоров есть инструкция TRAP. На x86 эта инструкция будет INT xxx, на ARM CPU SWI / SVC, на PowerPC TRAP #xx. Это будет исключение, намеренно инициированное пользовательской программой (обычно используется для входа в операционную систему).

Ловушки в мире Intel - это исключительные условия, такие как деление на ноль или другие ошибки, такие как недопустимый доступ к памяти (но также могут быть вызваны установленным одношаговым флагом). Другие поставщики ЦП просто называют это исключением. Это исключения, обычно вызываемые ошибочными программами или условиями, которые ЦП не может обработать во время нормального выполнения программы.

И все они обычно называются исключениями.

person tofro    schedule 11.01.2017
comment
спасибо за ответ, он был информативным, однако я хотел указать на одно изменение во мнении. И программные прерывания, и TRAP являются исключениями, но программные прерывания - это прерывания, которые вызваны программным обеспечением, обычно программой в пользовательском режиме, обычно создаваемой через Инструкция INT или какая-либо другая инструкция, тогда как TRAP является исключением в пользовательском процессе. Это вызвано делением на ноль или недопустимым доступом к памяти. Это также обычный способ вызвать подпрограмму ядра (системный вызов), потому что она выполняется с более высоким приоритетом, чем код пользователя. - person Emil.Thomas; 17.01.2017
comment
@ Emil.Thomas (я не знаю, что написал что-то другое) Это терминология Intel. Однако, как указано в ответе, есть и другие. Последняя часть вашего комментария странная. Инструкции не выполняются с приоритетом - однако они могут поднять состояние процессора до более высокого уровня привилегий, что может привести к тому, что можно будет получить доступ к большему количеству / другой памяти и операциям ввода-вывода (например, INT делает), не вызывая исключения. - person tofro; 17.01.2017