Разница между прерыванием и ловушкой

Разница между прерыванием и ловушкой
Разница между прерыванием и ловушкой

Видео: Разница между прерыванием и ловушкой

Видео: Разница между прерыванием и ловушкой
Видео: АПС Л11. Подсистема прерывания 2024, Июль
Anonim

Прерывание vs Ловушка

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

Что такое прерывание?

Термин «Прерывание» обычно зарезервирован для аппаратных прерываний. Это прерывания управления программой, вызванные внешними аппаратными событиями. Здесь внешний означает внешний по отношению к ЦП. Аппаратные прерывания обычно поступают из множества различных источников, таких как микросхема таймера, периферийные устройства (клавиатуры, мыши и т. д.), порты ввода-вывода (последовательные, параллельные и т. карта и др.). Это означает, что аппаратные прерывания почти никогда не происходят из-за какого-либо события, связанного с исполняемой программой. Например, такое событие, как нажатие клавиши на клавиатуре пользователем или истечение времени внутреннего аппаратного таймера, может вызвать прерывание такого типа и может сообщить ЦП, что определенное устройство требует некоторого внимания. В такой ситуации ЦП остановит все, что он делал (т.е. приостановит текущую программу), предоставит услугу, требуемую устройством, и вернется к нормальной программе. Когда происходят аппаратные прерывания и ЦП запускает ISR, другие аппаратные прерывания отключаются (т.грамм. в машинах 80х86). Если вам нужно, чтобы другие аппаратные прерывания происходили во время работы ISR, вам нужно сделать это явным образом, сняв флаг прерывания (с помощью инструкции sti). В машинах 80×86 сброс флага прерывания повлияет только на аппаратные прерывания.

Что такое ловушка?

Ловушка может быть идентифицирована как передача управления, которая инициируется программистом. Термин Trap используется взаимозаменяемо с термином Exception (который представляет собой автоматически возникающее программное прерывание). Но некоторые могут возразить, что ловушка - это просто специальный вызов подпрограммы. Таким образом, они попадают в категорию программных прерываний. Например, в машинах 80×86 программист может использовать команду int для запуска прерывания. Поскольку ловушка всегда является безусловной, управление всегда передается подпрограмме, связанной с ловушкой. Точную инструкцию, которая вызывает подпрограмму для обработки ловушки, легко определить, поскольку для определения ловушки используется явная инструкция.

В чем разница между Interrupt и Trap?

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

Рекомендуемые: