Guía de Interrupciones

Transcripción

Guía de Interrupciones
T E M A
Interrupciones
7
7-1
Interrupciones
INDICE
7.- Introducción al Tema _________________________________________________________ 7-2
7.1 Interrupciones ______________________________________________________________ 7-2
7.1.1 Tipos de Interrupciones ______________________________________________________________7-2
a).- Interrupciones de Programa __________________________________________________________7-2
b).- Interrupciones de Llamada al Supervisor________________________________________________7-3
c).- Interrupciones de Falla de Máquina ____________________________________________________7-3
d).- Interrupciones de Entrada/Salida ______________________________________________________7-3
e).- Interrupciones Externas _____________________________________________________________7-4
7.1.2 Clasificación de las Interrupciones _____________________________________________________7-4
a).- Interrupciones Síncronas ____________________________________________________________7-4
b).- Interrupciones Asíncronas ___________________________________________________________7-5
7.1.3 Enmascaramiento y Prioridades de las interrupciones ______________________________________7-5
a).- Enmascaramiento de las interrupciones _________________________________________________7-5
b).- Prioridades de las Interrupciones ______________________________________________________7-6
7.1.4 Mecanismos para el Tratamiento de Interrupciones ________________________________________7-7
Cronograma de Actividades
Puntos
Interrupciones
Interrupciones en MIPS
Entrada/Salida
Clase
1
1
1
Organización y Estructura del Computador II – ER/JL
7-2
Interrupciones
7.- Introducción al Tema
7.1 Interrupciones
El CPU de un computador basado en el modelo de Von Neuman, esta diseñado para
ejecutar instrucciones secuencialmente a menos que se ejecute una instrucción que altera
el orden de ejecución secuencial y modifica el contenido del PC (bifurcación, llamada a
una subrutina, retorno desde una subrutina).
Cual seria la manera de indicar al CPU que ocurrió alguno de estos eventos:
Se decodifica un código de operación que no existe en el repertorio de instrucciones.
Terminó de Imprimir una impresora
Ocurre una falla en el hardware, que es detectada por los circuitos correspondientes.
Se necesita llamar al SO para que ejecute, que no están al alcance del programa,
ejemplo: escribir en disco.
Interrumpiendo al CPU para que atienda alguno de esos eventos.
Una interrupción se puede definir como un evento asíncrono al programa que se está
ejecutando, o excepcional de dicho programa. Para este evento deben proveerse
mecanismos especiales que permiten su tratamiento.
7.1.1 Tipos de Interrupciones
a).- Interrupciones de Programa
Las interrupciones de programa son aquellas que se producen cuando el CPU detecta
una condición extraordinaria durante la ejecución de una instrucción e programa.
9
Ejemplos:
9
Desbordamiento de la Pila
9
Desbordamiento (Overflow)
9
Direccionamiento inválido
9
Instrucción inválida
9
Violación de protección
Organización y Estructura del Computador II – ER/JL
7-3
Interrupciones
La mayoría de las interrupciones de programa, por la naturaleza de las mismas obliga a
la cancelación del programa que las produjo, lo que se denomina finalización anormal de un
programa; mientras en algunos casos es posible recuperar la condición presentada y
continuar la ejecución del programa una vez que se termine la interrupción.
b).- Interrupciones de Llamada al Supervisor
Las interrupciones de llamada al supervisor (SVC: Supervisor Call) es una forma de
permitir la comunicación entre los programas y el sistema operativo, para que este ciertas
acciones que por su naturaleza están reservadas, debido a que implican el manejo de
recursos y operaciones cuyo acceso no está permitido a los programas de usuario.
9
Ejemplos:
9
Inicio de las operaciones de Entrada/Salida.
9
Asignación de memoria y otros recursos.
9
Lectura o escritura en disco.
9
Mostrar por pantalla.
La mayoría de las interrupciones de SVC, implica que una o más instrucciones especiales
serán ejecutadas por el SO. Generalmente, se puede continuar ejecutando el programa
que produjo
c).- Interrupciones de Falla de Máquina
Este tipo de interrupción ocurre cuando, los circuitos especiales (incorporados en la
mayoría de computadores actuales) detectan condiciones de error de los componentes de
hardware.
9
Ejemplos:
9
Transmisión de información entre dispositivos (checksun)
9
Sector de Disco
9
CD esta malo
9
Fuente de Poder Mala
d).- Interrupciones de Entrada/Salida
Los dispositivos periféricos pueden operar en forma independiente del procesador central
que controlan las operaciones de los mismos. Esto permite que en un dispositivo particular
controle la operación que esta realizando por completo. Al concluir esta operación, en forma
Organización y Estructura del Computador II – ER/JL
7-4
Interrupciones
satisfactoria o no, es necesario notificar al sistema operativo, para que éste pueda tomar las
acciones correspondientes e iniciar, siempre que sea posible, nuevas operaciones en dicho
dispositivo. Esta notificación se realiza a través de una interrupción. A este tipo de
interrupción se le denomina Interrupción de Entrada/Salida
9
Ejemplos:
9
Una impresora terminó de Imprimir.
9
Un disco terminó de traer el bloque de memoria que se le había solicitado.
En todos los casos cuando se introduce una interrupción de E/S, debe suspenderse la
ejecución del programa que estaba en el CPU, para atender la interrupción producida, y
posteriormente reiniciar la ejecución del programa que fue interrumpido.
e).- Interrupciones Externas
Son interrupciones provocadas por condiciones externas al programa que se esta
ejecutando, y que no son provocadas por culminación de operaciones en dispositivos de
E/S.
9
Ejemplos:
9
Interrupción de Reloj.
9
Comunicación entre el operador y el sistema
9
Cuantos trabajos están ejecutándose en el CPU
7.1.2 Clasificación de las Interrupciones
Las interrupciones se pueden clasificar en: interrupciones Asíncronas e interrupciones
Síncronas, en las cuales se pueden agrupar los tipos de interrupciones que se estudiaron
anteriormente.
a).- Interrupciones Síncronas
Las interrupciones síncronas son aquellas provocadas por la ejecución de una instrucción
de programa en el CPU, siendo éstas de una naturaleza tal, que necesitan de atención
especial; debido a los requerimientos necesarios para su tratamiento y los resultados que se
producen durante el mismo.
Como estas son interrupciones internas al programa que se está ejecutando, los únicos
tipos de interrupciones que pueden ser provocadas por esta causa son:
Organización y Estructura del Computador II – ER/JL
7-5
Interrupciones
à
Interrupciones de programa.
à
Interrupciones de llamada al supervisor.
b).- Interrupciones Asíncronas
Las interrupciones asíncronas son provocadas por eventos externos al programa que se
ejecuta, y su objetivo es notificar al sistema operativo de algún cambio en el ambiente de
operativdad del sistema, permitiéndose la interacción del operador de la máquina para que
pueda tomar decisiones e informar acciones que no pueden ser tomadas automáticamente
por el sistema operativo.
Dentro de las interrupciones asíncronas se pueden distinguir tres grupos diferentes:
à
Interrupciones por falla de máquina.
à
Interrupciones de Entrada/Salida.
à
Interrupciones Externas.
7.1.3 Enmascaramiento y Prioridades de las interrupciones
a).- Enmascaramiento de las interrupciones
No siempre es posible la atención inmediata de una interrupción, siendo necesario en
algunos casos posponer la atención de la misma o inhibir el tratamiento correspondiente.
En los sistemas operativos se presentan situaciones en las cuales es necesario posponer
la atención de una interrupción, o bien no llevarla a cabo. Por ejemplo, si ha ocurrido una
interrupción por finalización de una operación en un dispositivo de entrada/salida, y luego se
produce una nueva interrupción desde otro dispositivo sin que haya terminado de atender la
primera interrupción, es conveniente terminar la atención de la primera y posponer mientras
tanto las acciones necesarias para atender la segunda interrupción. En otros casos, algunas
interrupciones de falla de máquina no pueden ser pospuestas cuando ocurren.
El enmascaramiento de interrupciones se hace a través de los componentes de
hardware, éstos pueden tomar un estado en el cual, cuando ocurra una interrupción de
cierto tipo, se mantiene dicha condición como una señal, pero el mecanismo de interrupción
no las tomará en cuenta hasta que no llegue el momento apropiado. En el caso de
enmascaramiento total de interrupciones, es decir, que no se atienden cuando ocurren, el
Organización y Estructura del Computador II – ER/JL
7-6
Interrupciones
enmascaramiento puede ser temporal ya que el sistema operativo deshabilita la atención de
las interrupciones y las habilita posteriormente.
b).- Prioridades de las Interrupciones
En las secciones anteriores se estudiaron los diferentes tipos de interrupciones, y se
explicó que la ocurrencia de éstas pueden ser síncronas (generadas por otro programa) y
asíncronas (generadas por un agente externo). Es posible que durante el tratamiento de una
interrupción ocurra una segunda interrupción, para lo cual podemos usar un mecanismo de
enmascaramiento que retarde la atención de la segunda interrupción. Sin embargo, hay dos
casos que convienen estudiar:
à
La ocurrencia simultánea de varias interrupciones: En este caso es necesario
establecer un mecanismo, que permita atender todas las interrupciones presentes en
un determinado orden. Este orden de atención no puede ser dado por el tiempo, ya
que todas ocurrieron en el mismo momento.
à
Dos interrupciones consecutivas: Ocurre la segunda interrupción, sin que se halla
terminado de atender la primera, pero la segunda interrupción no se puede
enmascarar, es decir, debe ser atendida de inmediato. Entonces se deberá suspender
temporalmente las acciones que se llevan a cabo para el tratamiento de la primera
interrupción, y proceder a tratar la segunda interrupción. Esta situación es posible,
cuando la condición por la cual se presentó la segunda interrupción, puede tener
efectos generales sobre el sistema completo e inclusive sobre la interrupción que se
atiende.
Las dos situaciones presentadas anteriormente, implican que deben asignarse
prioridades a los diferentes tipos de interrupciones, esta asignación irá en función de la
importancia que representan las mismas. Además debe disponerse de un mecanismo de
hardware que garantice el tratamiento de las interrupciones de mayor prioridad frente
delante de aquellas de menor prioridad. Esto es posible de realizar, si se utiliza el
mecanismo de enmascaramiento, de manera que cuando se esté tratando una interrupción
de cierto nivel de prioridad, sean enmascaradas todas las interrupciones con prioridad igual
o menor
Organización y Estructura del Computador II – ER/JL
7-7
Interrupciones
7.1.4 Mecanismos para el Tratamiento de Interrupciones
El núcleo del sistema operativo debe proveer las rutinas especiales para el manejo de
interrupciones, estas rutinas deben ser capaces de reconocer el tipo específico de
interrupción que ha ocurrido, para hacer el tratamiento correspondiente.
A continuación se listan el conjunto de pasos para resolver una interrupción:
1. Al momento de producirse una interrupción, debe quedar almacenada en un registro
especial, la identificación del tipo de interrupción que se ha presentado.
2. Se debe salvar el estado que tenía el CPU cuando se produjo la interrupción, es
decir salvar el contador de programa y los registros e indicadores en un área
reservada de memoria.
3. Se hace una transferencia incondicional al punto de entrada de la rutina manejadora
de interrupciones.
Los pasos 1 al 3 son ejecutados automáticamente por el mecanismo de hardware
encargado de manejar las interrupciones. La dirección de comienzo de la rutina manejadora
de interrupciones debe ser fija en memoria.
4. Una vez en la rutina manejadora de interrupciones, se determinará el origen de la
interrupción, utilizando la información almacenada en el registro especial mencionado
en el paso 1. Identificada la condición de interrupción presente, se procederán a
tomar las acciones correspondientes (en general, se hará una transferencia a la
rutina de servicio de interrupción que corresponde al tipo de interrupción presentado).
5. Se mantienen enmascaradas las interrupciones con prioridad igual o menor que
aquella que se está procesando.
6. Al finalizar de ejecutarse la rutina manejadora de interrupciones, eventualmente
continuará ejecutándose el programa que estaba corriendo cuando se produjo la
interrupción, restableciendo los valores del contador de programa, registros e
indicadores, desde el área de memoria donde habían sido salvados cuando se
presentó la interrupción. Si hubiese interrupciones pendientes por atender, estas
deberán ser tratadas, antes de dar control nuevamente al programa que inicialmente
fue interrumpido.
Organización y Estructura del Computador II – ER/JL

Documentos relacionados