Requisito previo: interrupciones y excepciones
La interrupción es una de las clases de excepción. Hay 4 clases de excepción: interrupción, captura, falla y aborto. Aunque, la interrupción pertenece a la excepción, todavía hay muchas diferencias entre ellos.
En cualquier computadora, durante la ejecución normal de un programa, puede haber eventos que hagan que la CPU se detenga temporalmente. Eventos como este se llaman interrupciones. Las interrupciones pueden ser causadas por fallas de software o hardware. Las interrupciones de hardware se denominan interrupciones, mientras que las interrupciones de software se denominan excepciones. Una vez que se genera una interrupción, el control se transfiere a una subrutina especial llamada Rutina de servicio de interrupción (ISR), que puede manejar las condiciones que genera la interrupción.
¿Qué es Trap, Fault y Abort?
- Trampa:
suele ser un tipo de interrupción síncrona provocada por una condición excepcional (p. ej., punto de interrupción, división por cero, acceso a memoria no válido). - Falla:
la excepción de falla se usa en una aplicación cliente para detectar fallas de SOAP especificadas por contrato. Mediante el mensaje de excepción simple, no puede identificar el motivo de la excepción, por eso es útil una excepción de falla. - Abortar:
es un tipo de excepción que se produce cuando la búsqueda de una instrucción provoca un error.
¿Qué es Interrumpir?
El término interrupción generalmente se reserva para las interrupciones de hardware. Son interrupciones del control del programa causadas por eventos de hardware externo. Aquí, externo significa externo a la CPU. Las interrupciones de hardware generalmente provienen de muchas fuentes diferentes, como un chip temporizador, dispositivos periféricos (teclados, mouse, etc.), puertos de E/S (serie, paralelo, etc.), unidades de disco, reloj CMOS, tarjetas de expansión (tarjeta de sonido, video). tarjeta, etc.). Eso significa que las interrupciones de hardware casi nunca ocurren debido a algún evento relacionado con el programa en ejecución.
Ejemplo:
un evento como la pulsación de una tecla en el teclado por parte del usuario, o un tiempo de espera del temporizador de hardware interno puede generar este tipo de interrupción y puede informar a la CPU que un determinado dispositivo necesita atención. En una situación como esa, la CPU detendrá lo que estaba haciendo (es decir, detiene el programa actual), brinda el servicio requerido por el dispositivo y vuelve al programa normal. Cuando ocurren interrupciones de hardware y la CPU inicia la ISR, se desactivan otras interrupciones de hardware (por ejemplo, en máquinas 80×86). Si necesita que ocurran otras interrupciones de hardware mientras se ejecuta el ISR, debe hacerlo explícitamente borrando el indicador de interrupción (con la instrucción sti). En máquinas 80×86, borrar el indicador de interrupción solo afectará las interrupciones de hardware.
¿Qué es la excepción?
La excepción es una interrupción de software, que se puede identificar como una rutina de controlador especial. La excepción se puede identificar como una trampa que ocurre automáticamente. Generalmente, no hay instrucciones específicas asociadas con las excepciones (las trampas se generan usando una instrucción específica). Entonces, ocurre una excepción debido a una condición «excepcional» que ocurre durante la ejecución del programa.
Ejemplo:
la división por cero, la ejecución de un código de operación ilegal o una falla relacionada con la memoria podría causar excepciones. Cada vez que se genera una excepción, la CPU suspende temporalmente el programa que estaba ejecutando e inicia el ISR. ISR contendrá qué hacer con la excepción. Puede corregir el problema o, si no es posible, puede abortar el programa correctamente mediante la impresión de un mensaje de error adecuado. Aunque una instrucción específica no causa una excepción, una instrucción siempre causará una excepción. Por ejemplo, el error de división por cero solo puede ocurrir durante la ejecución de la instrucción de división.
Diferencia entre interrupción y excepción:
Interrumpir | Excepción |
---|---|
Estas son interrupciones de hardware. | Estas son interrupciones de software. |
Las ocurrencias de interrupciones de hardware generalmente desactivan otras interrupciones de hardware. | Este no es un caso real en términos de Excepción. |
Estas son requests externas asincrónicas de servicio (como el teclado o la impresora que necesitan servicio). | Estas son requests de servicio internas sincrónicas basadas en eventos anormales (piense en instrucciones ilegales, dirección ilegal, desbordamiento, etc.). |
Al ser asíncrono, las interrupciones pueden ocurrir en cualquier lugar del programa. | Al ser síncrono, las excepciones ocurren cuando hay un evento anormal en su programa, como dividir por cero o una ubicación de memoria ilegal. |
Estos son eventos normales y no deberían interferir con el funcionamiento normal de una computadora. | Estos son eventos anormales y a menudo resultan en la terminación de un programa. |
Publicación traducida automáticamente
Artículo escrito por harleenk_99 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA