Excepciones

4. Resumen

En el contexto del sistema operativo Linux, las interrupciones y las excepciones son dos conceptos distintos pero relacionados en el manejo de eventos imprevistos o asincrónicos que pueden ocurrir durante la ejecución de un programa. Aquí hay una descripción de las diferencias clave entre ellas:

  1. Interrupciones (eventos generados por hardware)

    • Las interrupciones son eventos externos o hardware generados por dispositivos periféricos o el propio hardware del sistema y se corresponde con señales eléctricas generadas por el hardware.
    • Pueden ser síncronas o asíncronas. Las interrupciones síncronas ocurren en momentos específicos del programa, mientras que las asíncronas pueden ocurrir en cualquier momento.
    • Las interrupciones pueden ser enmascarables o no enmascarables. Las enmascarables pueden ser deshabilitadas temporalmente por el sistema operativo, mientras que las no enmascarables no pueden ser deshabilitadas.
    • Ejemplos de interrupciones son la interrupción del temporizador (timer interrupt), interrupciones de dispositivos de entrada/salida (I/O), interrupción de reloj en tiempo real (RTC), etc.
    • Las interrupciones se manejan mediante rutinas de manejo de interrupciones (interrupt handlers), que son funciones de bajo nivel escritas específicamente para responder a eventos de interrupción.

  2. Excepciones (eventos generados por software)

    • Las excepciones son eventos internos o software generados por el propio procesador durante la ejecución de instrucciones.
    • Generalmente son causadas por condiciones anómalas durante la ejecución del programa, como divisiones por cero, acceso a memoria no válida, instrucciones ilegales, entre otros.
    • Las excepciones pueden ser síncronas, ya que están directamente relacionadas con la ejecución de instrucciones del programa.
    • Las excepciones son manejadas por el sistema operativo o por el propio programa, dependiendo de la naturaleza de la excepción y de cómo se haya configurado el sistema.
    • En Linux, las excepciones son manejadas principalmente por el kernel del sistema operativo, que puede tomar medidas como enviar señales al proceso, abortar la ejecución del proceso o realizar otras acciones específicas para manejar la excepción.

En resumen, mientras que las interrupciones son eventos externos generados por hardware o dispositivos periféricos, las excepciones son eventos internos generados por el propio procesador debido a condiciones anómalas durante la ejecución del programa.

Ambos tipos de eventos requieren manejo especial por parte del sistema operativo para garantizar un funcionamiento adecuado del sistema.