operating system - tutorial - Diferencia entre interrupción y evento.
que es google tag manager y como funciona (2)
Las interrupciones se implementan dentro del hardware (CPU) para interrumpir el flujo generalmente lineal de un programa. Esto es importante para eventos externos como la entrada del teclado, pero también para la interrupción de programas en sistemas operativos multitarea.
Los eventos son un medio de ingeniería de software y, probablemente, se conocen más a menudo por los kits de herramientas GUI. Allí, el kit de herramientas / OS envuelve sucesos como pulsaciones de teclas o entrada del mouse en "eventos". Luego se envían a los programas que se registraron para recibir tales eventos. Es tal vez un poco como un sistema de correo.
Para comparar ambos, desde una vista de programa de espacio de usuario:
-Las interrupciones obligarían a detener el programa para permitir que se ejecute algún código de nivel inferior (como el código del sistema operativo)
-Los eventos generalmente se le envían desde un código de nivel inferior y activan la ejecución de su código
¿Cuál es la diferencia entre la interrupción y un evento?
Estos dos conceptos ofrecen formas para que el "sistema / programa" se ocupe de varias "condiciones" que tienen lugar durante el desenvolvimiento normal de algún programa, y que puede requerir que el "sistema / programa" haga otra cosa, antes de regresar (o no ...) a la tarea original. Sin embargo, aparte de esta similitud funcional, son conceptos muy distintos que se utilizan en contextos distintos, en distintos niveles .
Las interrupciones proporcionan un dispositivo de bajo nivel para interrumpir el desenrollado normal de cualquier parte del programa en el que la CPU está trabajando en un momento dado, y para que la CPU comience a procesar las instrucciones en otra dirección. Las interrupciones son útiles para manejar diversas situaciones que requieren el procesamiento inmediato de la CPU (por ejemplo, para manejar las pulsaciones de teclas o la llegada de nuevos datos en un canal de comunicación en serie).
Muchas interrupciones son producidas por hardware (por algún dispositivo electrónico que cambia la polaridad en uno de los pines de la CPU), pero también hay interrupciones de software que son causadas por el propio programa invocando una instrucción particular. (o también por parte de la CPU, detectar algo está extraviado con respecto a sí mismo o al programa en ejecución).
Una interrupción muy famosa es INT 0x21, cuyo programa invoca [d] para llamar a servicios desde MS-DOS.
Las interrupciones generalmente se envían por medio de tablas vectoriales, donde la CPU tiene una ubicación particular en la memoria que contiene una matriz de direcciones [donde residen los manejadores de interrupciones en particular]. Al modificar el contenido de la tabla de interrupciones [si está permitido ...], un programa puede redefinir a qué controlador particular se llamará para un número de interrupción dado.
Por otro lado, los eventos son "mensajes" a nivel de sistema / idioma que se pueden usar para indicar diversas situaciones de hardware o software (yo usaría la palabra evento), como clics del mouse, entradas del teclado, pero también a nivel de aplicación situaciones como "Nuevo registro insertado en la base de datos" o solicitudes y mensajes altamente digeridos, utilizados en programas modulares para la comunicación / solicitudes entre varias partes del programa.
A diferencia de las interrupciones con su comportamiento [relativamente simple] que está completamente definido por la CPU, existen varios sistemas de sistemas de eventos, tanto en el nivel del sistema operativo como en varios marcos (por ejemplo, MS Windows, JavaScript, .NET, marcos de GUI como QT etc ..). Todos los sistemas de eventos, aunque son diferentes en sus implementaciones, normalmente comparten propiedades comunes, como
- el concepto de un controlador, que es una función / método particular del programa que está diseñado para manejar tipos particulares de eventos desde orígenes de eventos particulares.
- el concepto de un evento, que es una estructura [típicamente pequeña] que contiene información sobre el evento: su tipo, su fuente, los parámetros personalizados (cuya semántica depende del tipo de evento)
- una cola donde los eventos son insertados por fuentes y sondeados por consumidores / manejadores (o más precisamente por despachadores, dependiendo del sistema ...)