Una interrupción es un mecanismo que
permite ejecutar un bloque de instrucciones interrumpiendo la ejecución de un
programa, y luego restablecer la ejecución del mismo sin afectarlo
directamente. De este modo un programa
puede ser interrumpido temporalmente para atender alguna necesidad urgente de
la computadora y luego continuar su ejecución de manera normal y como si nada
hubiera pasado. Las interrupciones son un método del que disponen los
dispositivos e incluso los procesos para hacer notar a la CPU la aparición de
alguna circunstancia que requiera su intervención. De este modo, los
dispositivos pueden provocar que la CPU deje por el momento la tarea que estaba
realizando y atienda la interrupción. Una vez atendida, seguirá con su labor
anterior. Cuando no existían interrupciones, era el procesador el que tenía que
estar continuamente comprobando el estado del dispositivo cuando lo necesitaba.
Cuando al procesador le llega una
interrupción, la atiende inmediatamente dejando de hacer lo que estuviera
haciendo, para poder atenderla de la forma correcta, Una vez terminado el
tratamiento de la interrupción, es muy importante que el procesador siga con lo
que estaba haciendo, es importante que antes de tratar la interrupción se guarde
de alguna forma el estado en que se encuentra la computadora, se pueden
distinguir dos tipos de interrupciones: interrupciones software e
interrupciones hardware; Las interrupciones software son provocadas por los
programas usando una función especial del lenguaje.
Las interrupciones generadas por los
dispositivos periféricos son generalmente asíncronas con respecto al programa
que se está ejecutando. Un evento es asíncrono a una entidad si el momento
cuando ocurre no está determinado por la entidad. Las interrupciones no siempre
ocurren en el mismo punto dentro de la ejecución de un programa.
Las rutinas del Sistema de Operación
llamadas manejadores de dispositivos usualmente manejan las interrupciones
generadas por el dispositivo. Los Sistemas de Operación usan interrupciones
pare implementar el tiempo compartido. Tienen un dispositivo llamado timer que
genera una interrupción después de un intervalo específico de tiempo. Una señal
o signal es la notificación por software de que un evento ocurrió. Por lo
general es la respuesta del Sistema de Operación. Por ejemplo, ctrl-C genera
una interrupción para el manejador de dispositivo que maneja el teclado.
- Las
interrupciones pueden ser producidas por Hardware o por Software
- Las
interrupciones por Hardware son producidas por un dispositivo y viajan por
el mismo bus del sistema.
Las interrupciones por Software son
producidas por medio de la ejecución de una operación especial que se conoce
como "llamada al sistema" (system call) o por errores producidos
dentro de un proceso, también conocidas como excepciones. Hay muchos tipos de
interrupciones y para cada uno de estas existe una rutina en el sistema de
operación que le da servicio.
Pasos durante
una interrupción
El CPU suspende lo que estaba
realizando. El hw transfiere el control al sistema de operación.
Deshabilita las interrupciones,
mientras se atiende una interrupción no se puede atender otra que llegue, el kernel del sistema de operación salva el
estado actual del proceso interrumpido, transfiere su ejecución a una dirección
fija, esta dirección por lo general contiene la dirección de comienzo donde la
rutina de servicio de la interrupción se encuentra, cada diseño de computadora
tiene su propio mecanismo de interrupciones.
Por lo general se maneja mediante un
vector de interrupciones, indexado por el tipo de interrupción, en este vector
se encuentra la dirección de comienzo de la rutina que da servicio a dicho
tipo, se le conoce como vector de interrupción. Otra forma de localizar la
rutina apropiada es mediante el pooling, es decir, preguntando a cada
dispositivo para ver quien requirió el servicio.
- Se
ejecuta la rutina de interrupción
- Se
restaura el estado anterior
- Se
habilitan las interrupciones
La arquitectura de interrupciones debe
también almacenar la dirección de la instrucción interrumpida.
Dentro de un
computador
Cuando una computadora se encuentra
realizando un proceso este puede interrumpirse por cualquiera de las dos causas
siguientes:
1.- Que se haya presentado una
causa que impida que siga adelante un trabajo o un programa que no haya terminado:
En este caso las interrupciones pueden
darse:
• Por
Software: quiere decir que la interrupción se hace por medio de una instrucción
del Sistema operativo que demanda la detención del proceso o por una instrucción
del programa mismo que demanda la acción de otro dispositivo.
• Por
Hardware: se refiere a interrupciones provocadas por la acción de algún
elemento físico ya sea por una falla, por requerirlo el circuito, por falta de
energía eléctrica u otra causa que
impida la continuación de un programa.
2.- Es que haya llegado el fin
lógico de un programa o de un trabajo: en este caso el sistema operativo debe
retirar el control al programa que ha terminado de introducir una nueva tarea.
Interrupción
de E/S
Con el fin de iniciar una operación de
E/S la CPU carga los registros apropiados dentro del controlador del
dispositivo, el controlador a su vez examina el contenido de estos registros
para determinar qué acción debe realizar, este caso se da en general como
resultado de una solicitud de E/S por parte de un proceso del usuario, una vez
iniciada la E/S; luego al completarse la operación el control se devuelve al
proceso del usuario, este caso se conoce como E/S sincrónica, pero existe otra
posibilidad llamada E/S asíncrona que devuelve el control al programa del
usuario sin esperar que se complete la E/S así esta puede continuar mientras se
realizan otras operaciones del sistema.
Interrupciones de programa
Las interrupciones de software son
provocadas por los programas usando una función especial del lenguaje, tienen
como objetivo el que la CPU ejecute algún tipo de función, al terminar de
ejecutarse esta función, se seguirá ejecutando el programa que provocó la
interrupción.
Este tipo de interrupciones es la forma
más importante que tendrán los programas de ejecutar funciones especiales del
DOS (Disk Operating System) o del BIOS (Basic Input Output System). Las
Interrupciones son principalmente subrutinas de la BIOS o el DOS que pueden ser
llamadas por un programa, su función es controlar el hardware, servir de
contacto entre los programas y las funciones del BIOS y del DOS.
Las interrupciones de software pueden
ser activadas directamente por el ensamblador invocando al número de
interrupción deseada con la instrucción INT.
El uso de las interrupciones nos ayuda
en la creación de programas, este tipo de interrupciones podemos separarlas en
dos categorías: las interrupciones del
sistema operativo DOS y las interrupciones del BIOS. La diferencia entre
ambas es que las interrupciones del sistema operativo son más fáciles de usar
pero también son más lentas ya que estas interrupciones hacen uso del DOS para
lograr su cometido, en cambio las interrupciones del BIOS son mucho más rápidas
pero tienen la desventaja que, como son parte del hardware son muy específicas.
La elección del tipo de interrupción a
utilizar dependerá únicamente de las características que le quiera dar a su
programa: velocidad (utilizando las del BIOS) o portabilidad (utilizando las
del DOS)
No hay comentarios:
Publicar un comentario