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