Diferencia entre revisiones de «Interrupción»

De Wikipedia, la enciclopedia libre
Contenido eliminado Contenido añadido
he aumentado la información disponible en la página
Diegusjaimes (discusión · contribs.)
m Revertidos los cambios de 84.236.200.110 a la última edición de Muro Bot
Línea 50: Línea 50:
== Interrupciones por excepción (Trap) ==
== Interrupciones por excepción (Trap) ==
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 ll.
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 ll.

DIRECCIÓN COMIENZO

-Direcciones fijas (interrupciones no sectorizadas)
Las direcciones se fijan y definen a nivel de los circuitos electrónicos de la CPU.

INTERRUPCIONES VECTORIZADAS
El dispositivo que solicita una interrupción suministra de algún modo la dirección de la rutina de servicio.

-Direccionamiento absoluto: El periférico suministra la dirección completa de su rutina de tratamiento.
-Direccionamiento relativo: Se envía parte de la dirección, que deberá ser completada por la CPU.
La ISR para un dispositivo determinado siempre debe empezar en la misma localización.
-Direccionamiento relativo indirecto: La dirección que envía el periférico es la posición relativa en una tabla, en MP, que contiene las direcciones de las rutinas de tratamiento=VECTORES INTERRUCION
Las señales de dirección se pueden enviar por un bus especial, por un bus datos o por el bus de direcciones.

IDENTIFICAIÓN FUENTE DE INTERRUPCIÓN
-Múltiples líneas de interrupción con un dispositivo en cada línea.
-Una o múltiples líneas de interrupción, con más de un dispositivo por línea. La identificación de dispositivo puede hacerse por software o hardware.
-Software (dirección salto única):La ISR identifica al dispositivo (POLLING O SONDEO)
-Hardware: (Interrupciones vectoriales).

PRIORIDAD INTERRUPCIONES
-Interrupciones simultáneas. Una interrupción no se acepta hasta que la instrucción que estaba siendo ejecutada termine.
-Interrupciones anidadas. Se puede producir una interrupción antes de haber resuelto completamente la anterior.

INTERRUPCIONES SIMULTÁNEAS
-Si hay un solo dispositivo por cada línea, la CPU acepta la solicitud que llega por la línea de mayor prioridad.
-Cuando varios dispositivos comparten una única línea de solicitud de interrupción:
-POLLING O SONDEO: la prioridad se implanta de forma automática según el orden en el que se encuentran los dispositivos.
-ENCADENAMIENTO ‘DAISY CHAIN’: El dispositivo que esté eléctricamente más cercano a la CPU tendrá la mayor prioridad.

POLLING
El ordenador dispone de una única línea de interrupción, que se organiza en colector abierto. La ISR testea los biestables de interrupción de los dispositivos. La asignación de prioridad se hace en el orden en que la rutina de tratamiento de información analiza los biestables.

DASSY CHAIN
Se basa en dos señales:
___
INT Petición de interrupción

____
INTA Concesión o aceptación de interrupción
____
La señal INTA sirve de testigo para que solo uno sea atendido. Cuando sea igual a 0, se congelan los biestables, la ISR puede determinar que dispositivo interrumpió leyendo los biestables BICON. Se pueden usar vectores de interrupción.

INTERRUPCIONES ANIDADAS
1.-Inhabilitar las interrupciones durante la ejecución de la ISR
2.-Permitir que la CPU acepte la segunda solicitud de interrupción, durante la ejecución de la ISR, si su prioridad es mayor.

INHIBICIÓN
1.-desactivar todas las interrupciones.
2.-desactivar interrupciones de inferior o igual prioridad.
3.-desactivar de forma selectiva determinados niveles de interrupción.




[[Categoría:Interrupciones| ]]
[[Categoría:Interrupciones| ]]

Revisión del 21:11 22 mar 2010

Interrupción (también conocida como interrupción 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 Input Output System).

Las interrupciones surgen 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. Este método presentaba el inconveniente de ser muy ineficiente, ya que el procesador constantemente consumía tiempo en realizar todas las instrucciones de sondeo.

El mecanismo de interrupciones fue la solución que permitió al procesador desentenderse de esta problemática, y delegar en el dispositivo la responsabilidad de comunicarse con el procesador cuando lo necesitaba. El procesador, en este caso, no sondea a ningún 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 información, una condición de error, etc.).

Funcionamiento del mecanismo de interrupciones

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 (operación llamada comúnmente enmascarar por la utilización de una máscara), y establecer prioridades entre las distintas interrupciones habilitadas. 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 (sin controlador de interrupciones integrado) 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 una petición del dispositivo asociado a dicha IRQ.

Las rutinas de interrupción generalmente toman un pequeño tiempo de ejecución y la mayoría no pueden ser interrumpidas cuando se están atendiendo, porque al entrar en ellas se almacena el estado de los registros en una pila y si se interrumpen muchas veces, la pila se puede desbordar.

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 en la pila en el paso 2 y retorna al programa que se estaba usando anteriormente.

Mecanismo de interrupciones en un 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.

Interrupciones por software

También se denomina interrupción (o interrupción por software) a las llamadas al sistema operativo mediante una instrucción, normalmente de Entrada/Salida.


Una interrupción por software, se prevé en qué momento de la ejecución de un programa sucederá. En general actúa de la siguiente manera:


. Un programa que se venía ejecutando luego de su instrucción I5, llama al Sistema Operativo, por ejemplo para leer un archivo de disco.

. A tal efecto, luego de I5 existe en el programa, la instrucción de código de máquina CD21, simbolizada INT 21 en Assembler, que realiza el requerimiento del paso 1. Puesto que no puede seguir le ejecución de la instrucción I6 y siguientes del programa hasta que no se haya leído el disco y esté en memoria principal dicho archivo, virtualmente el programa se ha interrumpido, siendo, además, que luego de INT 21, las instrucciones que se ejecutarán no serán del programa, sino del Sistema Operativo.

. La ejecución de INT 21 permite hallar la subrutina del Sistema Operativo.

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

. Luego de ejecutarse la subrutina del Sistema Operativo, y una vez que se haya leído el disco y verificado que la lectura es correcta, el Sistema Operativo ordenará reanudar la ejecución del programa autointerrumpido en espera.

. La ejecución del programa se reanuda.

Interrupciones por excepción (Trap)

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 ll.