Está en la página 1de 8

INTERRUPCIONES CONCEPTO DE INTERRUPCIONES Una interrupcin es una operacin del hardware que indica a la CPU que detenga la ejecucin

de lo que estaba haciendo, conserva la situacin del proceso y enva a la CPU a una direccin determinada en la que tiene un programa de control de interrupcin o de servicio de interrupciones. CAUSAS DE INTERRUPCIONES * Error de mquina detectado * Error de programa * Interrupcin externa (el operador pide una determinada funcin) * Interrupcin de entrada/salida (el dispositivo de E/S pide atencin o hace una indicacin de que ha iniciado una operacin) * Llamada al supervisor por el programa

NECESIDAD DE UN SISTEMA DE INTERRUPCIONES Surge de la sincronizacin entre CPU y los dispositivos. Dado que los componentes mecnicos no cumplen con la exactitud de tiempos de ejecucin que se da en la CPU, y puede averiguar: - Si el dispositivo est preparado - Si una operacin E/S se est ejecutando - Si una operacin ha terminado Cuando se trata de perifricos resulta eficiente la modalidad de interrupcin para la atencin de estos => atiende al perifrico cuando lo solicite y puede utilizar el resto de tiempo disponible en ejecutar otro proceso (p.e. la atencin de otro perifrico) EJEMPLO: La interrupcin desde un perifrico se inicia, cuando tiene informacin para entregar, a travs del envo de una seal a la CPU para solicitar atencin conocida como IRQ (Interrupt Request) Si la interrupcin est enmascarada la CPU hace caso omiso de la solicitud. Si la interrupcin no est enmascarada el computador responde al perifrico, que recibir la informacin, por medio de una seal IACK (Interrupt Acknowledge). Luego el perifrico o manejador de interrupciones enva una direccin de memoria a la CPU. Esta direccin de memoria contiene a su vez la direccin de la rutina que efectivamente administra la recepcin de la informacin. La CPU hace una salto a la posicin de memoria indicada en la celda correspondiente a la de la interrupcin y la rutina contenida a partir de all toma el control del sistema. El "PROGRAM COUNTER" (contiene la direccin de memoria de la prxima instruccin a ejecutar) y el registro de status son empujados al stack (pila). Una vez finalizada la ejecucin de la interrupcin, devuelve el control a la CPU que puede continuar con el proceso interrumpido o iniciar otro nuevo.

1/8

TIPOS DE INTERRUPCIONES (1)Interrupcin por errores o por daos en la mquina => fallo en la alimentacin elctrica; error de paridad en memoria. (2)Interrupcin por causa del programa (o desvo) => instruccin o direccin incorrecta; operaciones imposibles; desbordamiento de capacidad; divisin por cero, etc; intentos de ejecucin de instrucciones o de escritura en memoria no permitidos por el estado de la mquina. (3)Interrupcin por entrada/salida => generada por el canal para avisar fin de una operacin E/S o de una falla ocurrida en el transcurso de E/S. (4)Interrupcin externa => utilizada para avisar a la mquina acerca de cualquier modificacin interesante del medio exterior, especialmente en control de procesos industriales. (5)Interrupcin de recuento => para contar impulsos procedentes de un reloj. Determinados procesadores presentan una sola posibilidad de interrupcin, en cuyo caso se pasarn todas las causas de interrupcin a travs de un OR lgico y el programa de interrupcin deber comenzar por comprobar un conjunto de indicadores, para detectar cual puede ser la causa de la misma. Programa de interrupcin Interrupcin OR Causas de interrupcin Subprogramas de tratamiento de causa de interrupcin Prueba de los estados

Fin programa de interrupcin Interrupcin Tratada

EJEMPLO: INTERRUPCIONES DEL SISTEMA EN IBM-PC 8086. Existen dos entradas de interrupciones NMI (no enmascarables) INTR (enmascarables) Esta clasificacin viene dada por su ejecucin. Interrupciones no enmascarables son aquellas que debern ejecutarse obligatoriamente sin tener que esperar, estn ligados a tareas en el sistema que no se pueden retrasar como son las rutinas de bajada del sistema por corte de energa, chequeo de la integridad de memoria, etc. Interrupciones enmascarables se ejecutan a solicitud del perifrico correspondiente siempre que en el registro de status (FLAGS REGISTER) del procesador las interrupciones estn habilitadas. En el caso de no estarlo la solicitud ser ignorada y la CPU continuar con lo que estaba realizando.

2/8

En nuestro ejemplo las fuentes de las interrupciones no enmascarables son 3, y pueden provenir del coprocesador matemtico INTEL 8087, falla en la paridad de memoria RAM o falla en algn canal de E/S. Aunque en la prctica se los puede enmascarar por Software => usa una compuerta AND para habilitar la solicitud. MICRO PROCESADOR 8086 OR AND 8087 Chequeo paridad memoria Chequeo canal E/S NMI INTR Mscara por software

8259A

Controlador de Interrupciones 6 5 4 3 2 1 0 Contador de Tiempo Teclado Sin uso Sin uso Puerta serial Sin uso Interfaz drive diskette Interfaz conexin impresora

Las interrupciones enmascarables son manejadas por el controlador de interrupciones 8259A. Es el encargado de priorizar las solicitudes mediante lgica propia. De esta forma ejecutar primero las de alta prioridad independientemente del orden de llegada, se llega al caso de que una interrupcin puede ser interrumpida a su vez por otro de mayor prioridad. El 8259A es programable y puede administrar hasta 8 interrupciones. Cuando esta pastilla recibe la seal "IACK" del procesador procede a entregar una direccin de 10 BITS de largo que corresponde a la posicin en la tabla de interrupciones donde se encuentra la direccin de la rutina que atender al perifrico. La direccin entregada a la CPU tiene el siguiente formato.

3/8

Programables

Interrupcin

Fijos por Hardware

A9 X

A8 A7 X X

A6 X

A5 X

L3 X

L2 X

L1 X

F1 0

F2 0

Los BITS F1 y F2 fijados por Hardware en cero con el objeto de asegurar un espacio de 4 Byte por interrupcin. Esto se necesita para especificar la direccin dentro de la IBM-PC que son 2 palabras de 16 bits; una para la direccin de segmento y la segunda para la direccin de desfase. Los Bits L3, L2, L1 asumen un valor de 0 a 7 correspondiente a la interrupcin solicitada. Los Bits A9, A8, A7, A6 y A5 son fijadas por software al inicializar el 8259A. Para la PC corresponde al valor 00001 y es ledo al momento de Bootstrap o partida del equipo. Las interrupciones provenientes del 8259 son enmascarables por software directamente, las instrucciones en el INTEL 8086/88 son las instrucciones STI y CLI, la primera habilita las interrupciones y la segunda las deshabilita. El Concepto de interrupcin en IBM es extensible al software. Tal que muchas rutinas del sistema operativo funcionan en base a interrupciones. La ventaja es que siendo la interrupcin una llamada indirecta a una rutina, es posible cambiar la extensin y ubicacin de la rutina en la memoria y esta modificacin ser transparente al usuario. Este llamar siempre a la misma interrupcin, buscando en la misma entrada de tabla de interrupciones pero el contenido de sta podr variar direccionando a distintas reas de la memoria segn sea el deseo del usuario. Interrupcin Chequeo paridad memoria RAM en tablero madre Chequeo canales E/S Interrupcin procesador 8087 IRQ0 IRQ1 IRQ2 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7 Salida contador de tiempo 8253-5, canal 0 Teclado No se usa No se usa Puerta serial RS-232 No se usa Drive diskette (Status) Puerta paralela (BIOS no la usa)

NMI

INTR

Las instrucciones por software se ejecutan utilizando la instruccin INT XX. "XX" es un nmero hexadecimal que multiplicado por 4 nos entrega la direccin de la entrada de la interrupcin
4/8

en la tabla correspondiente. El segmento de la direccin por definicin es cero. De tal manera que si la CPU se encuentra con la instruccin INT 20H esta va a la direccin 0000:0080 (20x4=804) y desde all obtiene la direccin de la rutina a ejecutar. Por otra parte la instruccin "CALL" se caracteriza porque el program counter salta en forma directa a la rutina mencionada. Es decir si encuentra la instruccin CALL xxxx (xxxx = nmero hexadecimal de 4 cifras) la prxima instruccin a ejecutar estar contenida en la direccin CS:xxxx (CS: REGISTRO DE SEGMENTO DE CDIGO) como CALL es un salto directo, no es posible ejecutar cambios en la posicin de memoria de la rutina de llamada, pues la CPU siempre intentar ejecutar desde la direccin original, razn por la cual los sistemas operativos utilizarn poco la modalidad CALL.

0000:003F

Interrupciones por Software Celdas utilizadas por BIOS Sistema Operativo Basic y algunas disponibles para el usuario IRQ7 Interrupciones IRQ6 Enmascarables IRQ0 Reservado Impresin contenido INTQ Interrupciones de INT Uso Especfico MNI Ejec.1 intrucc. Divisin por 0 Pantalla Ulizadas exclusivamente por Bios

0000:0000

5/8

0000:0080

BBBB:CCCC

20Hx4 Programa ejecutndose


CALL AAAA

INT 20H CS:AAAA


BBBB:CCCC

Cuerpo de la rutina

Cuerpo de la rutina IRET

IRET

(b) Ejecucin de Rutina por instruccin CALL. (a) Ejecucin de Rutina en Modalidad de interrupcin por software.

Efecto de la jerarquizacin de un sistema de interrupciones Jerarquizados => cada interrupcin tiene asignada una prioridad para su ejecucin. En este tipo de sistema una rutina de interrupcin puede ser interrumpido por una demanda de interrupcin clasificada con un nivel de prioridad superior. El programa interrumpido pasa a un estado de espera. Ejemplo de un sistema de interrupcin de 8 niveles. El nivel "0" es el de ms alta prioridad y el "7" de ms baja Vemos como los programas se interrumpen por uno de mayor jerarqua. Nivel IT5 0 1 2 3 4 5 6 7 IT 4 IT 1 IT 3 IT 0

6/8

Esquema de un sistema jerarquizado de interrupciones prioritarias. Cada nivel de interrupcin tiene asociados cuatro biestables que definen los diferentes estados posibles del nivel. ESTADO DESACTIVADO: El nivel no acepta ninguna demanda de interrupcin. ESTADO ACTIVADO: El nivel acepta y memoriza una demanda de interrupcin. Un nivel de interrupcin puede ser activado o desactivado por programa. ESTADO DE ESPERA: El nivel pasa al estado de espera si recibe una seal de demanda de interrupcin. ESTADO DE ESPERA INHIBIDO: el nivel ha resultado inhibido por programa, de tal manera que la interrupcin ha podido ser memorizada pero no tomada en cuenta por el ordenado => enmascarada. ESTADO DE ESPERA AUTORIZADO: La interrupcin puede ser tomada en cuenta por el ordenador, si se han satisfecho las siguientes condiciones: (1) No existe ningn nivel de prioridad superior en el estado autorizado de espera; (2) la unidad central se encuentra en una fase interrumpible (generalmente al final de instruccin). El nivel entonces pasa al estado activo. ESTADO ACTIVO: Implica que la unidad central tome en cuenta la interrupcin y se mantiene durante toda la ejecucin del programa de interrupcin. Este esquema asocia a cada seal de interrupcin dos seales: una impulsional desde el exterior (pide interrupcin) y otra de larga duracin que l deja activada hasta tanto no se haya tratado la interrupcin es decir hasta que el nivel sea capaz de aceptar una nueva demanda de interrupcin. Nivel de espera AND *Fase interrumpible *No hay niveles de prioridad superior en espera AND autorizados Programa de interrupcin AND Q Interrupcin AND Q I1 S R Desactivacin Activacin Inhibicin Autorizacin ltima instruccin I3 S R R NOT I4 Q S

Q I2 S R

Interrupciones

7/8

EFECTO DE UNA INTERRUPCIN SOBRE LAS INSTRUCCIONES Existen instrucciones interrumpibles y no interrumpibles. La ejecucin del servicio de interrupcin espera al final de las segundas. Una interrupcin E/S externa, o error de mquina no grave, no afecta la instruccin, si el error est en la propia instruccin puede ocurrir que la instruccin sea: SUPRIMIDA (no se puede realizar) ANULADA (se inicia pero se trunca) COMPLETADA TERMINADA ANORMALMENTE La gestin de errores del usuario deber considerar el resultado que ocaciona la instruccin errnea. INTERRUPCIONES DE ERROR DE PROGRAMA - EMULACIN Cuando se tiene un programa adquirido (cdigo de mquina) que tiene instrucciones que no figuran en nuestro ordenador. Sera necesario producir una rutina del supervisor que las emulase (realice la misma operacin). Son interrupciones dentro del programa.

INTERRUPCIONES PROGRAMADAS (Control del SPD) Instruccin SVC sirve para introducir interrupciones programadas. Esta permite solicitar al supervisor determinado servicio. Entonces aquellas operaciones que no puedan ser realizadas por el programa deben ser realizadas por el supervisor que toma el control gracias a una SVC del programa. SVC no es una interrupcin E/S (estas son producidas por los canales de E/S). Formato SVC n (donde n es el operando que sirve de identificador para saber a donde bifurca hacia la rutina de tratamiento que corresponda) Cuando el supervisor termina sus operaciones devuelve la ejecucin al programa a continuacin del ltimo elemento de la lista o va a una direccin especificada como argumento. SERVICIOS DEL SUPERVISOR: SVC 0 SVC 1 SVC 4 SVC 6 SVC.7 SVC.10 SVC.14 SVC.18 SVC.19 SVC.34 ejecutar un programa de canal (EXCP) carga una fase en memoria y la ejecuta (FETCH) carga una fase en memoria (LOAD) cancelar tarea (CANCEL) espera una interrupcin (WAIT) iniciar cronometrador de intervalos (SET TIME) cancelar programa (EOJ) crear rutina para interrupciones de reloj (STX IT operando IT) efectuar regreso al programa despus de una interrupcin de reloj (EXIT operando IT) obtener hora del da (GET TIME)

8/8

También podría gustarte