jueves, 17 de diciembre de 2015

Tema para agregar al final de REPA!!

Interrupciones

   Casi todos los computadores tienen un mecanismo mediante el cual otros módulos (E/S, memoria) pueden interrumpir la ejecución normal del procesador. Las interrupciones aparecen, principalmente, como una vía para mejorar la eficiencia del procesamiento debido a que la mayoría de los dispositivos externos son mucho mas lentos que el procesador.
Con las interrupciones, el procesador se puede dedicar a la ejecución de otras instrucciones mientras una operación de E/S está en proceso. Cuando el dispositivo de E/S esté disponible, es decir, cuando esté preparado para aceptar más datos del procesador, el módulo de E/S de dicho dispositivo enviará una señal de solicitud de interrupción al procesador. El procesador responde suspendiendo la operación del programa en curso y saltando a un programa que da servicio al dispositivo de E/S en particular, conocido como rutina de tratamiento de interrupciones (Interrupt handler), reanudando la ejecución
original después de haber atendido al dispositivo.
Desde el punto de vista del programa de usuario una interrupción es solamente eso:
   Una interrupción de la secuencia normal de ejecución. Cuando el tratamiento de la interrupción termina, la ejecución continúa. El programa no tiene que disponer de ningún código especial para dar cabida a las interrupciones; el procesador y el sistema operativo son los responsables de suspender el programa de usuario y de reanudarlo después en el mismo punto.
Para dar cabida a las interrupciones, se añade un ciclo de interrupción al ciclo de
instrucción. En el ciclo de interrupción el procesador comprueba si ha ocurrido alguna interrupción, lo que se indicará con la presencia de alguna señal de interrupción. Si no hay interrupciones pendientes, el procesador sigue con el ciclo de lectura y trae la próxima instrucción del programa en curso. Si hay una interrupción pendiente, el programador suspende la ejecución del programa en curso y ejecuta una rutina de tratamiento de interrupción. Esta rutina, generalmente, forma parte del sistema operativo, determina la naturaleza de la interrupción y realiza cuantas acciones sean necesarias. 

   Una interrupción desencadena una serie de sucesos tanto en el hardware del procesador como en el software.
Estos sucesos pueden secuenciarse de la siguiente forma:
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, de forma que
este suspende su señal de interrupción.
4. El procesador necesita ahora prepararse para transferir el control a la rutina de
interrupción. Para empezar, hace falta salvar la información necesaria para reanudar la ejecución del programa en curso en el punto de la interrupción. La
mínima información es la palabra de estado del programa (PSW) y la ubicación
de la próxima instrucción a ejecutar.
5. El procesador carga ahora el contador de programa con la ubicación de entrada
del programa de tratamiento de interrupción.
6. La rutina de interrupción suele comenzar salvando el contenido de los registros del procesador porque la rutina puede utilizarlos y se perdería la información que la ejecución del proceso interrumpido hubiera dejado en ellos.
7. La rutina de tratamiento de la interrupción procesa la interrupción realizando las
acciones requeridas para atenderla.
8. Tras completar el tratamiento de la interrupción, se recuperan de la pila los valores
de los registros que se salvaron y se restauran en los correspondientes registros.
9. El paso final es restaurar los valores del la PSWy del contador de programa también a partir de la pila y continuar con la ejecución del programa interrumpido. Estas acciones se llevan a cabo como resultado de ejecutar la instrucción máquina para retorno de interrupción, RETI, que incluyen la mayoría de las computadoras en su lenguaje máquina.


Fuente: Libro abierto de Pablo Ruiz Múzquiz - Sistemas Operativos 0.5.0

--
Javier A. Rodriguez

No hay comentarios:

Publicar un comentario