martes, 27 de noviembre de 2012

1.6.1 Interrupciones (FLIH).

·  El GESTOR DE INTERRUPCIONES DE PRIMER NIVEL: FLIH
(First Level Interruption Handler): `Algo' que gestione las interrupciones
·  EL CONTROLADOR DE INTERRUPCIONES DE PRIMER NIVEL: EL FLIH
En principio, una señal es una indicación por la que se altera la secuencia de ejecución. Hay varios tipos de interrupción, que se clasifican en función de su origen:
! EXTERNAS: Se producen fuera del procesador
! INTERNAS: Se producen dentro del procesador
Si precisamos más:
Las interrupciones EXTERNAS, las denominamos:
INTERRUPCIONES
Las interrupciones INTERNAS, pueden ser:
·         EXTRACÓDIGOS: Operaciones que manipulan elementos internos del
procesador
·         TRAPS o EXCEPCIONES
La misión del FLIH, está en el núcleo, para dar una respuesta a cualquier tipo de señal que se produce en el sistema.
Al producirse una señal, la atrapa el Hardware de interrupciones, que como mínimo, salva el contenido del PC en el PCB del proceso. Además, puede que también salve el resto del entorno volátil (también en el PCB). También direcciona al FLIH, es decir, pone en el PC la dirección del FLIH.
Por lo tanto, podemos decir, que el FLIH es un elemento software, es un proceso.
Ya hemos dicho que el FLIH es Software, pues se trata de un sencillo programa definido sobre un área de memoria dedicada a él, un área de memoria específica; es decir, el FLIH siempre está en la misma parte de la memoria.
El FLIH hace dos cosas:
1º) Determina el origen de la interrupción
(Averigua qué interrupción se ha producido)
2º) Direcciona la rutina que trata esa interrupción
Si el FLIH es un programa, necesita parte del entorno volátil: PC, ACC, ... Por ello, debe salvarse el entorno volátil del proceso interrumpido. El entorno volátil del proceso interrumpido, se puede salvar en dos momentos:
·  Puede salvarlo el Hardware de interrupciones
·  Si no lo salva el Hardware de interrupciones, será lo primero que haga el FLIH, antes incluso de determinar el origen de la interrupción
NOTA:
Hay sistemas que definen unos registros máquina para uso exclusivo por parte del Sistema Operativo, para evitar tener que estar salvando y restaurando el contenido del entorno volátil.
Formas de determinar el origen de una interrupción:
MEDIANTE SOFTWARE:
Mediante una cadena de saltos o IFs (o con una CASE)
El FLIH, tiene un único punto de entrada:
Ventaja: ! Es muy sencillo
Desventaja: ! Rendimiento muy pobre (Cuantas más interrupciones, peor
rendimiento)
Posible solución:
·         Poner al principio de la cadena de saltos las comprobaciones de las
interrupciones más frecuentes.
MEDIANTE HARDWARE:
Mediante el uso de un comparador simultáneo, incluido en el Hardware de interrupciones.
El origen de la interrupción, no lo va a detectar el FLIH, lo va a detectar el Hardware de interrupciones.
El FLIH, tiene N puntos de entrada, siendo N el número de interrupciones que reconoce el sistema.
Ventaja: ! Es casi simultáneo, mucho más rápido que la secuencia de IFs
Desventaja: ! Coste Elevado: Un comparador para muchas interrupciones es
muy caro
COMBINANDO SOFTWARE Y HARDWARE:
El comparador distingue los TIPOS de interrupción.
Las interrupciones se agrupan por tipos.
EL Hardware de interrupciones:
1º) Salva el contenido del entorno volátil
2º) Mediante un comparador simultáneo, determina el tipo al que pertenece la
interrupción producida
3º) Se direcciona al FLIH, donde una pequeña cadena de saltos determina la
interrupción en concreto que se ha producido
Si N es el número de tipos de interrupciones, el FLIH tiene N puntos de entrada.
Cuando el FLIH está atendiendo una interrupción, pueden producirse otras.
¿Qué hacemos con esas otras interrupciones que se producen?
·         Inhibir (ignorar) el resto de interrupciones mientras se atiende una. Pero esto no puede hacerse siempre
·         Las interrupciones más prioritarias deben tratarse nada más producirse
Posible solución:
·         Definir niveles de prioridad entre las interrupciones, de forma que si
se está atendiendo una interrupción, quedarán pendientes (o
inhibidas) las de menor o igual prioridad.
Problema:
·         Si se produce una interrupción más prioritaria que la que se está atendiendo, debe dejarse de atender la que se estaba atendiendo para atender la más prioritaria. Por lo tanto, debe guardarse el entorno volátil de la interrupción que estaba atendiendo. La interrupción que pasa a ser atendida, también puede tener que dejarse, al llegar otra de mayor prioridad ... Por tanto, es necesario un lugar a para almacenar entornos volátiles, es decir, un PCB, por cada prioridad de interrupción - 1.
Inicio del servicio de una interrupción:
Las interrupciones no pueden estar inhibidas mucho tiempo, es decir, el tiempo de tratamiento del FLIH debe ser corto.
Problema:
·         Hay interrupciones cuyo tratamiento lleva mucho tiempo. En ese caso, el FLIH, sólo inicia su tratamiento, y luego, lama a otra rutina ajena o externa a él, que realiza el resto del tratamiento.
Una interrupción puede implicar cambio(s) de estado en algún(os) proceso(s).
TIPOS DE INTERRUPCIONES:
·         Interrupciones que provocan cambios de estado del proceso en ejecución
·         Algunos extracódigos: Peticiones de E/S
·         Señales de error para suspensión
·         Interrupciones de reloj: Interrupciones por expiración del temporizador
·         Interrupciones que provocan cambios de estado en procesos que no están en ejecución
·         Interrupciones de E/S

No hay comentarios:

Publicar un comentario