Interrupciones y Excepciones

Interrupción del procesador

Una petición de interrupción IRQ ("Interrupt Request") es una señal que se origina en un dispositivo hardware (por ejemplo, un periférico), para indicar al procesador que algo requiere su atención inmediata; se solicita al procesador que suspenda lo que está haciendo para atender la petición. En otras palabras, una Interrupción es la señal que envía un dispositivo de E/S a la CPU para indicar que la operación de la que se estaba ocupando

Interrupción no enmascarable
Significa que la interrupción no puede ser deshabilitada por software Se reservan para casos en que es crítica la respuesta, por ejemplo que se detecte un error de paridad en la memoria.
Interrupciones software
Se refieren a interrupciones relacionadas con servicios de la BIOS, mientras que las situadas en la zona de memoria convencional, se refieren a interrupciones instaladas por el Sistema o los programas de aplicación.
Interrupción enmascarable
Significa que, bajo control del software, el procesador puede aceptar o ignorar (enmascarar) la señal de interrupción.
Interrupciones hardware
Ocurren cuando un dispositivo necesita atención del procesador y genera una señal eléctrica en la línea IRQ que tiene asignada.

Orden de prioridad
Las interrupciones tienen un orden de prioridad, de forma que si ocurren dos de forma simultánea es atendida la de prioridad más alta. El orden en que se atienden es el siguiente:
1º: Excepciones del procesador.
2º: Interrupciones software.
3º: Interrupciones hardware no enmascarables.
4º: Interrupciones hardware enmascarables.

Importancia de las interrupciones
El mecanismo de tratamiento de las interrupciones permite al SO utilizar la CPU en servicio de una aplicación, mientras otra permanece a la espera de que concluya una operación en un dispositivo de E/S.
El hardware se encarga de avisar al SO cuando el dispositivo de E/S ha terminado y el SO puede intervenir entonces, si es conveniente, para hacer que el programa que estaba esperando por el dispositivo, se continúe ejecutando.
En ciertos intervalos de tiempo puede convenir no aceptar señales de interrupción. Por ello las interrupciones pueden inhibirse por programa (aunque esto no deben poder hacerlo las mismas).

Excepciones del procesador
Durante el funcionamiento del procesador pueden ocurrir circunstancias excepcionales; es usual citar como ejemplo el caso de una división por cero. En estos casos, el procesador genera una excepción, que es tratada como si fuese una interrupción software , con la diferencia de que el número de interrupción asociado depende del tipo de excepción, en otras palabras, una Excepción es una situación de error detectada por la CPU mientras ejecutaba una instrucción, que requiere tratamiento por parte del SO.

Clases de excepciones
Las instrucciones de un programa pueden estar mal construidas por diversas razones:
El código de operación puede ser incorrecto.
Se intenta realizar alguna operación no definida, como dividir por cero.
La instrucción puede no estar permitida en el modo de ejecución actual.
La dirección de algún operando puede ser incorrecta o se intenta violar alguno de sus permisos de uso.

Importancia de las excepciones
El mecanismo de tratamiento de las excepciones es esencial para impedir, junto a los modos de ejecución de la CPU y los mecanismos de protección de la memoria, que las aplicaciones realicen operaciones que no les están permitidas. En cualquier caso, el tratamiento específico de una excepción lo realiza el SO.
Como en el caso de las interrupciones, el hardware se limita a dejar el control al SO, y éste es el que trata la situación como convenga.
Es bastante frecuente que el tratamiento de una excepción no retorne al programa que se estaba ejecutando cuando se produjo la excepción, sino que el SO aborte la ejecución de ese programa. Este factor depende de la pericia del programador para controlar la excepción adecuadamente.