Sistema Operativo
daguilarz7 de Marzo de 2012
3.394 Palabras (14 Páginas)554 Visitas
Vector de Interrupciones
Una petición de interrupción IRQ ("Interrupt Request") es una señal que se origina en un dispositivo hardware (por ejemplo, un periférico), para indicar al procesador que algo requiere su atención inmediata; se solicita al procesador que suspenda lo que está haciendo para atender la petición.
Hemos señalado que las interrupciones juegan un papel fundamental, en especial en la operación de dispositivos E/S, ya que les permite enviar estas peticiones a la UCP. Sin ellas el sistema debería chequear constantemente los dispositivos para comprobar su actividad, pero las interrupciones permiten que los dispositivos puedan permanecer en silencio hasta el momento que requieren atención del procesador.
Principio de funcionamiento
Cuando un dispositivo reclama atención del procesador es para que este haga algo. Este "algo" es lo que se conoce como servicio; controlador o gestor de la interrupción, ISR ("Interrupt service routine"). En cualquier caso se trata siempre de ejecutar un programa situado en algún lugar de la memoria RAM o en la ROM-BIOS. Ocurre que las direcciones de inicio de estos programas, que se conocen como vectores de interrupción, se copian en una tabla de 1024 Bytes que se carga al principio de la memoria de usuario (direcciones 0000h a 0400h) durante el proceso de inicio del sistema, razón por la cual estas rutinas se conocen también como servicios del BIOS.
La citada tabla se denomina tabla de vectores de interrupción IDT ("Interrupt Description Table") y en sus 1024 bytes pueden almacenarse 256 vectores de 4 bytes. Es decir, los vectores de interrupción son punteros de 32 bits, numerados de 0 a 255, que señalan las direcciones donde comienza la rutina que atiende la interrupción.
Como veremos a continuación, el diseño del PC solo permite 16 interrupciones distintas, por lo que puede parecer extraño que se hayan previsto 256 vectores para atenderlas. La razón es que además de los servicios del BIOS propiamente dichos, se cargan las direcciones de inicio de otras rutinas del Sistema Operativo, los denominados servicios del Sistema Incluso es posible cargar direcciones para rutinas específicas de usuario.
Al diseñar el 8088, Intel estableció un reparto de estos vectores, reservando los 5 primeros para uso interno del procesador (precisamente para atender las excepciones.
INTERRUPCIONES DEL SISTEMA OPERATIVO EN EL HARDWARE
Interrupción 00H: División entre cero.
Interrupción 01h: un solo paso.
Interrupción 02h: interrupción no enmascarable.
Interrupción 03h: punto de ruptura.
Interrupción 04h: desbordamiento.
Interrupción 05h: imprime pantalla.
Interrupción 08h: sistema del cronómetro.
Interrupción 09h: interrupción del teclado.
Interrupción 0bh,
Interrupción 0ch: estas dos son para el control de dispositivo serial.
Interrupción 0dh,
Interrupción 0fh: estas son para el control del dispositivo paralelo.
Interrupción 0eh: control disco flexible.
Interrupción 10h: servicios de video.
Interrupción 11h: obtener equipo instalado. determinación equipo.
Interrupción 13h: obtención tamaño memoria.
Interrupción 14h: comunicaciones i/o.
Interrupción 15h: servicios sistema.
Interrupción 16h: entrada teclado.
Interrupción 17h: salida impresora.
Interrupción 18h: entrada basic de rom.
Interrupción 19h: cargador de arranque.
Interrupción 1ah: lee y pone hora.
Interrupción 1bh: tomar control en
interrupción del teclado.
Mecanismos DMA(Acceso Directo a Memoria)
Antes de empezar a hablarles sobre lo que son los métodos y técnicas de entrada y salida de datos debemos conocer los principios de estas por lo cual es conveniente hablar sobre el medio de transporte de la información, tal y como lo es el bus de direcciones, para que una vez comprendido el concepto de este nos sea mas fácil entender los términos y el contenido en general sobre la entrada y salida de datos.
Bus de direcciones:
Es utilizado por el microprocesador para señalar la celda de memoria (o el dispositivo de E/S) con el que se quiere operar. El tipo de operación será de lectura o de escritura y los datos implicados viajarán por el bus de datos.
Por él circula la expresión binaria de la dirección de memoria a la cual el microprocesador quiere acceder. Tiene sentido de flujo unidireccional desde el microprocesador hacia la memoria. Una vez localizados los datos perdidos, su transmisión hacia el microprocesador (o hacia donde sea) se hará a través del bus de datos.
Los dispositivos de E/S intercambian la información con el microprocesador mediante los puertos de E/S. Cada puerto está asociado con un determinado dispositivo y tiene una dirección que lo identifica.
El ancho de este bus también es una medida de la potencia del microprocesador, ya que determina la cantidad de memoria a la que éste puede acceder, es decir, la cantidad de espacio direccionable. El espacio de direcciones es el rango de valores distintos que el microprocesador puede seleccionar. La cantidad máxima de direcciones disponibles será 2 a la n, siendo n el número de líneas del bus de direcciones.
Módulo de E/S
• Cada controlador está a cargo de un tipo específico de dispositivo.
• Dependiendo del controlador, pueden ester varios dispositivos conectados al mismo controlador.
• El controlador se encarga de mover datos entre el dispositivo periferico que controla y el buffer de almacenamiento local. El tamaño del buffer varía de un controlador a otro y depende del dispositivo que controla.
Son posibles tres técnicas para las operaciones de E/S:
• E/S programada
• E/S mediante interrupciones
• DMA
E/S Programada
Los datos se intercambian entre el CPU y el módulo de E/S. El CPU ejecuta un programa que controla directamente la operación de E/S, incluyendo la comprobación del estado del dispositivo, el envío de la orden de lectura o escritura y la transferencia del dato. Cuando el CPU envía la orden debe esperar hasta que la operación de E/S concluya. Si el CPU es más rápido, éste estará ocioso. El CPU es el responsable de comprobar periódicamente el estado del módulo de E/S hasta que encuentre que la operación ha finalizado.
Normalmente habrá muchos dispositivos de E/S conectados al sistema a través de los módulos de E/S. Cada dispositivo tiene asociado un identificador o dirección. Cuando el CPU envía una orden de E/S, la orden contiene la dirección del dispositivo deseado.
E/S mediante Interrupciones
El problema con E/S programada es que el CPU tiene que esperar un tiempo considerable a que el módulo de E/S en cuestión esté preparado para recibir o transmitir los datos. El CPU debe estar comprobando continuamente el estado del módulo de E/S. Se degrada el desempeño del sistema.
Una alternativa es que el CPU tras enviar una orden de E/S continue realizando algún trabajo útil. El módulo de E/S interrumpirá al CPU para solicitar su servicio cuando esté preparado para intercambiar datos. El CPU ejecuta la transferencia de datos y después continua con el procesamiento previo.
Se pueden distinguir dos tipos: E/S síncrona y E/S asíncrona
• E/S Síncrona: cuando la operación de E/S finaliza, el control es retornado al proceso que la generó. La espera por E/S se lleva a cabo por medio de una instrucción wait que coloca al CPU en un estado ocioso hasta que ocurre otra interrupción. Aquellas máquinas que no tienen esta instrucción utilizan un loop. Este loop continua hasta que ocurre una insterrupción transfiriendo el control a otra parte del sistema de operación. Sólo se atiende una solicitud de E/S por vez. El sistema de operación conoce exactamente que dispositivo está interrumpiendo. Esta alternativa excluye procesamiento simultáneo de E/S.
• E/S Asíncrona: retorna al programa usuario sin esperar que la operación de E/S finalice. Se necesita una llamada al sistema que le permita al usuario esperar por la finalización de E/S (si es requerido). También es necesario llevar un control de las distintas solicitudes de E/S. Para ello el sistema de operación utiliza una tabla que contiene una entrada por cada dispositivo de E/S (Tabla de Estado de Dispositivos).
• La ventaja de este tipo de E/S es el incremento de la eficiencia del sistema. Mientras se lleva a cabo E/S, el CPU puede ser usado para procesar o para planificar otras E/S. Como la E/S puede ser bastante lenta comparada con la velocidad del CPU, el sistema hace un mejor uso de las facilidades.
Inicio de la Operación de E/S
• Para iniciar una operación de E/S, el CPU actualiza los registros necesarios en el módulo de E/S.
• El módulo de E/S examina el contenido de estos registros pare determinar el tipo de acción a ser llevada a cabo. Por ejemplo, si encuentra un requerimiento de lectura, el módulo de E/S empezará a transferir data desde el dispositivo a los buffers locales. Una vez terminada la transferencia, el módulo informa al CPU que la operación ha terminado por medio de una interrupción.
Procesamiento de la Interrupción
Cuando un dispositivo de
...