Ответ 1
Эти две концепции предлагают способы "системы/программы" справляться с различными "условиями", которые происходят во время обычной разворачивания какой-либо программы, и которая может потребовать от "системы/программы" сделать что-то еще, прежде возвращая (или не...) исходную задачу. Тем не менее, помимо этого функционального сходства, они представляют собой очень разные понятия, используемые в разных контекстах, на разных уровнях.
Прерывания предоставляют низкоуровневое устройство для прерывания нормальной разворачивания любой части программы, в которой процессор работает в течение заданного времени, и для запуска обработки ЦП инструкции по другому адресу. Прерывания полезны для обработки различных ситуаций, требующих немедленной обработки ЦП (например, для обработки нажатий клавиш или прихода новых данных в канал последовательной связи).
Многие прерывания производятся аппаратным обеспечением (некоторым электронным устройством, изменяющим полярность на одном из выводов ЦП), но есть также программные прерывания, которые являются причиной самой программы, вызывающей определенную инструкцию. (или же процессор, обнаруживающий что-то, сбивается с пути по отношению к себе или программе).
Очень известным прерыванием является INT 0x21, программа которого вызывает [d] для вызова служб из MS-DOS.
Прерывания, как правило, отправляются посредством векторных таблиц, в результате чего ЦП имеет определенное место в памяти, содержащее массив адресов [где находятся определенные обработчики прерываний]. Изменив содержимое таблицы прерываний [если это разрешено...], программа может переопределить, какой конкретный обработчик будет вызываться для данного номера прерывания.
События, с другой стороны, являются сообщениями на уровне системы/языка ", которые могут использоваться для обозначения различных аппаратных или программных ситуаций (я бы использовал слово-событие), такие как щелчки мыши, записи на клавиатуре, а также ситуации на уровне приложения, такие как" Новая запись, вставленная в базу данных" или очень расплывчатые запросы и сообщения, используемые в модульных программах для связи/запросов между различными частями программы.
В отличие от прерываний со своим [относительно простым] поведением, которое полностью определено ЦП, существуют различные системы систем событий на уровне операционной системы, а также различные структуры (например, MS Windows, JavaScript,.NET, Графические интерфейсы, такие как QT и т.д.). Все системы событий, в то время как разные в своих реализациях, обычно имеют общие свойства, такие как
- концепция обработчика, которая является конкретной функцией/методом программы, которая предназначена для обработки определенных типов событий из определенных источников событий.
- понятие события, которое представляет собой [обычно небольшую] структуру, содержащую информацию о событии: его тип, его источник, пользовательские параметры (какая семантика зависит от типа события)
- очередь, где события вставляются источниками и опрошены потребителями/обработчиками (точнее, диспетчерами, в зависимости от системы...)