Está en la página 1de 11

Interrupciones Y Excepciones

Interrupciones y excepciones

El Sistema Operativo ocupa una posicin intermedia entre los programas deaplicacin y el hardware. No se
limita a utilizar el hardware a peticin de las aplicaciones ya que hay situaciones en las que es el hardware el
que necesita que se ejecute cdigo del SO. En tales situaciones el hardware debe poder llamar al sistema,
pudiendo deberse estas llamadas a dos condiciones:

Algn dispositivo de E/S necesita atencin.

Se ha producido una situacin de error al intentar ejecutar una instruccin delprograma (normalmente de
la aplicacin).

En ambos casos, la accin realizada no est ordenada por el programa deaplicacin, es decir, no figura en
el programa.
Segn los dos casos anteriores tenemos las interrupcionesy la excepciones:

Interrupcin: seal que enva un dispositivo de E/S a la CPU para indicar que la operacin de la que se estaba
ocupando, ya ha terminado.
Interrupcin (tambin conocida como interrupcin hardware o peticin de interrupcin) es una seal recibida
por el procesador de un ordenador, indicando que debe "interrumpir" el curso de ejecucin actual y pasar a
ejecutar cdigo especfico para tratar esta situacin.
Una interrupcin supone la ejecucin temporaria de un programa, para pasar a ejecutar una "subrutina de
servicio de interrupcin", que pertenece al BIOS (Basic Input Output System).
Las interrupciones surgen de las necesidades que tienen los dispositivos perifricos de enviar informacin al
procesador principal de un sistema de computacin. La primera tcnica que se emple fue que el propio
procesador se encargara de sondear (polling) el dispositivo cada cierto tiempo para averiguar si tena pendiente
alguna comunicacin para l. Este mtodo presentaba el inconveniente de ser muy ineficiente, ya que el
procesador constantemente consuma tiempo en realizar todas las instrucciones de sondeo.
El mecanismo de interrupciones fue la solucin que permiti al procesador desentenderse de esta...

Interrupcin (tambin conocida como interrupcin de hardware o peticin de interrupcin) es


una seal recibida por el procesador de un ordenador, indicando que debe "interrumpir" el curso de
ejecucin actual y pasar a ejecutar cdigo especfico para tratar esta situacin.

Una interrupcin es una suspensin temporal de la ejecucin de un programa, para pasar a


ejecutar una subrutina de servicio de interrupcin, la cual, por lo general, no forma parte del
programa (generalmente perteneciente al sistema operativo, o al BIOS). Luego de finalizada dicha
subrutina, se reanuda la ejecucin del programa.

Las interrupciones surgen de las necesidades que tienen los dispositivos perifricos de enviar
informacin al procesador principal de un sistema de computacin. La primera tcnica que se
emple fue que el propio procesador se encargara de sondear (polling) los dispositivos cada cierto
tiempo para averiguar si tena pendiente alguna comunicacin para l. Este mtodo presentaba el
inconveniente de ser muy ineficiente, ya que el procesador constantemente consuma tiempo en
realizar todas las instrucciones de sondeo.

El mecanismo de interrupciones fue la solucin que permiti al procesador desentenderse de esta


problemtica, y delegar en el dispositivo la responsabilidad de comunicarse con el procesador
cuando lo necesitara. El procesador, en este caso, no sondea a ningn dispositivo, sino que queda
a la espera de que estos le avisen (le "interrumpan") cuando tengan algo que comunicarle (ya sea
un evento, una transferencia de informacin, una condicin de error, etc.).

Funcionamiento del mecanismo de interrupciones


Cada dispositivo que desea comunicarse con el procesador por medio de interrupciones debe
tener asignada una lnea nica capaz de avisar al CPU que le requiere para una operacin. Esta
lnea es la llamadaIRQ ("Interrupt ReQuest", peticin de interrupcin).

Las IRQ son lneas que llegan al controlador de interrupciones un componente


de hardware dedicado a la gestin 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 lneas de interrupcin (operacin llamada
comnmente enmascarar por la utilizacin de unamscara), y establecer prioridades entre las
distintas interrupciones habilitadas. Cuando varias lneas de peticin de interrupcin se activan a la
vez, el controlador de interrupciones utilizar estas prioridades para escoger la interrupcin sobre
la que informar al procesador principal. Tambin puede darse el caso de que una rutina de
tratamiento de interrupcin sea interrumpida para realizar otra rutina de tratamiento de una
interrupcin de mayor prioridad a la que se estaba ejecutando.Sin embargo hay interrupciones que
no se pueden enmascarar o deshabilitar, las conocidas como interrupciones no enmascarables o
NMI.

Un procesador principal que no tenga un controlador de interrupciones integrado, suele tener una
nica lnea de interrupcin llamada habitualmente INT. Esta lnea es activada por el controlador de
interrupciones cuando tiene una interrupcin que servir. Al activarse esta lnea, el procesador
consulta los registros del controlador de interrupciones para averiguar cual IRQ hay que atender. A
partir del nmero del IRQ busca en la tabla de vectores de interrupcin la direccin de la rutina que
debe llamar para atender una peticin del dispositivo asociado a dicha IRQ.

Las rutinas de interrupcin generalmente toman un pequeo tiempo de ejecucin.

Pasos para el procesamiento de una IRQ:

1. Terminar la ejecucin de la instruccin de mquina 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 instruccin.
3. La CPU salta a la direccin donde est almacenada la rutina de servicio de
interrupcin (Interrupt Service Routine (ISR)) y ejecuta esa rutina que tiene como objetivo
atender al dispositivo que gener la interrupcin.
4. Una vez que la rutina de la interrupcin termina, el procesador restaura el estado que
haba guardado en la pila en el paso 2 y retorna al programa que se estaba usando
anteriormente.
[editar]Lneas de peticin de interrupcin
El bus de control dispone de lneas especficas para el sistema de interrupciones. En el IBM
PC y XT existen 8 lneas de peticin de interrupcin manejadas por el controlador de
interrupciones Intel 8259. Estas lneas estn numeradas del 0 al 7, las dos primeras estn
asignadas al timer tick del temporizador Intel 8253, y al teclado. Solo quedaban 6 lneas para otros
dispositivos, que aparecen como tales en el bus de control (IRQ2 - IRQ7). A partir del
modelo AT se aadieron otras 8 lneas, numeradas del 8 al 15, mediante un segundo controlador
de interrupciones (PIC), aunque la tecnologa empleada exigi colgarlo de la lnea IRQ2 del
primero, de forma que esta lnea se dedica a atender las interrupciones del segundo controlador a
travs de la lnea 9 de este ltimo, y la lnea 8 se dedic al reloj de tiempo real, un dispositivo que
no exista en los modelos XT.

Aunque internamente se manejan 16 lneas, no todas tienen contacto en los zcalos del bus
externo (son las marcadas con asterisco en la tabla que sigue). La razn de esta ausencia en los
zcalos de conexin es que son de asignacin fija, y solo son usadas por ciertos dispositivos
instalados en la propia placa base. En concreto la lnea NMI est asignada al mecanismo de
control de paridad de la memoria, la lnea 0 est asignada al cronmetro del sistema y la lnea 1 al
chip que controla el teclado (dispositivos que pueden requerir atencin urgente por parte del
procesador). Es costumbre denominar IRQx a las que tienen prolongacin en el bus.

Tericamente las restantes lneas podran ser asignadas a cualquier nuevo dispositivo, pero en la
prctica algunas estn reservadas a dispositivos estndar. Por ejemplo, IRQ3 est casi siempre
asignado al puerto serie COM2 y el IRQ4 al COM1; IRQ6 al controlador estndar de disquetes y
IRQ7 al puerto de impresora LPT1. La tabla 1 muestra las asignaciones clsicas para el XT y el AT

En sistemas ms modernos utilizan la arqitectura APIC de Intel con 24 lneas y 8 extra para enrutar
las interrupciones PCI.

Nombre Int (hex) XT: Descripcin AT: Descripcin

NMI --- Paridad* Paridad*

0 08 Temporizador* Temporizador*

1 09 Teclado* Teclado*

IRQ2 0A Reservado Interrupciones 8 a 15 (PIC#2)


IRQ3 0B Puertos serie COM2/COM4 Puerto serie COM2/COM4

IRQ4 0C Puertos serie COM1/COM3 Puertos serie COM1/COM3

IRQ5 0D Disco duro Impresora secundaria LPT2

IRQ6 0E Disquete Disquete

IRQ7 0F Impresora primaria LPT1 Impresora primaria LPT1

8 70 No aplicable Reloj de tiempo real*

9 71 No aplicable Redirigido a IRQ2*

IRQ10 72 No aplicable no asignado

IRQ11 73 No aplicable no asignado

IRQ12 74 No aplicable Ratn PS2

13 75 No aplicable Coprocesador 80287*

IRQ14 76 No aplicable Contr. disco IDE primario

IRQ15 77 No aplicable Contr. disco IDE secundario

Cuando se instala un dispositivo de E/S que puede necesitar atencin del procesador, debe
asignrsele una IRQ adecuada. Dicho en otras palabras, cuando requiera atencin debe enviar
una seal en la lnea IRQ especificada. Inicialmente esta asignacin se efectuaba de forma
manual, por medio de puentes (jumpers) en la placa o dispositivo, pero actualmente esta seleccin
puede hacerse por software.
[editar]Mecanismo de interrupciones en un PC
Un ordenador PC tpico dispone en su placa base de un controlador de
interrupciones 8259 de Intel o de un circuito integrado anlogo. Este dispositivo electrnico dispone
de hasta 16 lneas 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.

[editar]Tipos de interrupciones
En este subapartado vamos a hacer una clasificacin de las distintas clases de interrupciones que
nos podemos encontrar atendiendo a la fuente que las produce. Por un lado distinguiremos si se
producen por causas internas o externas al procesador y remarcaremos que este hecho est
ntimamente ligado con que las interrupciones sean sncronas o asncronas:

Interrupciones de hardware. Estas son asncronas a la ejecucin del procesador, es decir, se


pueden producir en cualquier momento independientemente de lo que est haciendo el CPU
en ese momento. Las causas que lo producen son externas al procesador y a menudo suelen
estar ligadas con distintos dispositivos de E/S.
Traps. Normalmente son causadas al realizarse operaciones no permitidas tales como la
divisin por 0, el desbordamiento, el acceso a una posicin de memoria no permitida, etc.
Interrupciones por software. Las interrupciones por software son generadas por el programa en
ejecucin. Para generarla, existen distintas instrucciones en el cdigo mquina que permiten al
programador producir una interrupcin, suelen tener nemotcnicos tales como INT. Suelen ser
de vital importancia ya que a partir de estas interrupciones se solicita al sistema operativo
realizar determinadas funciones, para ello. Por ejemplo, en DOS se realiza la instruccin INT
0x21 y en Unix se utiliza INT 0x80 para hacer llamadas de sistema.
[editar]Usos de los interrupciones
Se utilizan las interrupciones generalmente para dos motivos:

Permitir una comunicacin sin bloqueo con los perifricos externos.


Conmutar las tareas dentro de un planificador
[editar]Interrupciones de hardware
Son interrupciones que se producen como resultado de, normalmente, una operacin de E/S. No
son producidas por ninguna instruccin de un programa sino por seales que producen
los dispositivos para indicarle al procesador que necesitan ser atendidos. Las interrupciones de
hardware son interesantes en cuanto a que permiten mejorar la productividad del procesador ya
que este ltimo puede ordenar una operacin de E/S y en lugar de tener que esperar realizando
una espera activa, a que el dispositivo termine, es decir, sin hacer ningn trabajo til, se puede
dedicar a atender a otro proceso o aplicaciones y cuando el dispositivo est de nuevo disponible
ser el encargado de notificarle al procesador mediante la lnea de interrupcin que ya est
preparado para continuar/terminar la operacin de E/S.

Entradas/salidas:
Cuando un microprocesador accesa un perifrico (disco duro, puerto de comunicacin...), puede
transcurrir algn tiempo antes de que los datos puedan ser obtenidos o bien transmitidos. La
solucin ms simple es esperar hasta recibir un dato o bien hasta que se efecta una transmisin
(espera ocupado, o polling), pero esta solucin bloquea todos los programas en ejecucin, y eso
no puede admitirse bajo un sistemamultitarea. En los sistemas modernos se prefiere un
funcionamiento mediante interrupciones:

El perifrico seala una eventualidad mediante una interrupcin, como por ejemplo que ha
acabado la transmisin de los datos, y una rutina trata esta interrupcin. Para que la transferencia
sea ms eficiente suele usarse el acceso directo a memoria (DMA), mediante el cual los bloques
son ledos o bien escritos en memoria sin la intervencin del CPU.

[editar]Trampas
Es un tipo de interrupcin sincrnica tpicamente causada por una condicin de error, por ej. una
divisin por 0 o un acceso invlido 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 proteccin que permite
garantizar la integridad de los datos tanto en el espacio de usuario como en el espacio kernel. El
SO cuando detecta una excepcin intenta solucionarla pero en caso de no poder simplemente
notificar la condicin de error a la aplicacin y abortar la misma.

[editar]Interrupciones por software

Este artculo o seccin tiene un estilo difcil de entender para los lectores interesados en el
tema.
Si puedes, por favor edtalo y contribuye a hacerlo ms accesible para el pblico general, sin eliminar los
detalles tcnicos que interesan a los especialistas.

En este apartado se consideran las llamadas al sistema operativo mediante una instruccin,
normalmente de Entrada/Salida.

Una interrupcin por software, se generar por un programa mientras est ejecutndose. En
general acta de la siguiente manera:

1. Un programa que se vena ejecutando luego de su instruccin I5 , llama al Sistema


Operativo, por ejemplo para leer un archivo de disco.(cuando un programa necesita un
dato exterior , se detiene y pasa a cumplir con las tareas de recojer ese dato)

1. A tal efecto, luego de I5 existe en el programa, la instruccin de cdigo de mquina CD21,


simbolizada INT 21 en Assembler, que realiza el requerimiento del paso 1. Puesto que no
puede seguir le ejecucin de la instruccin I6 y siguientes del programa hasta que no se
haya ledo el disco y est en memoria principal dicho archivo, virtualmente el programa se
ha interrumpido, siendo, adems, que luego de INT 21, las instrucciones que se
ejecutarn no sern del programa, sino del Sistema Operativo. ( se detiene el programa y
ordena en este caso mediante INT21 ( interrupcion predefinida ) que recoge el dato
solicitado, para poder sequir el programa que la ordeno )
1. La ejecucin de INT 21 permite hallar la subrutina del Sistema Operativo.

1. Se ejecuta la subrutina del Sistema Operativo que prepara la lectura del disco.

1. Luego de ejecutarse la subrutina del Sistema Operativo, y una vez que se haya ledo el
disco y verificado que la lectura es correcta, el Sistema Operativo ordenar reanudar la
ejecucin del programa autointerrumpido en espera.

1. La ejecucin del programa se reanuda.


[editar]Determinacin de la direccin de la rutina de servicio de
interrupcin
Hay dos alternativas para determinar la direccin de la rutina de servicio de interrupcin que debe
ejecutarse al recibir una interrupcin determinada:

Direcciones fijas. Se hallan cableadas en el procesador y por tanto nunca pueden ser
cambiadas. Esto implica que las RSI siempre estarn en una determinada posicin de la
memoria.
Direcciones variables (por interrupciones vectorizadas). En este grupo se incluyen aquellas
que presentan una direccin variable y que, por tanto, no se halla cableada en el procesador.
De esta manera el dispositivo debe dar informacin acerca de la localizacin de la direccin de
comienzo de la RSI asociada a dicho perifrico.
[editar]Direcciones variables
Hay distintas metodologas de diseo para las interrupciones con direcciones variables. En la
actualidad, las alternativas que son implementadas de manera habitual son las siguientes:

Direccionamiento absoluto. En este caso es el dispositivo o la interfaz del dispositivo la


encargada de conocer la direccin de la RSI y de enviarla al procesador para que ste pueda
localizar dicha subrutina y ejecutarla.
Direccionamiento relativo. El dispositivo solo suministra parte de la direccin de comienzo y es
el procesador el encargado de completarla (aadiendo bits o sumando una determinada
cantidad, que siempre ser fija). Esta alternativa tiene una ventaja sobre la anterior y es que
permite especificar la direccin de comienzo con menos bits y por tanto simplifica el diseo.
Ahora bien tiene una desventaja principal y es que limita el nmero de dispositivos que
podemos conectar y adems ciertos bits de la direccin quedan fijados de forma permanente
por la CPU lo que reduce la capacidad de reubicabilidad de la RSI. Una alternativa que utilizan
ciertos procesadores como el 8080 o el 8085 es que en vez de enviar solamente la direccin
de comienzo de la RSI se enva tambin el cdigo de la operacin de salto (por ejemplo
CALL).
Direccionamiento indirecto. Tambin conocida como direccionamiento por interrupciones
vectorizadas. Se mantiene una tabla de vectores de interrupcin (direcciones de comienzo de
las distintas RSI) y a cada interrupcin se le asocia un nmero que ser el ndice por el cual se
acceder a la tabla y se recuperar la informacin de la direccin de comienzo. Necesita
seales 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 interrupcin (INT) y el procesador deber enviar otra seal para indicar que
se ha reconocido la interrupcin (INTA#).
[editar]Determinacin de la fuente que genera la interrupcin
Hay distintas formas de identificar la fuente de una determinada interrupcin. La primera alternativa
que se consider fue asignar una lnea (un bit) para cada interrupcin pero esto supona un gran
costo en cuanto a la relacin de nmero de dispositivos y nmero de bits usados y a menudo fijaba
el lmite de dispositivos que se podan conectar. Por tanto, se pens con posterioridad que en cada
patilla de interrupcin deberan poder conectarse ms de un dispositivo, pero entonces tendramos
que imponer una metodologa que permitiese identificar de forma unvoca de qu dispositivo se
trataba. Para ello hay varias directrices:

Polling. Se trata de que la CPU comprueba de manera sistemtica todos los dispositivos de
manera que "busca" cul de ellos fue el que solicit la interrupcin. Esto tiene una ventaja y es
que es barato a nivel de coste hardware ya que el "polling" se implementa en software, no
obstante tiene otras desventajas que no podemos olvidar y es que suele ser lento porque tiene
que comprobar en serie todos los dispositivos y establece una prioridad en los dispositivos (el
orden de sondeo) y por tanto puede provocar inanicin.
Interrupciones vectorizadas. Este concepto fue ya tratado en el apartado anterior y como
ventajas podemos destacar que suele ser rpido pero implica un alto costo en el hardware.
Hardware paralelo. Se utiliza un registro de interrupcin cuyos bits se controlan de forma
independiente por las seales de peticin de interrupcin de cada perifrico. Segn la
posicin de cada bit en el registro, se establece la prioridad.
[editar]Sistemas de prioridad
Se necesita un mecanismo para priorizar las interrupciones y tratar primero las ms urgentes.
Existen varias alternativas:

Interrupciones simultneas. No tienen por qu ocurrir de manera simultnea sino que se refiere
a que en un momento dado pueden haber varias interrupciones activas.
Interrupciones anidadas. Mientras se est procesando una determinada rutina de servicio de
interrupcin sucede otra seal de interrupcin.
Inhibicin de interrupciones. Se deshabilitan las dems interrupciones mientras se est
tratando una.
[editar]Interrupciones simultneas
En este mtodo tenemos dos alternativas, una de ellas es que exista algn hardware que tenga
como entradas las seales de interrupcin y de como salida la interrupcin ms prioritaria que est
activa en ese momento. Otra alternativa es tener un mtodo de identificacin de prioridades
distribuida y no generalizada como en el caso anterior, en este caso tenemos que destacar dos
tcnicas distintas que se pueden implementar en la prctica:
Polling. Como ya vimos es el CPU el que chequea los dispositivos y el orden de sondeo
determina la prioridad.
Daisy-chain. (conexin en cadena) Podemos conectar los distintos dispositivos en cadena, en
orden decreciente de prioridad y por tanto la seal de reconocimiento de interrupcin (INTA#)
solo ser pasada al siguiente dispositivo en caso de que el anterior (ms prioritario) no haya
solicitado los servicios del procesador. Sin embargo, algo importante es que las seales de
interrupcin que van al procesador estn conectadas todas a un mismo cable, por tanto,
deberemos utilizar alguna tcnica especial para que no se produzca un cortocircuito. Para
evitar precisamente que la pista se cortocircuite se utiliza la tcnica del "open-collector" o
"colector abierto" y consiste en conectar el colector de un transistor a la pista comn (un
transistor por cada dispositivo) y por tanto estarn tantos colectores conectados como
dispositivos tengamos (se entiende que son dispositivos que mandan peticin de interrupcin
al procesador).
Hbrida. Mezcla las dos tcnicas explicadas anteriormente.
[editar]Interrupciones anidadas
Existen dos mtodos 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 automtica en algunos procesadores, pero en otros ser el usuario el
encargado de deshabilitarlas en caso de que no desee que ninguna otra interrupcin pueda
interrumpir el transcurso normal de la rutina de servicio de interrupcin. No es aconsejable
deshabilitar las interrupciones durante mucho tiempo ya que esto puede provocar errores y prdida
de informacin.

La otra alternativa es permitir que solo las interrupciones ms prioritarias puedan suspender la
ejecucin de la RSI actual. Para esto tendremos que definir qu lneas son ms prioritarias que
otras. Otra consideracin 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.

[editar]Inhibicin de interrupciones
Hay distintas alternativas de inhibicin de interrupciones. Como ya hemos visto estas se pueden
hacer de manera automtica 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 procesador
que consideremos. Las distintas opciones son:

Deshabilitar todas las interrupciones. Para esto basta con inhibir el bit del registro de flag
dedicado a las interrupciones.
Deshabilitar al principio de la RSI y activarlas de nuevo al finalizar la misma. Puede ser de
manera automtica o por el usuario.
Desactivar solo las interrupciones que tengan menor prioridad que la asociada a la RSI que se
est ejecutando en ese momento.
Deshabilitar de forma selectiva distintos niveles de prioridad de interrupcin. Para lo cual se
emplean registros especiales denominados mscaras en el que cada uno de sus bits
identifican a un nivel distinto y modificando su contenido se puede establecer que niveles estn
activos en ese momento. Se puede cambiar por el programador.
[editar]Tormenta de interrupciones
Este evento se puede producir cuando un procesador recibe un nmero demasiado grande de
interrupciones, las cuales consumen la mayor parte del tiempo del procesador. Las tormentas de
interrupciones suelen ser causadas por dispositivos de hardware que no son compatibles con una
tasa de interrupcin limitante.

Como curiosidad, se conjetura que la primera tormenta de interrupciones pudo ocurrir durante el
descenso lunar del Apollo 11 en 1969.

Interrupciones y excepciones
El SO ocupa una posicin intermedia entre los programas de aplicacin y el hardware. No se limita
a utilizar el hardware a peticin de las aplicaciones ya que hay situaciones en las que es el
hardware el que necesita que se ejecute cdigo del SO. En tales situaciones el hardware debe
poder llamar al sistema, pudiendo deberse estas llamadas a dos condiciones:

Algn dispositivo de E/S necesita atencin.


Se ha producido una situacin de error al intentar ejecutar una instruccin del programa
(normalmente de la aplicacin).
En ambos casos, la accin realizada no est ordenada por el programa de aplicacin, es decir, no
figura en el programa.

Segn los dos casos anteriores tenemos las interrupciones y la excepciones:

Interrupcin: seal que enva un dispositivo de E/S a la CPU para indicar que la operacin de
la que se estaba ocupando, ya ha terminado.
Excepcin: una situacin de error detectada por la CPU mientras ejecutaba una instruccin,
que requiere tratamiento por parte del SO.
[editar]Tratamiento de las interrupciones
Una interrupcin se trata en todo caso, despus de terminar la ejecucin de la instruccin en curso.

El tratamiento depende de cul sea el dispositivo de E/S que ha causado la interrupcin, ante la
cual debe poder identificar el dispositivo que la ha causado.

La ventaja de este procedimiento es que no se tiene que perder tiempo ejecutando continuamente
rutinas para consultar el estado del perifrico. El inconveniente es que el dispositivo debe tener los
circuitos electrnicos necesarios para acceder al sistema de interrupciones del computador.

[editar]Importancia de las interrupciones


El mecanismo de tratamiento de las interrupciones permite al SO utilizar la CPU en servicio de una
aplicacin, mientras otra permanece a la espera de que concluya una operacin en un dispositivo
de E/S.

El hardware se encarga de avisar al SO cuando el dispositivo de E/S ha terminado y el SO puede


intervenir entonces, si es conveniente, para hacer que el programa que estaba esperando por el
dispositivo, se contine ejecutando.

En ciertos intervalos de tiempo puede convenir no aceptar seales de interrupcin. Por ello las
interrupciones pueden inhibirse por programa (aunque esto no deben poder hacerlo las mismas).

Un ejemplo de sincronismo por interrupcin es el almacenamiento de caracteres introducidos


mediante el teclado. Cuando se introduce un carcter, se codifica en el registro de datos del
dispositivo y adems se activa un bit del registro de estado quien crea una interrupcin en el
hardware. El procesador deja temporalmente la tarea que estaba completando y ejecuta la rutina
de atencin a la interrupcin correspondiente. El teclado almacena el carcter en el vector de
memoria intermedia ( tambin llamado buffer) asociada al teclado y despierta el proceso que haba
en el estado de espera de la operacin de entrada/salida.

[editar]Excepciones
Cuando la CPU intenta ejecutar una instruccin incorrectamente construida, la unidad de control
lanza una excepcin para permitir al SO ejecutar el tratamiento adecuado. Al contrario que en una
interrupcin, la instruccin en curso es abortada. Las excepciones al igual que las interrupciones
deben estar identificadas.
[editar]Clases de excepciones
Las instrucciones de un programa pueden estar mal construidas por diversas razones:

El cdigo de operacin puede ser incorrecto.


Se intenta realizar alguna operacin no definida, como dividir por cero.
La instruccin puede no estar permitida en el modo de ejecucin actual.
La direccin de algn operando puede ser incorrecta o se intenta violar alguno de sus
permisos de uso.
[editar]Importancia de las excepciones
El mecanismo de tratamiento de las excepciones es esencial para impedir, junto a los modos de
ejecucin de la CPU y los mecanismos de proteccin de la memoria, que las aplicaciones realicen
operaciones que no les estn permitidas. En cualquier caso, el tratamiento especfico de una
excepcin lo realiza el SO.

Como en el caso de las interrupciones, el hardware se limita a dejar el control al SO, y ste es el
que trata la situacin como convenga.

Es bastante frecuente que el tratamiento de una excepcin no retorne al programa que se estaba
ejecutando cuando se produjo la excepcin, sino que el SO aborte la ejecucin de ese programa.
Este factor depende de la pericia del programador para controlar la excepcin adecuadamente.

[editar]Componentes de un sistema operativo