2. CURSO: PRACTICA
INTEGRAL III
ALUMNO: RARÁZ TINOCO,
JORGE LUIS
PROFESOR: DAVILA, JUAN
3. Interrupciones del Microprocesador
o De donde surgen
Funcionamiento del mecanismo de interrupciones
o IRQ
o Interrupciones en un PC
Tipos de Interrupciones
o Interrupciones Hardware
o Trampas - Traps
o Interrupciones Software o excepciones
Determinación de la dirección de la rutina de servicio de interrupció
o Direcciones Fijas
o Direcciones Variables
Direccionamiento absoluto
Direccionamiento relativo
Direccionamiento indirecto
Sistema de Prioridad
o Interrupciones Anidadas
o Interrupciones Simultaneas
o Inhibición de Interrupciones
4. Interrupción (también conocida como corrupción del
hardware o petición de interrupción) es una señal
recibida por el procesador de un ordenador, indicando
que debe "interrumpir" el curso de ejecución actual y
pasar a ejecutar código específico para tratar esta
situación.
Una interrupción supone la ejecución temporaria de un
programa, para pasar a ejecutar una "subrutina de
servicio de interrupción", que pertenece al BIOS (Basic
Volver al Menú
Input Output System)
5. ¿ De donde surgen las
interrupciones?
Las interrupciones urgen de las necesidades que tienen los
dispositivos periféricos de enviar información al
procesador principal de un sistema de computación.
La primera técnica que se empleó fue que el propio
procesador se encargara de sondear (polling) el dispositivo
cada cierto tiempo para averiguar si tenía pendiente alguna
comunicación para él. Aunque esta técnica fue ineficiente
ya que el procesador requería de un estimado de tiempo o
a veces mayor.
El mecanismo de interrupciones fue la solución que
permitió al procesador desentenderse de esta
problemática. En este caso, el microprocesador, no sondea
a ningún dispositivo, sino que queda a la espera de que
estos le avisen (le "interrumpan") cuando tengan algo que
Volver al Menú
6. Cada dispositivo que desea comunicarse con el procesador
por interrupciones debe tener asignada una línea única
capaz de avisar a éste de que le requiere para una operación.
Esta línea es la llamada IRQ ("Interrupt ReQuest", petición
de interrupción).
Las IRQ son líneas que llegan al controlador de interrupciones,
un componente hardware dedicado a la gestión de las
interrupciones, y que puede estar integrado en el procesador
principal o ser un circuito separado conectado al procesador
principal. El controlador de interrupciones debe ser capaz
de habilitar o inhibir líneas de interrupción y establecer
Siguiente
7. Cuando varias líneas de petición de interrupción se
activan a la vez, el controlador de interrupciones
utilizará estas prioridades para escoger la interrupción
sobre la que informará al procesador principal. Sin
embargo hay interrupciones que no se pueden
enmascarar o deshabilitar, las conocidas como
interrupciones no enmascarables o NMI.
Un procesador principal suele tener una única línea de
interrupción llamada habitualmente INT . Esta línea es
activada por el controlador de interrupciones cuando
tiene una interrupción que servir. Al activarse esta línea,
el procesador consulta los registros del controlador de
interrupciones para averiguar qué IRQ es la que ha de
atender. A partir del número de IRQ busca en el vector
de interrupciones qué rutina debe llamar para atender al Menú
Volver
8. Pasos para el procesamiento de una IRQ :
1) Terminar la ejecución de la instrucción máquina en
curso.
2) Salva el valor de contador de programa, IP, en la pila,
de manera que en la CPU, al terminar el proceso, pueda
seguir ejecutando el programa a partir de la última
instrucción.
3) La CPU salta a la dirección donde está almacenada la
rutina de servicio de interrupción (ISR, Interrupt Service
Routine) y ejecuta esa rutina que tiene como objetivo
atender al dispositivo que generó la interrupción.
4) Una vez que la rutina de la interrupción termina, el
procesador restaura el estado que había guardado Volver al Menú
en la
9. Interrupciones en una PC
Un ordenador PC típico dispone en su placa base de un
controlador de interrupciones 8259 de Intel o de un
circuito integrado análogo. Este dispositivo electrónico
dispone de hasta 16 líneas IRQ, numeradas desde el 00
hasta el 15. En las nuevas placas base este circuito está
integrado junto con el resto del chipset y permite hasta
24 interrupciones.
Volver al Menú
10. 1.- Interrupciones Hardware :
Son interrupciones que se producen como resultado
de, normalmente, una operación de E/S. No son producidas
por ninguna instrucción sino que son señales que producen
los dispositivos para indicarle al procesador que necesitan ser
'atendidos'. Las interrupciones hardware son interesantes en
cuanto a que permiten mejorar la productividad del
procesador ya que este último puede ordenar una operación
de E/S y en lugar de tener que esperar a que el dispositivo
acabe realizando una espera activa, es decir, sin hacer ningún
trabajo útil, se puede dedicar a atender a otro proceso o
aplicación y cuando el dispositivo este de nuevo disponible
será el encargado de notificarle al procesador mediante la al Menú
Volver
11. 2.- Trampas – Traps :
Es un tipo de interrupción sincrónica típicamente
causada por una condición de error, por ej. una
división por 0 o un acceso inválido a memoria en un
proceso de usuario. Normalmente genera un cambio
de contexto a modo supervisor para que el sistema
operativo atienda el error. De manera que podemos
ver como las excepciones son un mecanismo de
protección que permite garantizar la integridad de los
datos tanto en el espacio de usuario como en el
espacio kernel. El SO cuando detecta una excepción
intenta solucionarla pero en caso de no poder
simplemente notificará la condición de error a la
aplicación y abortará la misma. Volver al Menú
12. 3.- Interrupciones software o
excepciones :
A menudo se tiende a confundir las interrupciones
software y las trampas, ya que su naturaleza es bastante
similar. Sin embargo las excepciones se producen al
realizar una operación no permitida por lo que de algún
modo podemos decir que no es controlada directamente
por el programador sino que, por un fallo al programar,
se producen. No obstante las trampas sí que son
provocadas por el programador. Para provocar una
trampa existen distintas instrucciones en el código
máquina que permiten al programador producir una
interrupción al ejecutar dicha instrucción. Suelen tener
nemotécnicos tales como INT. Suelen ser de vitalVolver al Menú
13. En este apartado vamos a considerar las
distintas alternativas que se nos presentan a la
hora de decidir cómo determinar la dirección
de comienzo de la rutina de servicio de
interrupción que debe ejecutarse al recibir una
interrupción determinada. En principio
podemos definir dos alternativas:
1.- Direcciones fijas
2.- Direcciones variables Volver al Menú
14. 1.- Direcciones Fijas:
Se hallan cableadas en el procesador y por tanto nunca
pueden ser cambiadas. Esto implica que las RSI siempre
estarán en una determinada posición de la memoria.
2.- Direcciones Variables (por interrupciones
vectorizadas) :
En este apartado hay que matizar una cosa. Entre
paréntesis podemos observar que pone "direcciones
por interrupciones vectorizadas" pues bien, en este
punto hay una confusión muy común y es nosotros a
menudo concebimos las direcciones por interrupciones
vectorizadas como un caso concreto de direcciones
variables que es aquella en la que existe una tabla con
los vectores de interrupción .
Entre las alternativas que se implementan de manera Siguiente
15. Direccionamiento absoluto: En este caso es el
dispositivo o la interfaz del dispositivo la encargada de
conocer la dirección de la RSI y de enviarla al
procesador para que este pueda localizar dicha
subrutina y ejecutarla.
Direccionamiento relativo: El dispositivo solo
suministra parte de la dirección de comienzo y es el
procesador el encargado de completarla (añadiendo
bits o sumando una determinada cantidad, que
siempre será fija). Esta alternativa tiene una ventaja
sobre la anterior y es que permite especificar la
dirección de comienzo con menos bits y por tanto
simplifica el diseño. Ahora bien tiene una desventaja
principal y es que limita el número de dispositivos queSiguiente
16. Direccionamiento indirecto: También
conocida como direccionamiento por interrupciones
vectorizadas. Se mantiene una tabla de vectores de
interrupción (direcciones de comienzo de las
distintas RSI) y a cada interrupción se le asocia un
número que será el índice por el cual se accederá a la
tabla y se recuperará la información de la dirección
de comienzo. Necesita señales de conformidad o
'handshaking' para sincronizar al procesador con la
interfaz, ya que esta última tiene que indicarle al
procesador cuando va a enviarle el índice que
necesita para buscar el vector de interrupción (INT)
y el procesador deberá enviar otra señal para indicar
que se ha reconocido la interrupción (INTA#).Volver al Menú
17. Existe las siguiente alternativas:
1.- Interrupciones anidadas :
Existen dos métodos para tratar las interrupciones anidadas.
El primero se basa en inhabilitar las interrupciones mientras
se está ejecutando una determinada RSI. Esto puede
realizarlo el hardware de manera automática en algunos
procesadores pero en otros será el usuario el encargado de
deshabilitarlas en caso de que desee que ninguna otra
interrupción pueda interrumpir el transcurso normal de la
rutina de servicio de interrupción. No es aconsejable
deshabilitar las interrupciones durante mucho tiempo ya que
esto degrada el rendimiento total del sistema. La otra
alternativa es permitir que solo las interrupciones más Siguiente
18. la RSI actual. Para esto tendremos que definir qué
líneas son más prioritarias que otras. Otra
consideración de esta segunda alternativa es que al
anidar distintas llamadas a rutinas tendremos que
contar con una pila suficientemente grande para
que esta no se desborde.
2.- Interrupciones simultáneas:
En este método tenemos dos alternativas, una de
ellas es que exista algún hardware que tenga como
entradas las señales de interrupción y de como
salida la interrupción más prioritaria que está activa
en ese momento. Otra alternativa es tener un
método de identificación de prioridades distribuida
y no generalizada como en el caso anterior, en este
caso tenemos que destacar dos técnicas distintas Siguiente
19. "Polling": Como ya vimos es la CPU la que chequea los
Siguiente
dispositivos y el orden de sondeo determina la prioridad.
"Daisy-chain": "Daisy-chain" significa "cadena de
flores" y viene a significar que podemos conectar los
distintos dispositivos en cadena, en orden decreciente de
prioridad y por tanto la señal de reconocimiento de
interrupción (INTA#) solo será pasada al siguiente
dispositivo en caso de que el anterior (más prioritario) no
haya solicitado los servicios del procesador. Sin embargo
hay algo importante que explicar y es que las señales de
interrupción que van al procesador están conectadas todas
a un mismo cable, por tanto, deberemos utilizar alguna
técnica especial para que no se produzca un cortocircuito.
Para evitar precisamente que la pista se cortocircuite se
20. por cada dispositivo) y por tanto estarán tantos
colectores conectados como dispositivos tengamos (se
entiende que son dispositivos que mandan petición de
interrupción al procesador).
Híbrida: Mezcla las dos técnicas explicadas
anteriormente.
3.- Inhibiciòn de interrupciones
En este apartado queremos destacar las distintas
alternativas de inhibición de interrupciones. Como ya
hemos visto estas se pueden hacer de manera
automática por el hardware en algunos casos mientras
que en otros será el usuario el encargado de realizarlo
por software y esto depende de la arquitectura del Volver al Menú
procesador que consideremos