Sie sind auf Seite 1von 42

Interrupciones

IRQ
Es una situación especial, donde el procesador recibe una señal
(llamada) indicándole que debe interrumpir lo que se encuentra
realizando para ejecutar una rutina de servicio diferente, y
posteriormente regresar a su estado inicial o ejecutar la siguiente
llamada.
Todo esto con el fin de comunicar los diferentes periféricos de E/S
Tipos de interrupciones
Dentro de las interrupciones mas importantes encontramos dos
• Las interrupciones por Hardware
• Las interrupciones por Software
Interrupciones por Hardware
Las interrupciones por Hardware viene de los periféricos de E/S, tiene
la particularidad de que son externas al sistema y su ejecución es
asíncrona, lo cual las hace impredecibles.
Estas Interrupciones son pulsos electrónicos que llegan al CPU, por
todas estas características es que se dividen en dos
• Enmascarables
• No enmascarables
No enmascarables (NMI)
Las interrupciones de hardware No enmascarables, siempre tienen que
ser atendidas provocando que el CPU deje lo que esta haciendo.
Generalmente su uso es en situaciones de pánico por ejemplo
La memoria RAM tiene un bit de paridad, cada ves que se escribe un
dato en la memoria se genera un bit de parida; cada vez que leo se
genera un bit de paridad, estos bits se comparan y si son diferentes no
hay problema pero si son iguales se genera un error de paridad.
generando una interrupción no enmascarable
No importa lo que este pasando, el CPU se suspende y en pantalla
aparece un error diciendo de paridad en memoria
Enmascarables
La característica principal de este tipo de interrupciones es que por
medio de un circuito llamado controlador programable de
interrupciones o PIC (Programmable Interrupt Controller) decide cuales
interrupciones atender y cuales no atender.
Para que este proceso se de correctamente se necesitan dos datos
importantes
El primero conocer el numero de IRQ (interrupt Request) el cual define
que tipo de dispositivo esta solicitando la interrupción
El según es determinar si puede o no puede ser atentado lo cual se
hace por medio de Flags (IF)
IQR
Nombre XT: Descripción AT: Descripción

NMI Paridad* Paridad*


IRQ0 Temporizador* Temporizador*
IRQ1 Teclado* Teclado*
IRQ2 Reservado Interrupciones 8 a 15 (PIC#2)
IRQ3 Puertos serie COM2/COM4 Puerto serie COM2/COM4
IRQ4 Puertos serie COM1/COM3 Puertos serie COM1/COM3
IRQ5 Disco duro Puerto Paralelo LPT2
IRQ6 Disquete Disquete
IRQ7 Puerto Paralelo LPT1 Puerto Paralelo LPT1
IRQ8 No existe Reloj de tiempo real*
IRQ9 No existe Redirigido a IRQ2*
IRQ10 No existe no asignado
IRQ11 No existe no asignado
IRQ12 No existe Ratón PS2
IRQ13 No existe Coprocesador 80287*
IRQ14 No existe Contr. disco IDE primario
IRQ15 No existe Contr. disco IDE secundario
IRQ16 Existe Contr. disco SATA primario
La prioridad de los dispositivos
también la determina el IQR, siendo
el “IQR0” el de mayor prioridad y
consecutivamente va bajando su
grado de prioridad.
Es importante recordar que este IQR es una señal de control que viaja por los bus de
control del microprocesador.
Por lo cual necesita una aprobación para pasar por estos, esta aprobación se le da por IF
(interrupt flag) siendo IF 1 el indicador de activación y IF 0 el indicador de que esta inactivo
y no puede seguir.
Interrupciones por Software
Son aquellas generadas por un programa mientras este está
ejecutándose, en otras palabras son interrupciones producidas por la
ejecución intensional de una instrucción.
Es por esto que se dice que este tipo de interrupciones son Sincrónicas
y predecibles.
Para su funcionamiento al igual que las de hardware requieren de una
instrucción que en este es INT##(donde ## es un numero identificador
de la interrupción)
INT ##
INT 00: División por cero INT 12: Tamaño de memoria (BIOS)
INT 01: Ejecución paso a paso INT 13: Servicios de disco (BIOS)
INT 02: No Enmascarable (NMI) INT 14: Comunicaciones en serie (BIOS)
INT 03: Puntos de ruptura INT 15: Servicios del sistema (BIOS)
INT 04: Desbordamiento (INTO) INT 16: Servicios de teclado (BIOS)
INT 05: Volcar pantalla por impresora (BIOS) INT 17: Servicios de impresora (BIOS)
INT 06: Código de operación incorrecto INT 18: IBM Basic (ROM del BASIC)
INT 07: Reservada INT 19: Arranque del sistema (BIOS)
INT 08: IRQ 0: Contador de hora del sistema (BIOS) INT 1A: Fecha/hora del sistema
INT 09: IRQ 1: Interrupción de teclado (BIOS) INT 1B: Acción de CTRL-BREAK (BIOS)
INT 0A: IRQ 2: canal E/S, segundo 8259 del AT INT 1C: Proceso periódico del usuario (Usuario)
INT 0B: IRQ 3: COM2 INT 1D: Parámetros de vídeo (BIOS)
INT 0C: IRQ 4: COM1 INT 1E: Parámetros del disquete (BIOS)
INT 0D: IRQ 5: disco duro XT, LPT2 en AT, retraso vertical PCjr INT 1F: Tabla de caracteres gráficos (BIOS)
INT 0E: IRQ 6: Controlador del disquete INT 20: Fin de programa (DOS)
INT 0F: IRQ 7: LPT1 INT 21: Servicio del sistema operativo (DOS)
INT 10: Servicios de vídeo (BIOS) INT 22: Dirección de terminación (DOS)
INT 11: Listado del equipo (BIOS) INT 23: DOS CTRL-BREAK (DOS)
Excepciones

Cuando la CPU intenta ejecutar una instrucción


incorrectamente construida, la unidad de control lanza una
excepción para permitir al SO ejecutar el tratamiento
adecuado. Al contrario que en una interrupción, la instrucción
en curso es abortada. Las excepciones al igual que las
interrupciones deben estar identificadas. Este tipo de
interrupción se catalogan dentro de las interrupciones de
software.
Clases de excepciones

Las instrucciones de un programa pueden estar mal construidas por


diversas razones:
• El código de operación puede ser incorrecto.
• Se intenta realizar alguna operación no definida, como dividir por cero.
• La instrucción puede no estar permitida en el modo de ejecución actual.
• La dirección de algún operando puede ser incorrecta o se intenta violar
alguno de sus permisos de uso.
Importancia de las excepciones

El mecanismo de tratamiento de las excepciones es esencial para


impedir, junto a los modos de ejecución de la CPU y los mecanismos de
protección de la memoria, que las aplicaciones realicen operaciones
que no les están permitidas, por lo cual son las interrupciones de grado
mas importante. En cualquier caso, el tratamiento específico de una
excepción lo realiza el SO.
Controlador programable de
interrupciones o PIC
 (Programmable Interrupt Controller)

Antes hablamos del PIC y se mencionaba que era necesario para


determinar cuales interrupciones pueden pasar y cuales no. Para todo
esto el PIC tiene una serie de rutinas de servicio los cuales dan a todo
este proceso una rutina de servicio lógica.
• Interrupt Request Register (IRR) : El IRR especifica qué
interrupciones están pendientes de reconocimiento, y es
típicamente un registro interno que no puede ser accesado
directamente
• In-Service Register (ISR) : El registro ISR especifica qué
interrupciones han sido reconocidas, pero todavía están
esperando por un final de interrupción (EOI).
• Interrupt Mask Register (IMR). El IMR especifica qué
interrupciones deben ser ignoradas y no ser reconocidas.
Un esquema simple de registros como este, permite hasta dos
distintas peticiones de interrupción estén pendientes a un tiempo,
una esperando por reconocimiento, y una esperando por EOI.
Todo los datos del PIC o Rutinas de servicio, se
deben cargar a la memoria.

Este proceso se da en el encendido del


computador las de la BIOS y una vez termina de
cargar el DOS ya están disponibles las rutinas del
Sistema Operativo
TABLA DE VECTORES
Una vez están cargadas todas estas rutinas en la memoria RAM están
listas para su uso, estas se ubican en los primeras 1024 bytes de la RAM
Pero para poder usarlas adecuadamente se necesita un tabla que diga
su ubicación y su relación con el numero IQR o INT, esta es la tabla de
vectores
Para esta se apartan los primeros 1024 bytes de RAM.
A fin de conocer su ubicación en la RAM, el procesador multiplicada IRQ o
INT por 4 para determinar así la dirección de inicio de la rutina de servicio
Mostrando así la ubicación en RAM donde se halla la información
necesaria.

Cada vector de interrupción consta de dos palabras


“Segmento” + “desplazamiento de inicio” (segmento = 0000h)

Si 1024 se divide en 4 da 256, es por esto mismo que solo existen


máximo 256 interrupciones.
Por ejemplo la interrupción 10h
10h x 4 = 40h

Su ubicación seria 0:40h a la 0:43h


Segmento = 0, porque son los primeros
1024bytes de la memoria RAM
Desplazamiento = 40h, su
desplazamiento desde inicio
Registros
Registro de Segmento: Un registro de segmento tiene 16 bits de
longitud y facilita un área de memoria para el direccionamiento
conocida como el segmento actual
Algunos son:
CS , DS, SS, ES, FS y GS

Registro de apuntador de instrucciones: Este registro esta compuesto


por 16 bits y contiene el desplazamiento de la siguiente instrucción que
se va a ejecutar
Registro de apuntadores: Permiten al sistema accesar datos al
segmento de la pila, son:
SP y BP

Registro de propósito General: Son los caballos de batalla del sistema y


pueden ser direccionados como una palabra o como una parte de un
bytes, son:
AX: Acumulador CX: Contador
BX: Base DX: Datos
Registro de índices: sirve para el direccionamiento de indexado para las
operaciones de suma y restas, algunos son:
SI y DI

Registro de Banderas: Sirven para indicar el estado actual de la maquina


y el resultado del procesamiento, estos son:
OF: Over Flag ZF: Zero Flag
DF: Direction Flag AF: Auxiliary Carry Flag
IF : Interruption flag (este se menciono anteriormente ) PF: Parity Flag
TF: Trap Flag CF: Carry Flag
SF: Sign Flag
Interrupciones de BIOS
(Basic Input Output
System)
Las interrupción del BIOS son interrupciones
de Software que proveen un conjunto
preinstalado de rutinas de servicio para el
manejo basado de E/S de bajo nivel.
BIOS Interrupt Call

Tal cual como se hizo menciono anteriormente se invocan con


“INT”+ “##”

Estas rutinas requieren que se le pasen argumentos, y estos


argumentos se pasan por medio de los Registros de Propósito
General
Ya que son rutinas de muy bajo nivel, las cuales necesitan que se les
comuniquen los registros, exigen también que se le comuniquen los
argumentos para esos registros, antes de llamar la interrupción INT##

Dada que estas rutinas son que otras personas desarrollaron, se


necesita información de referencia de la computadora para saber
cuales son las interrupciones de BIOS disponible, que información
exigen para su funcionamiento y que información regresa
Tipos de Rutinas de BIOS
• Este tipo de rutinas no exigen parámetros de entrada y No regresa
ninguna información
Ejemplo: INT 5h (copia a la impresora el contenido de la pantalla en modo
texto)
Entrada: Ninguna
Salida: Nada
En las primeras computadoras esta interrupción se llamaba con la tecla “prt sc”
• Esta rutina No exige parámetro de entrada, pero si regresa
información
Ejemplo: INT 11h: Banderas de BIOS del equipo
Entrada: Ninguna
Regresa: AX=Palabra de Equipo (esto es un grupo de bits que me dan
características del equipo como: Numero de puertos serie y paralelo y numero
de driver entre otros)
• Este tipo de rutinas requieren parámetros de entrada pero no dan
información de salida
Ejemplo: INT 10h: Rutinas de video (rutinas que manejan lo relacionado con la
tarjeta de video y ubican el cursor en pantalla)
Rutina INT10h/0: fija el modo de video
Entrada: AH = 0, AL=No. de video al que quiere cambiar
Regresa: Nada
• El siguiente ejemplo muestra como algunas rutinas de BIOS exigen
mas información que otras para al igual que la anterior no tener
información de retorno.
Ejemplo: INT10/6 : Desplaza la pagina activa hacia arriba
Entrada: AH=6.AL=No. de líneas a desplazar CL=Fila,
esquina superior izquierda DH=Fila, Esq. Inferior Derecha,
DL=Columna, Esq, Inf Derecha, BH=Atributo a ser usado
Regresa: Nada
Uso de rutinas de Bios
• INT10/6 (limpiar pantalla)
mov CX, 0000h ; Fila 0, Col 0, Esq. Sup. Izq
mov DX, 184fh ; Fila 24, Col 79 esq. Inf. Der.
mov BH, 7 ; Atributo normal
mov AL, 0 ; Pagina completa
mov AH, 6 ; Preparamos INT 10/6
INT 10h

El orden de los registros no es importante, lo importante es que se hagan antes de llamar la


interrupción INT##
Algunas Interrupciones de BIOS
INT 1A - System and Real Time Clock BIOS
Services

Servicios del Real Time Clock (RTC) (Reloj de Tiempo Real) - Llamado por
programas de software para comunicarse con el RTC (Real Time Clock)
• INT1A,0 Lee el RTC
• INT1A,1 Ajusta el RTC
• INT1A,2 Lee la hora del RTC
• INT1A,3 Ajusta la hora del RTC
• INT1A,4 Lee la fecha del RTC
• INT1A,5 Ajusta la fecha del RTC
• INT1A,6 Ajusta la alarma RTC
• INT1A,7 Resetea la alarma del RTC
INT 1B - Dirección del
controlador Ctrl-Break del BIOS
• contiene la dirección del controlador de interrupción Ctrl-Break de BIOS
• llamado por INT 9 después de presionar la tecla Ctrl-Break; INT 9 establece el Punteros de la cabeza y
la cola del teclado del BIOS al inicio del búfer y coloca una palabra cero en el búfer
• el BIOS inicialmente establece este valor para que apunte a un IRET simple pero DOS re-vectoriza
esto a su propio código, generalmente 2 líneas de código que establece una bandera interna (a 3) y
luego regresa a través de IRET.
• DOS verifica esta bandera al ingresar a muchas de sus subfunciones. Si el se establece la bandera,
invoca INT 23 .
• señalando esta dirección a una función nula con e IRET deshabilita Ctrl-Break aborta
• si el código INT 1B elige retener el control del sistema, debe emitir un EOI por cualquier interrupción
pendiente en el 8259 y reiniciar todos los dispositivos de E / S
• debe terminarse a través de un IRET - no debe ser llamado directamente por la aplicación del usuario
INT 8 - System timer
• Sistema de reloj
No requiere datos de entrada
La ejecución normal del INT 8 tarda aproximadamente 100
Microsegundos
INT 10 - Video BIOS Services
Servicio de Video de bajo nivel por BIOS

• INT 10,0 - Establecer el modo de video • INT 10, E - Escribir texto en modo teletipo
• INT 10,1 - Establecer el tipo de cursor • INT 10, F - Obtener el estado actual del video
• INT 10,2 - Establecer la posición del cursor • INT 10,10 - Establecer / obtener registros de paleta
• INT 10,3 - Leer la posición del cursor (EGA / VGA)
• INT 10,4 - Leer el lápiz óptico • INT 10,11 - Rutina del generador de caracteres (EGA
• INT 10,5 - Seleccionar la página de visualización / VGA)
activa • INT 10,12 - Configuración del subsistema de video
• INT 10,6 - Desplazar página activa hacia arriba (EGA / VGA)
• INT 10,7 - Desplazar página activa hacia abajo • INT 10,13 - Escribir cadena (BIOS después del
• INT 10,8 - Leer carácter y atributo en el cursor 1/10/86)
• INT 10,9 - Escribir carácter y atributo en el cursor • INT 10,14 - Cargar fuente de caracteres LCD
• INT 10, A - Escribir carácter en el cursor actual (convertible)
• INT 10, B - Establecer paleta de colores • INT 10,15 - Volver Parámetros de pantalla física
• INT 10, C - Escribir píxel de gráficos en la (convertible)
coordenada • INT 10,1A - Combinación de pantalla de video (VGA)
• INT 10, D- Leer píxeles de gráficos en la coordenada • INT 10,1B - Funcionalidad de BIOS de video /
Información de estado (MCGA / VGA)
• INT 10,1C- Guardar / Restaurar estado de video
(solo VGA)
• INT 10, FE - Obtener DESQView / TopView Virtual
INT 13 - Diskette BIOS Services
Servicios de Disco de bajo nivel, instalado por el BIOS
• INT 13,0 Resetear sistema de disco • INT 13, E Leer sector búfer (XT y portátil solamente)
• INT 13,1 estatus del Disco • INT 13, F Búfer del sector de escritura (XT y portátil
• INT 13,2 Leer sectores del Disco solamente)
• INT 13,3 Escribir sectores del Disco • INT 13,10 Prueba de unidad lista (XT y más reciente)
• INT 13,4 Verificar sectores del Disco • INT 13,11 Recalibrar unidad (XT y más reciente,)
• INT 13,5 Formatear pista del Disco • INT 13,12 Diagnóstico de ram del controlador (XT y portátil
• INT 13,6 Formatear pista y rastrear y establecer la bandera solamente)
del sector defectuoso (XT & portable) • INT 13,13 Diagnóstico del variador (solo XT y portátil)
• INT 13,7 Formatear el drive de inicio a la pista (XT & • INT 13,14 Diagnóstico interno del controlador (XT y más
portable) reciente, I
• INT 13,8 Parámetros actuales del driver (XT & newer,) • NT 13,15 Leer el tipo de disco / tipo DASD (XT BIOS de
• INT 13,9 Inicializar dos tablas base del Disco(XT & newer,) 1/10/86 y más reciente)
• INT 13,A Leer sector largo(XT & newer,) • INT 13,16 Estado de línea de cambio de disco (XT BIOS de
• INT 13,B Escribir sector largo (XT & newer,) 1/10/86 y más reciente)
• INT 13,C Seek to cylinder (XT & newer) • INT 13,17 Establecer el tipo de puntos para el formato (XT
• INT 13, D Restablecer disco alternativo (XT y más nuevo) BIOS desde el 1/10/86 y más reciente)
• INT 13,18 Establecer el tipo de medio para el formato (fecha
de BIOS específica)
• INT 13,19 Estacionar los cabezales de disco fijos (AT y más
reciente)
• INT 13,1A Formatear la unidad de disco ESDI (PS / 2 50+ )
INT 14 - BIOS Asynchronous Communications
Services

Rutinas para la comunicación Via puerto Serial


• INT 14,0 Inicialización de los parámetros del puerto serial
• INT 14,1 transmite carácter en AL
• INT 14,2 Recibe carácter en AL
• INT 14,3 Estatus del puerto serial
• INT 14,4 Inicialización Extendida(PS/2)
• INT 14,5 Extiende la comunicación del Puerto de Control (PS/2)
INT 15 - System BIOS Services
Rutinas de soporte para Servicios del Sistema

• 4Fh Intercepta el teclado


• 83h Espera evento
• 84h Lee el Joystick
• 85h llamada clave
• 86h Espera
• 87h Mover Bloque
• 88h Lee el tamaño de la memoria extendida
• C0h Lee los parámetros del sistema
• C1h Lee el segmento del área de datos extendida del BIOS
• C2h Funciones del dispositivo apuntador
• E8h Lee el tamaño de la memoria extendida
• E8h Información sobre el Mapa de memoria del sistema
INT 16 - Keyboard BIOS Services
Servicio de teclado de BIOS, Provee rutinas al ser llamada que permite la
comunicación del teclado

• INT 16,0 Espere la pulsación del teclado y lea


• INT 16,1 Obtenga el estado de la pulsación
• INT 16,2 Obtenga el estado del cambio
• INT 16,3 Ajuste la tasa de tipografía del teclado (AT +)
• INT 16,4 Ajuste del clic del teclado (AT +)
• INT 16,5 Memoria intermedia del teclado escritura (teclados mejorados
AT, PS / 2)
• INT 16,10 Espere la pulsación de tecla y lea (teclados mejorados AT, PS /
2)
• INT 16,11 Obtenga el estado de pulsación de tecla (teclados mejorados
AT, PS / 2)
• INT 16,12 Obtenga cambio estado (AT, teclados mejorados PS / 2)
INT 17 - Printer BIOS Services

Usado por los programas de software para


comunicarse con la impresora:
• INT 17,0 Print carácter
• INT 17,1 Initialize printer port
• INT 17,2 Read printer port status
¿En que lenguajes se usan las
interrupciones?
Las interrupciones al ser programaciones muy cercanas a hardware suelen ser
programadas en lenguajes de bajo nivel, algunos de estos serian:
- Lenguaje Maquina
- Lenguaje Ensamblador
-C
Pero también hay lenguajes de alto nivel que proporcionan herramientas para
programar estas funciones de bajo nivel, consiguiendo que las rutinas de manejo de
los dispositivos y de las interrupciones sean mas fáciles de leer, escribir y mantener;
algunos de estos son:
- ADA
- MODULA
- OCCAM

Das könnte Ihnen auch gefallen