Вы находитесь на странице: 1из 11

5.2.

CONTROL Y MANEJO DE INTERRUPCIONES

Una interrupción es un mecanismo que permite ejecutar un bloque de instrucciones


interrumpiendo la ejecución de un programa, y luego restablecer la ejecución del mismo sin
afectarlo directamente. De este modo un programa puede ser interrumpido temporalmente
para atender alguna necesidad urgente de la computadora y luego continuar su ejecución de
manera normal y como si nada hubiera pasado.

Las interrupciones son un metodo del que disponen los dispositivos e incluso los procesos para
hacer notar a la CPU la aparición de alguna circunstancia que requiera su intervención. De este
modo, los dispositivos pueden provocar que la CPU deje por el momento la tarea que estaba
realizando y atienda la interrupción. Una vez atendida, seguira con su labor anterior.

Cuando no existían interrupciones, era el procesador el que tenía que estar continuamente
comprobando el estado del dispositivo cuando lo necesitaba. Todo ese tiempo que el
procesador estaba sondeando el estado de los dispositivos era tiempo que no se podía dedicar
a otros procesos, lo que significa esto una afectación al rendimiento.

Por todo ello se. pensó que lo mejor era que existiera una línea especial entre el procesador y
los dispositivos, por la que los dispositivos indicaban al procesador que ya estaban listos.

Cuando al procesador le llega una interrupción, la atiende inmediatamente dejando de hacer


lo que estuviera haciendo, para poder atenderla de la forma correcta, debe saber con
anterioridad cómo tratarla. Las computadoras tienen en un sitio conocido de memoria, las
distintas rutinas de tratamiento para las diferentes interrupciones, el procesador reconoce la
interrupción de la que se trata y busca en memoria la rutina correspondiente.
Una vez terminado el tratamiento de la interrupción, es muy importante que el procesador
siga con lo que estaba haciendo, es importante que antes de tratar la interrupción se guarde
de alguna forma el estado en que se encuentra la computadora, y al terminar la rutina de
tratamiento se restaure el estado.

Se pueden distinguir dos tipos de interrupciones: interrupciones software e interrupciones


hardware; Las interrupciones software son provocadas por los programas usando una función
especial del lenguaje, tenen como objetivo el que la CPU ejecute algún tipo de función, al
terminar de ejecutarse esta función, se seguirá ejecutando el programa que provocó la
interrupción.

Un dispositivo periférico puede generar una señal eléctrica llamada interrupción que modifica
ciertas banderas que se encuentran en el CPU. La detección de una interrupción es parte del
ciclo de instrucción. En cada ciclo de instrucción, el CPU revisa las banderas hardware para ver
si algún dispositivo necesita atención.

Las interrupciones generadas por los dispositivos periféricos son generalmente asíncronos con
respecto al programa que se está ejecutando. Un evento es asíncrono a una entidad si el
momento cuando ocurre no está determinado por la entidad. Las interrupciones no siempre
ocurren en el mismo punto dentro de la ejecución de un programa. En contraste, un evento de
error como la división por cero es síncrono en el sentido de que siempre ocurre durante la
ejecución de una instrucción particular si el mismo dato es presentado a la instrucción.

Las rutinas del Sistema de Operación llamadas manejadores de dispositivos usualmente


manejan las interrupciones generadas por el dispositivo. Los Sistemas de Operación usan
interrupciones pare implementar el tiempo compartido. Tienen un dispositivo llamado timer
que genera una interrupción después de un intervalo específico de tiempo. El Sistema de
Operación inicializa el timer antes de actualizar el Program Counter pare ejecutar un programa
de un usuario. Cuando el timer expira, genera una interrupción causando que el CPU ejecute la
rutina de servicio de la interrupción timer.
Un señal o signal es la notificación por software de que un evento ocurrió. Por lo general es la
respuesta del Sistema de Operación. Por ejemplo, ctrl-C genera una interrupción para el
manejador de dispositivo que maneja el teclado. El manejador notifica al proceso apropiado
mandando un signal. El Sistema de Operación tambien puede enviar signals a un proceso para
notificar la finalización de una E/S o de un error.

- Las interrupciones pueden ser producidas por Hardware o por Software


- Las interrupciones por Hw son producidas por un dispositivo y viajan por el mismo bus
del sistema.
- Las interrupciones por Sw son producidas por medio de la ejecución de una operación
especial que se conoce como "llamada al sistema" (system call) o por errores
producidos dentro de un proceso, también conocidas como excepciones.

Hay muchos tipos de interrupciones y pare cada uno de estas existe una rutina en el sistema
de operación que le da servicio. Los sistemas de operación actuales permiten a los dispositivos
tales como E/S o reloj del sistema interrumpir el CPU asíncronamente.

Pasos durante una interrupción

El CPU suspende lo que estaba realizando. El hw transfiere el control al sistema de operación.

Deshabilita las interrupciones, mientras se atiende una interrupción no se puede atender otra
que llegue, algunas arquitecturas con manejo de interrupciones sofisticadas permiten,
mediante un esquema de prioridades, interrumpir un servicio de interrupción para atender
otra de mayor prioridad, por lo que, aquellas interrupciones de menor o igual prioridad son
deshabilitadas.

El kernel del sistema de operación salva el estado actual del proceso interrumpido, transfiere
su ejecución a una dirección fija, esta dirección por lo general contiene la dirección de
comienzo donde la rutina de servicio de la interrupción se encuentra, cada diseño de
computadora tiene su propio mecanismo de interrupciones, una forma de manejar las
interrupciones es invocando una rutina general que examine la información de la interrupción
y determine el tipo de interrupción ocurrida, y de allí llama a la rutina que se encarga de
atender dicha interrupción.

Por lo general se maneja mediante un vector de interrupciones, indexado por el tipo de


interrupción, en este vector se encuentra la dirección de comienzo de la rutina que da servicio
a dicho tipo, se le conoce como vector de interrupción, otra forma de localizar la rutina
apropiada es mediante el pooling, es decir, preguntando a cada dispositivo pare ver quien
requirió el servicio.

- Se ejecuta la rutina de interrupción


- Se restaura el estado anterior
- Se habilitan las interrupciones

La arquitectura de interrupciones debe también almacenar la dirección de la instrucción


interrumpida.

5.2.1. Dentro de un computador

Cuando una computadora se encuentra realizando un proceso este puede interrumpirse por
cualquiera de las dos causas siguientes:

1.- Que se haya presentado una causa que impida que siga adelante un trabajo o un programa
que no haya terminado:

En este caso las interrupciones pueden darse:

Por Software: quiere decir que la interrupción se hace por medio de una instrucción del
Sistema operativo que demanda la detención del proceso o por una instrucción del programa
mismo que demanda la acción de otro dispositivo.

Por Hardware: se refiere a interrupciones provocadas por la acción de algún elemento físico ya
sea por una falla, por requerirlo el circuito, por falta de energía eléctrica u otra causa que
impida la continuación de un programa dado algunas de estas fallas pueden ser manejadas por
el sistema operativo ya sea por normalizar el proceso o para indicar al operador la causa de la
interrupción.

2.- Es que haya llegado el fin lógico de un programa o de un trabajo: en este caso el sistema
operativo debe retirar el control al programa que ha terminado de introducir una nueva tarea
si se tiene alguna espera esta interrupción no representa un mayor problema ya que solo
puede darse cuando el programa que se encuentra en proceso demanda a través de una
instrucción su propio fin.
5.2.2. Interrupción de E/S

Con el fin de iniciar una operación de E/S la CPU carga los registros apropiados dentro del
controlador del dispositivo, el controlador a su vez examina el contenido de estos registros
para determinar que acción debe realizar, por ejemplo, si se encuentra una solicitud de
lectura, el controlador iniciara la transferencia de datos del dispositivo a su buffer local,
cuando haya terminado de hacer esto el controlador informara al CPU que ha completado su
operación, esta comunicación se genera por medio de una interrupción.

Esto caso se da en general como resultado de una solicitud de E/S por parte de un proceso del
usuario, una vez iniciada la E/S; luego al completarse la operación el control se devuelve al
proceso del usuario, este caso se conoce como E/S sincrónica, pero existe otra posibilidad
llamada E/S asíncrona que devuelve el control al programa del usuario sin esperar que se
complete la E/S así esta puede continuar mientras se realizan otras operaciones del sistema.
5.2.3 Interrupciones de programa

Las interrupciones software son provocadas por los programas usando una función especial
del lenguaje, tienen como objetivo el que la CPU ejecute algún tipo de función, al terminar de
ejecutarse esta función, se seguirá ejecutando el programa que provocó la interrupción.

Este tipo de interrupciones es la forma más importante que tendrán los programas de ejecutar
funciones especiales del DOS (Disk Operating System) o del BIOS (Basic Input Output System).
Estas funciones tienen un número de interrupción software asociada, cuando un programa
lanza una interrupción de este tipo, la CPU ejecuta su función de tratamiento asociada, por lo
que debemos saber qué es lo que hace cada interrupción para conseguir el efecto deseado.

Las Interrupciónes son principalmente subrutinas de la BIOS o el DOS que pueden ser llamadas
por un programa, su función es controlar el hardware, servir de contacto entre los programas y
las funciones del BIOS y del dos.

Las interrupciones de software pueden ser activadas directamente por el ensamblador


invocando al número de interrupción deseada con la instrucción INT.

El uso de las interrupciones nos ayuda en la creación de programas, utilizándolas en


programas, son más cortos, es más fácil entenderlos y usualmente tienen un mejor
desempeño debido en gran parte a su menor tamaño.

Este tipo de interrupciones podemos separarlas en dos categorías: las interrupciones del
sistema operativo DOS y las interrupciones del BIOS.

La diferencia entre ambas es que las interrupciones del sistema operativo son más fáciles de
usar pero también son más lentas ya que estas interrupciones hacen uso del BIOS para lograr
su cometido, en cambio las interrupciones del BIOS son mucho más rápidas pero tienen la
desventaja que, como son parte del hardware son muy específicas y pueden variar
dependiendo incluso de la marca del fabricante del circuito.

La elección del tipo de interrupción a utilizar dependerá únicamente de las características que
le quiera dar a su programa: velocidad (utilizando las del BIOS) o portabilidad (utilizando las del
DOS).
5.2.4 Interrupciones externas

El uso de las interrupciones nos ayuda en la creación de programas, utilizándolas nuestros


programas son más cortos, es más fácil entenderlos y usualmente tienen un mejor desempeño
debido en gran parte a su menor tamaño.

Las interrupciones externas las generan los dispositivos periféricos, como pueden ser: teclado,
impresoras, tarjetas de comunicaciones; también son generadas por los coprocesadores.

Estas interrupciones no son enviadas directamente a la UCP, sino que se mandan a un circuito
integrado cuya función es exclusivamente manejar este tipo de interrupciones.

Por ejemplo en un circuito llamado PIC 8259A si es controlado por la UCP utilizando para tal
control una serie de vías de comunicación llamadas puertos:

Interrupción 10H

Propósito: Llamar a diversas funciones de video del BIOS.


Sintaxis:

Int 10H

Esta interrupción tiene diversas funciones, todas ellas nos sirven para controlar la entrada y
salida de video, la forma de acceso a cada una de las opciones es por medio del registro AH.

Funciones comunes de la interrupción 10H.

02H Selección de posición del cursor

09H Escribe atributo y carácter en el cursor

0AH Escribe carácter en la posición del cursor

0EH Escritura de caracteres en modo alfanumérico

Función 02H

Uso: Posiciona el cursor en la pantalla dentro de las coordenadas válidas de texto.

Registros de llamada: AH = 02H

BH = Página de video en la que se posicionará el cursor.

DH = Fila

DL = Columna

Función 09H

Uso: Desplegar un carácter un determinado número de veces con un atributo definido


empezando en la posición actual del cursor.

Registros de llamada: AH = 09H

AL = Carácter a desplegar

BH = Página de video en donde se desplegará

BL = Atributo a usar

Esta función despliega un carácter el número de veces especificado en CX pero sin cambiar la
posición del cursor en la pantalla.

Función 0AH

Uso: Desplegar un caracter en la posición actual del cursor.


Registros de llamada: AH = 0AH

AL = Caracter a desplegar

BH = Página en donde desplegar

BL = Color a usar (sólo en gráficos).

CX = Número de repeticiones

La única diferencia entre esta función y la anterior es que ésta no permite modificar los
atributos, simplemente usa los atributos actuales. Tampoco se altera la posición del cursor con
esta función.

Función 0EH

Uso: Desplegar un caracter en la pantalla actualizando la posición del cursor.

Registros de llamada: AH = 0EH

AL = Caracter a desplegar

BH = Página donde se desplegara el caracter

BL = Color a usar (solo en gráficos)

Interrupción 16H

Propósito: Manejar la entrada/salida del teclado.

Sintaxis: Int 16H

La interrupción 16H, son llamadas utilizando el registro AH.

Funciones de la interrupción 16H

00H Lee un caracter de teclado

01H Lee estado del teclado

Función 00H
Uso: Leer un caracter del teclado.

Registros de llamada: AH = 00H

Registros de retorno: AH = código de barrido (scan code) del teclado

AL = Valor ASCII del caracter.

Cuando se utiliza esta interrupción se detiene la ejecución del programa hasta que se
introduzca un caracter desde el teclado, si la tecla presionada es un caracter ASCII su valor será
guardado en el registro AH, de lo contrario el código de barrido será guardado en AL y AH
contendrá el valor 00H.

Función 01H

Uso: Leer estado del teclado.

Registros de llamada: AH = 01H

Interrupción 17H

Propósito: Manejar la entrada/salida de la impresora.

Sintaxis: Int 17H

Esta interrupción es utilizada para escribir caracteres a la impresora, inicializarla y leer su


estado.

Funciones de la interrupción 16H

00H Imprime un caracter ASCII

01H Inicializa la impresora

02H Proporciona el estado de la impresora

Función 00H

Uso: Escribir un caracter a la impresora.

Registros de llamada: AH = 00H


AL = Caracter a imprimir

DX = Puerto a utilizar

Registros de retorno: AH = Estado de la impresora.

El estado de la impresora se codifica bit por bit como sigue:

BIT 1/0 SIGNIFICADO

0 1 Se agotó el tiempo de espera

3 1 Error de entrada/salida

4 1 Impresora seleccionada

5 1 Papel agotado

6 1 Reconocimiento de comunicación

7 1 La impresora se encuentra libre

Los bits 1 y 2 no son relevantes.

La mayoría de los BIOS únicamente soportan 3 puertos paralelos aunque existen algunos que
soportan 4.

Вам также может понравиться