Interrupciones y excepciones

Las excepciones e interrupciones son eventos inesperados que interrumpirán el flujo normal de ejecución de la instrucción (que actualmente está ejecutando el procesador). Una excepción es un evento inesperado dentro del procesador. La interrupción es un evento inesperado desde fuera del proceso.

Cada vez que ocurre una excepción o interrupción, el hardware comienza a ejecutar el código que realiza una acción en respuesta a la excepción. Esta acción puede implicar eliminar un proceso, generar un mensaje de error, comunicarse con un dispositivo externo o colapsar horriblemente todo el sistema informático al iniciar una «Pantalla azul de la muerte» y detener la CPU. Las instrucciones responsables de esta acción residen en el kernel del sistema operativo, y el código que realiza esta acción se denomina código del controlador de interrupciones. Ahora, podemos pensar en el código del controlador como una subrutina del sistema operativo. Luego, después de ejecutar el código del controlador, es posible continuar la ejecución después de la instrucción donde ocurrió la ejecución o la interrupción.

Manejo de excepciones e interrupciones:
cada vez que ocurre una excepción o interrupción, la ejecución pasa del modo de usuario al modo kernel donde se maneja la excepción o interrupción. En detalle, se deben seguir los siguientes pasos para manejar una excepción o interrupción.

Al ingresar al kernel, el contexto (valores de todos los registros de la CPU) del proceso que se está ejecutando actualmente debe guardarse primero en la memoria. El kernel ahora está listo para manejar la excepción/interrupción.

  1. Determine la causa de la excepción/interrupción.
  2. Manejar la excepción/interrupción.

Cuando se ha manejado la excepción/interrupción, el kernel realiza los siguientes pasos:

  1. Seleccione un proceso para restaurar y reanudar.
  2. Restaurar el contexto del proceso seleccionado.
  3. Reanudar la ejecución del proceso seleccionado.

En cualquier momento, los valores de todos los registros en la CPU definen el contexto de la CPU. Otro nombre utilizado para el contexto de la CPU es el estado de la CPU.

El controlador de excepción/interrupción utiliza la misma CPU que el proceso que se está ejecutando actualmente. Al ingresar al controlador de excepción/interrupción, los valores en todos los registros de la CPU que utilizará el controlador de excepción/interrupción deben guardarse en la memoria. Los valores de registro guardados pueden restaurarse más tarde antes de reanudar la ejecución del proceso.

El controlador puede haber sido invocado por varias razones. Por lo tanto, el controlador debe determinar la causa de la excepción o interrupción. La información sobre qué causó la excepción o interrupción se puede almacenar en registros dedicados o en direcciones predefinidas en la memoria.

A continuación, se debe atender la excepción o interrupción. Por ejemplo, si fue una interrupción del teclado, entonces se obtiene el código de tecla de la pulsación de tecla y se almacena en algún lugar o se toma alguna otra acción apropiada. Si se trata de una excepción de desbordamiento aritmético, se puede imprimir un mensaje de error o se puede terminar el programa.

La excepción/interrupción ahora se ha manejado y el kernel. El núcleo puede optar por reanudar el mismo proceso que se estaba ejecutando antes de manejar la excepción/interrupción o reanudar la ejecución de cualquier otro proceso que se encuentre actualmente en la memoria.

Ahora se puede restaurar el contexto de la CPU para el proceso elegido leyendo y restaurando todos los valores de registro de la memoria.

El proceso seleccionado para reanudar debe reanudarse en el mismo punto en que se detuvo. La máquina guardó la dirección de esta instrucción cuando ocurrió la interrupción, por lo que es simplemente una cuestión de obtener esta dirección y hacer que la CPU continúe ejecutándose en esta dirección.

Publicación traducida automáticamente

Artículo escrito por 25dikshasinghal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *