Interrupciones en sistemas informáticos

Interrupción

Se genera cuando se quiere que la CPU deje de ejecutar el proceso en curso el proceso en curso y ejecute una función específica de quien produce la la interrupción. Cuando se ejecuta esta función específica decimos que la CPU está atendiendo interrupción.

Las interrupciones surgen de la necesidad que tienen los dispositivos periféricos de enviar información al procesador principal de un sistema informático.

Tipos de interrupción

  • Interrupcion software: se produce cuando un usuario solicita una llamada del sistema.
  • Interrupciones hardware: Cuando un dispositivo hardware requiere la atención de la CPU para que se ejecute su manejador.
  • Excepciones: Causas por la propia CPU cuando ocurre algún suceso, por ejemplo una división por cero

Procesamiento

  • Terminar la ejecución de la instrucción máquina en curso.
  • Salvar el valor del contador de programa, IP, en la pila, de manera que en la CPU, pueda seguir ejecutando el programa a partir de la última instrucción.
  • La CPU salta a la dirección donde está almacenada la rutina de servicio de interrupción y ejecuta esa rutina que tiene como objetivo atender al dispositivo que generó la interrupción.
  • Una vez que la rutina de la interrupción termina, el procesador restaura el estado que había guardado en la pila en el paso 2 y retorna al programa que se estaba usando anteriormente.

Interrupciones de Software

Aquellas generadas por un programa en ejecución, también son denominadas llamadas al sistema. Para generarlas, existen distintas instrucciones en el código máquina que permiten al programador producir una interrupción, las cuales suelen tener nemotécnicos tales como INT (por ejemplo, en DOS se realiza la instrucción INT 0x21 y en Unix se utiliza INT 0x80 para hacer llamadas de sistema).

Dos tipos de interrupciones:

  • Interrupciones del Sistema operativo: DOS y del BIOS.
  • Interrupciones del usuario: Son aquellas programadas por el usuario, es decir, el usuario decide cuando y donde ejecutarlas, generalmente son usadas para realizar entrada y salida.

Este tipo de interrupciones son de prioridad más alta que las de hardware, de forma que si se recibe una interrupción hardware mientras que se ejecuta una software, esta última tiene prioridad.

Interrupciones de Hardware

Son aquellas interrupciones que se producen como resultado de, por lo general, una operación de E/S. No son producidas por ninguna instrucción de un programa. Son asíncronas a la ejecución del CPU.

Cuando el microprocesador accede a un periférico, puede transcurrir algún tiempo antes de que los datos sean obtenidos o transmitidos. La solución más simple es esperar hasta recibir los datos o hasta que se haya efectuado la transmisión (polling), pero esta solución bloquea todos los programas en ejecución, y eso no puede admitirse en un sistema multitarea. Por ello, en los sistemas modernos se prefiere un funcionamiento mediante interrupciones, ya que éstas permiten mejorar la productividad del procesador, de forma que este último puede ordenar una operación de E/S y, en lugar de tener que realizar una espera activa, se puede dedicar a atender a otro proceso o aplicación hasta que el dispositivo esté de nuevo disponible, siendo dicho dispositivo el encargado de notificar al procesador mediante la línea de interrupción que ya está preparado para continuar/terminar la operación de E/S.

Clasificación

Se dividen en dos internos y externos

  • Las interrupciones internas son generadas por ciertos eventos que surgen durante la ejecución de un programa. Este tipo de interrupciones son manejadas en su totalidad por el hardware y no es posible modificarlas.
  • Las interrupciones externas las generan los dispositivos periféricos, como pueden ser: teclado, impresoras, tarjetas de comunicaciones, etc. También son generadas por los coprocesadores, no es posible desactivar a las interrupciones externas.

Tipos

Hay dos tipos de interrupción externas por hardware:

  • Enmascarables: El procesador no puede atenderla o la ignora. Se usan para la atención del periférico.
  • No enmascarables: El procesador no puede evitar atenderla y tienen mayor prioridad.

Un ejemplo claro de este tipo de interrupciones es la que actualiza el contador del reloj interno de la computadora, el hardware hace el llamado a esta interrupción varias veces durante un segundo para mantener la hora actualizada.

Excepciones

Aquellas que se producen de forma síncrona a la ejecución del procesador y por tanto podrían predecirse si se analiza con detenimiento la traza del programa que en ese momento estaba siendo ejecutado en la CPU. Suelen ser causadas al realizarse operaciones no permitidas tales como la división entre 0, el desbordamiento, el acceso a una posición de memoria no permitida, entre otras más.

Son un tipo de interrupción sincrónica típicamente causada por una condición de error en un programa. Normalmente genera un cambio de contexto a modo supervisor para que el sistema operativo atienda el error. Así pues, las excepciones son un mecanismo de protección que permite garantizar la integridad de los datos almacenados tanto en el espacio de usuario como en el espacio kernel. Cuando el Sistema Operativo detecta una excepción intenta solucionarla, pero en caso de no poder simplemente notificará la condición de error a la aplicación/usuario y abortará la misma.

Orden de prioridad de las interrupciones

  • Excepciones del procesador.
  • Interrupciones software.
  • Interrupciones hardware no enmascarables.
  • Interrupciones hardware enmascarables.

Tratamiento de interrupciones

El acontecimiento de una interrupción desencadena una serie de sucesos, tanto en el hardware del procesador como en el software. Cuando un dispositivo de E/S completa una operación de E/S, se produce en el hardware la siguiente secuencia de sucesos:

1. El dispositivo emite una señal de interrupción al procesador.

2. El procesador finaliza la ejecución de la instrucción en curso antes de responder a la interrupción

3. El procesador pregunta por la interrupción, comprueba que hay una y envía una señal de reconocimiento al dispositivo que generó la interrupción. Este reconocimiento le permite al dispositivo suprimir la señal de interrupción.

4. El procesador necesita ahora prepararse para transferir el control a la rutina de interrupción.

5. El procesador carga ahora el contador de programa con la ubicación de entrada del programa de tratamiento de la interrupción.

6. En este punto, el contador de programa y la PSW relativa al programa interrumpido han sido salvadas en la pila del sistema.

7. La rutina de tratamiento de la interrupción puede ahora proceder a procesar la interrupción.

8. Cuando se completa el tratamiento de la interrupción, se recuperan de la pila los valores de los registros que se salvaron y se restauran los registros.

9. El acto final es restaurar los valores de la PSW y del contador de programa a partir de la pila. Como resultado, la próxima instrucción a ser ejecutada será del programa interrumpido previamente.

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.