¿Cuál es la diferencia entre Trap e Interrupt?
Si la terminología es diferente para diferentes sistemas, ¿qué significan en x86?
¿Cuál es la diferencia entre Trap e Interrupt?
Si la terminología es diferente para diferentes sistemas, ¿qué significan en x86?
Una trampa es una excepción en un proceso de usuario. Es causado por la división por cero o por un acceso no válido a la memoria. También es la forma habitual de invocar una rutina del núcleo (una llamada al sistema ) porque se ejecutan con mayor prioridad que el código de usuario. El manejo es sincrónico (por lo que el código de usuario se suspende y continúa después). En cierto sentido, están "activos": la mayoría de las veces, el código espera que ocurra la trampa y se basa en este hecho.
Una interrupción es algo generado por el hardware (dispositivos como el disco duro, la tarjeta gráfica, los puertos de E / S, etc.). Estos son asíncronos (es decir, no suceden en lugares predecibles en el código de usuario) o "pasivos" ya que el controlador de interrupciones tiene que esperar a que sucedan eventualmente.
También puede ver una trampa como una especie de interrupción interna de la CPU, ya que el controlador para el controlador de trampa parece un controlador de interrupción (los registros y los punteros de la pila se guardan, hay un cambio de contexto, la ejecución puede reanudarse en algunos casos donde se detuvo) .
Las trampas y las interrupciones están estrechamente relacionadas. Las trampas son un tipo de excepción , y las excepciones son similares a las interrupciones.
Intel x86 define dos categorías superpuestas, eventos vectorizados ( interrupciones vs excepciones ) y clases de excepciones ( fallas vs trampas vs abortos ).
Todas las citas en esta publicación son de la versión de abril de 2016 del Manual del desarrollador de software Intel . Para la perspectiva x86 (definitiva y compleja), recomiendo leer el capítulo de SDM sobre manejo de interrupciones y excepciones.
Eventos vectoriales
Los eventos vectorizados ( interrupciones y excepciones ) hacen que el procesador salte a un controlador de interrupciones después de guardar gran parte del estado del procesador (lo suficiente como para que la ejecución pueda continuar desde ese punto más adelante).
Las excepciones e interrupciones tienen una ID, llamada vector, que determina a qué controlador de interrupciones salta el procesador. Los manejadores de interrupciones se describen en la tabla Descriptor de interrupciones.
Interrupciones
Excepciones
Clasificaciones de excepciones
Resumen: las trampas incrementan el puntero de instrucción, las fallas no y aborta la "explosión".
Trampa
Culpa
Ejemplo: un error de página a menudo es recuperable. Es posible que una parte del espacio de direcciones de una aplicación se haya cambiado al disco desde la memoria RAM. La aplicación activará un error de página cuando intente acceder a la memoria que se cambió. El kernel puede extraer esa memoria del disco a la memoria RAM, y el control manual de vuelta a la aplicación. La aplicación continuará donde se quedó (en la instrucción de falla que estaba accediendo a la memoria intercambiada), pero esta vez el acceso a la memoria debería tener éxito sin fallar.
Abortar
Casos de borde
Las interrupciones invocadas por software (activadas por la instrucción INT) se comportan de manera similar a una trampa. La instrucción se completa antes de que el procesador guarde su estado y salte al controlador de interrupciones.
fuente
En términos generales, términos como excepciones, fallas, abortos, trampas e interrupciones significan lo mismo y se denominan "interrupciones".
Llegando a la diferencia entre trampa e interrupción:
Donde como
fuente
Una trampa es un tipo especial de interrupción que comúnmente se conoce como interrupción de software . Una interrupción es un término más general que abarca tanto las interrupciones de hardware (interrupciones de dispositivos de hardware) como las interrupciones de software (interrupciones de software, como trampas ).
fuente
Un código llama a una trampa como programas y se usa, por ejemplo, para llamar a las rutinas del sistema operativo (es decir, normalmente sincrónico). Los eventos llaman a una interrupción (muchas veces hardware, como la tarjeta de red que ha recibido datos o el temporizador de la CPU) y, como su nombre indica, interrumpe el flujo de control normal, ya que la CPU tiene que cambiar a la rutina del controlador para manejar el evento.
fuente
Una interrupción es un cambio de flujo generado por hardware dentro del sistema. Se convoca a un manejador de interrupciones para tratar la causa de la interrupción; El control se devuelve al contexto e instrucción interrumpidos. Una trampa es una interrupción generada por software. Se puede usar una interrupción para indicar la finalización de una E / S para evitar la necesidad de sondeo del dispositivo. Se puede usar una trampa para llamar a las rutinas del sistema operativo o para detectar errores aritméticos.
fuente
Creo que las trampas son causadas por la ejecución de la instrucción actual y, por lo tanto, se llaman eventos sincrónicos. donde las interrupciones son causadas por una instrucción independiente que se ejecuta en el procesador y que están relacionadas con eventos externos y, por lo tanto, se conocen como eventos asíncronos.
fuente
Las interrupciones son interrupciones de hardware, mientras que las trampas son interrupciones invocadas por software. Las ocurrencias de interrupciones de hardware generalmente desactivan otras interrupciones de hardware, pero esto no es cierto para las trampas. Si necesita no permitir las interrupciones de hardware hasta que se sirva una trampa, debe borrar explícitamente el indicador de interrupción. Y, por lo general, el indicador de interrupción en la computadora afecta las interrupciones (de hardware) en lugar de las trampas. Esto significa que borrar esta bandera no evitará trampas. A diferencia de las trampas, las interrupciones deben preservar el estado anterior de la CPU.
fuente
Una trampa es una interrupción de software. Si escribe un programa en el que declara que una variable tiene un valor de división entre cero, entonces se trata como una trampa. Siempre que ejecute este programa arrojará el mismo error al mismo tiempo. versión especial de trap en la que un programa le pide a OS el servicio requerido. En caso de interrupción (una palabra general para interrupciones de hardware) como un error de E / S, la CPU se interrumpe en un momento aleatorio y, por supuesto, no es culpa de nuestros programadores. Es el hardware el que los saca a la luz.
fuente