Вы находитесь на странице: 1из 5

Interrupciones

Muchos dispositivos de E/S generan eventos asncronos (eventos que


ocurren en un instante de tiempo que el procesador no puede predecir o
controlar, pero a los que el procesador debe responder razonablemente
rpido para alcanzar un rendimiento aceptable). Un ejemplo de este tipo
de dispositivos es el teclado de una estacin de trabajo o PC. El
procesador no puede predecir en qu momento el usuario presionar
una tecla, pero debe reaccionar a dicha pulsacin en bastante menos de
un segundo para que el tiempo de respuesta no sea advertido por el
usuario.
El mecanismo empleado por la mayora de los procesadores para tratar
este tipo de eventos son las interrupciones. bsicamente, las
interrupciones permiten que los dispositivos puedan solicitar que el
procesador detenga momentneamente la tarea que est realizando
para ejecutar el programa para procesar la peticin del dispositivo. Las
interrupciones se deben entender, por tanto, como una llamada an
procedimiento iniciado por el dispositivo externo ms que por el propio
programa que se estaba ejecutando en el procesador.
Tambin se emplean interrupciones cuando el procesador necesita
realizar una operacin de larga duracin en algn dispositivo de E/S y
desea realizar otro tipo de trabajo mientras espera que la operacin se
complete. Por ejemplo, las unidades de disco, tpicamente, tienen un
tiempo de acceso de unos 10 ms, los cuales pueden ser millones de
ciclos del procesador. En lugar de esperar que la unidad de disco finalice
una peticin de lectura o escritura, el procesador podra ejecutar otro
programa del usuario mientras que la unidad de disco lleva a cabo la
peticin. Empleando interrupciones, el procesador puede enviar la
peticin a la unidad de disco y entonces producir un cambio de contexto
para comenzar a ejecutar el programa del usuario. Una vez que el disco
haya terminado la operacin, produce una seal de interrupcin para
informar al procesador de que la operacin se ha completado y que se
encuentran disponibles una serie de resultados.
Implementacin de las interrupciones
Para implementar las interrupciones, el procesador asigna una seal,
denominada lnea de peticin de interrupcin, para que cada dispositivo
pueda provocar una interrupcin. Tpicamente, a cada dispositivo se le
asigna una lnea de reconocimiento de interrupcin que el procesador
emplea para identificar al dispositivo del que ha comenzado a procesar
la peticin de interrupcin. El procesador tambin proporciona un
conjunto de posiciones de memoria, conocido como vector de

interrupcin, que contiene las direcciones de las rutinas, denominadas


gestores de interrupcin, que se deben ejecutar cuando sucede una
interrupcin.
La figura 1 muestra cmo se puede configurar el vector de interrupcin
para un procesador con cuatro interrupciones. El vector de interrupcin
consta de cuatro palabras de memoria, una para cada interrupcin.
Cuando el procesador comienza su funcionamiento, dichas localizaciones
de memoria contienen valores indefinidos. Los programas de software
(generalmente el sistema operativo, aunque algunas veces otros
programas) han de almacenar las direcciones de los gestores de
interrupciones para cada interrupcin en las posiciones adecuadas
dentro del vector de interrupcin antes de que los dispositivos asociados
a cada lnea de peticin de interrupcin puedan ser empleados.

Palabra 0
Direccin del
gestor para la
interrupcin 0
Figura 1.

Palabra 1
Direccin del
gestor para la
interrupcin 1

Palabra 2
Direccin del
gestor para la
interrupcin 2

Palabra 3
Direccin del
gestor para la
interrupcin 3

Para interrumpir al procesador (es decir, insertar una interrupcin), cada


dispositivo ha de enviar una seal por su lnea de interrupcin.
Normalmente, se requiere que el dispositivo contine con su solicitud e
interrupcin hasta que el procesador reconozca la interrupcin. Cuando
el procesador recibe la seal de interrupcin, enva una seal por el
canal apropiado de reconocimiento de interrupcin para informar al
dispositivo de que la interrupcin ha sido recibida. Seguidamente busca
en el vector de interrupcin la posicin apropiada para localizar la
direccin de inicio del gestor de interrupcin para el dispositivo en
concreto y realiza un cambio de contexto para comenzar la ejecucin del
gestor de interrupcin.
El cambio de contexto es necesario para asegurar que el programa que
se estaba ejecutando en el procesador cuando ocurri la interrupcin
pueda continuar normalmente su ejecucin cuando la interrupcin
finalice. Una vez que el gestor de interrupcin finaliza, tiene lugar a un
nuevo cambio de contexto y el control de la ejecucin vuelve a algn
programa de usuario (no necesariamente el que se estaba ejecutando
cuando sucedi la interrupcin). En general, las interrupciones son
visibles a los programas de usuario de manera similar a cmo es
invisible la ejecucin en fracciones de tiempo de diversos programas. La
nica forma en la que un programa puede notar que ha sucedido una

interrupcin es mediante el acceso al reloj de tiempo real del sistema y


la determinacin de que ha pasado ms tiempo que el habitual entre dos
eventos.

PRIORIDAD DE LAS INTERRUPCIONES


Debido a que las interrupciones son asncronas, puede suceder que ms
de un dispositivo solicite una interrupcin al mismo tiempo, o que se
sucedan diversas interrupciones mientras que una de ellas est siendo
gestionada. Para predecir en qu orden se deben gestionar las
interrupciones, la mayora de los procesadores asignan una prioridad a
cada interrupcin, del tipo de determinar que las interrupciones con un
numero bajo tienen prioridad sobre las que tienen un numero alto.
Cuando hay ms de una interrupcin esperando la atencin del
procesador, ste escoge aquella con la mayor prioridad. Algunos
procesadores permiten que las interrupciones con alta prioridad puedan
interrumpir los gestores de interrupcin de baja prioridad, mientras que
otros siempre dejan finalizar un gestor de interrupcin antes de permitir
que otro comience.
Al igual que otros sistemas de planificacin basados en prioridades, las
prioridades de las interrupciones presentan el problema de que un
conjunto de interrupciones de alta prioridad puede hacer que se
gestione una interrupcin de baja prioridad. En aquellos casos en que el
procesador desea otorgar prioridad a determinados dispositivos, esta
situacin puede ser aceptable. Sin embargo, en otros casos, no se puede
permitir esta situacin y algunos procesadores proporcionan polticas en
las que la prioridad de interrupcin baja cada vez que es gestionada o
permiten al software cambiar las prioridades de las interrupciones segn
convenga.

Tcnica de sondeo como alternativa a las interrupciones


Una alternativa al uso de interrupciones para los sistemas de E/S es el
sondeo (polling). En el sondeo, el procesador comprueba peridicamente
cada uno de sus dispositivos de E/S para ver si alguno de ellos tiene una
peticin pendiente que ha de ser atendida. Por ejemplo, en lugar de que
el disco duro tenga que realizar una interrupcin cuando tiene disponible
un bloque de datos para el procesador, el sistema operativo podra
comprobar cada pocos milisegundos si los datos estn disponibles. De

esta forma, se permitir al procesador responder a eventos externos


asncronos sin necesidad del hardware adicional requerido para las
interrupciones.
El empleo de sondeo en lugar de interrupciones puede proporcionar
ventajas en el rendimiento si el procesador no tiene otro trabajo que
pueda realizar mientras se llevan a cabo las operaciones de E/S. Si el
procesador no tiene nada ms que hacer, podra entrar en un bucle en el
que todo lo que haga sea repetidamente sondear (comprobar) los
dispositivos de E/S para verificar si se necesita hacer algo. En caso
afirmativo, el procesador simplemente salta a la rutina que gestiona la
solicitud. Por el contrario, la respuesta a una interrupcin requiere llevar
a cabo un cambio de contexto para guardar el estado actual del
programa, de forma que se pueda restaurar al final de la interrupcin,
incrementando el tiempo necesario para comenzar a gestionar la
interrupcin.
No obstante, el sondeo conlleva dos desventajas significativas que
hacen que la opcin de las interrupciones sea la preferida excepto
cuando el tiempo de respuesta requerido para un determinado evento es
totalmente crtico. En primer lugar, el sondeo consume recursos de
ejecucin incluso cuando no existe ninguna solicitud de E/S que
gestionar, ya que el procesador debe comprobar cada dispositivo para
determinar que no haya solicitudes de E/S pendientes. El retraso medio
para responder a un determinado evento se basa en la frecuencia de
sondeo, de forma que el procesador debe sondear frecuentemente para
asegurar unos tiempos de respuesta aceptables. Esto puede suponer
una parte significativa de los ciclos de procesamiento.
Ejemplo
Con qu frecuencia debe sondear un sistema un dispositivo de E/S si
requiere que el retraso medio entre el instante en que el dispositivo
pretende realizar una peticin y el instante en que es sondeado sea
cmo mximo 5ms? Si el sondeo de un dispositivo consume 10000 ciclos
y el procesador funciona a 500MHZ, qu fraccin de los ciclos del
procesador se emplean en el sondeo? Qu ocurrira si el sistema
pretende proporcionar un tiempo de respuesta medio de 1ms?
Solucin
Suponiendo que las solicitudes de E/S se distribuyen uniformemente en
el tiempo, el tiempo medio que un dispositivo tendr que esperar a que
el procesador lo sondee es la mitad del tiempo entre cada sondeo. Por
tanto, para proporcionar un retraso medio de 5ms, el procesador deber

sondear cada 10ms o, lo que es lo mismo, 100 veces por segundo. Si


cada sondeo tarda 10000 ciclos, entonces el procesador emplear
1000000 de ciclos sondeado cada segundo, es decir 1/500 de los ciclos
del procesador.
Para proporcionar un retraso medio de 1ms, el procesador deber
sondear cada 2ms o 500 veces por segundo. Esto consumir 5000000 de
ciclos, es decir 1/100 de los ciclos de ejecucin.
La segunda desventaja del sondeo consiste en que los sistemas que
emplean sondeo requieren que el software que se est ejecutando en el
procesador (bien sea el sistema operativo o un programa de usuario)
planifiquen el sondeo. Esto implica que, o bien el programador de la
aplicacin conozca la frecuencia con que el sistema va a sondear y
escribir programas que sondeen a dicha frecuencia, o bien que el
sistema operativo interrumpa la ejecucin de programas de usuario para
sondear los dispositivos de E/S. esta segunda opcin simplifica la tarea
de escribir aplicaciones para el sistema, pero suscita la cuestin de
cmo va a saber el sistema operativo en qu momento se debe
planificar un nuevo sondeo. A menos que el programa de usuario sepa
cmo hacer que el procesador vuelva sobre el sistema operativo con
tanta frecuencia, ser muy complicado que el sistema operativo conozca
cundo debera sondear o incluso realizar cambios de contexto en un
sistema sin interrupciones.
Ambas desventajas, sobrecarga y complejidad de programacin, hacen
que las interrupciones sean una opcin ms deseable que el sondeo
para gestionar eventos asncronos en la mayora de sistemas. De hecho,
la mayora de los sistemas implementan la multiprogramacin mediante
el uso de una interrupcin por temporizador que peridicamente solicita
al sistema operativo que realice un cambio de contexto para permitir
que un programa diferente utilice el procesador. En general, el sondeo
tan slo se usa cuando existe un solo programa ejecutndose en el
sistema o bien cuando resulta totalmente crtico que el sistema
responda a la finalizacin de una solicitud de E/S lo ms rpido posible.

Вам также может понравиться