domingo, 10 de abril de 2011

IRQ Y ESTACIONES E/S

IRQ

Interrupción (también conocida como corrupción del 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 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.

Pasos para el procesamiento de 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.

Lineas de petición de interrupcion El bus de control dispone de líneas específicas para el sistema de interrupciones. En el PC XT existen 8, numeradas del 0 al 7, aunque las dos primeras están asignadas al temporizador y al teclado, con lo que solo quedaban 6 líneas para otros dispositivos, que aparecen como tales en el bus de control (IRQ2- IRQ7). A partir del modelo AT se añadieron otras 8 líneas, numeradas del 8 al 15, mediante un segundo procesador PIC, aunque la tecnología empleada exigió colgarlo de la línea IRQ2, de forma que esta línea se dedica a atender las interrupciones del segundo controlador a través de la línea 9 de este último, y la línea 8 se dedicó al reloj de tiempo real, un dispositivo que no existía en los modelos XT.
Tipos de interrupciones
En este subapartado vamos a hacer una clasificación 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 síncronas o asíncronas:
  • Interrupciones hardware: Estas son asíncronas a la ejecución del procesador, es decir, se pueden producir en cualquier momento independientemente de lo que esté haciendo la 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 : Son aquellas que se producen de forma síncrona a la ejecución del procesador y por tanto podrían predecirse si se analiza con detenimiento la traza del programa que en ese momento estaba siendo ejecutado en la CPU. Normalmente las causas de estas interrupciones suelen ser realizaciones de operaciones no permitidas tales como la división por 0, el desbordamiento, el acceso a una posición de memoria no permitida, etc.
  • Interrupciones software o excepciones: A menudo se tiende a confundir las interrupciones software y las trampas, ya que su naturaleza es bastante similar. Sin embargo las excepciones se producen al realizar una operación no permitida por lo que de algún modo podemos decir que no es controlada directamente por el programador sino que, por un fallo al programar, se producen. No obstante las trampas sí que son provocadas por el programador. Para provocar una trampa existen distintas instrucciones en el código máquina que permiten al programador producir una interrupción al ejecutar dicha instrucción. Suelen tener nemotécnicos tales como INT. Suelen ser de vital importancia ya que a partir de las trampas se pueden pedir al SO que realice determinadas funciones, para ello, en DOS se realiza la instrucción INT 0x21 y en Unix se utiliza INT 0x80.

Direccion de E/S

Es una dirección de memoria en la que escriben y leen el procesador central del sistema y la tarjeta, de modo que les sirve de bloque de memoria para el intercambio mutuo de datos. Tamaños tópicos de este bloque de memoria (o buffer) son 16 y 32 kbytes. Este sistema de intercambio de datos entre el host y la tarjeta es bastante rápido, por lo que es muy utilizado en la actualidad, pero necesita procesadores más eficientes. La dirección de E/S se suele expresar en hexadecimal, por ejemplo, DC000H.
Direccioón de puerto de E/S.
El puerto de Entrada/Salida es un conjunto de bytes de memoria en los que procesador central y periféricos intercambian datos de Entrada/Salida y del estado en el que se efectúan las operaciones.
Tipo de transceptor. Algunas tarjetas de red incorporan varias salidas con diversos conectores, de modo que se puede escoger entre ellos en función de las necesidades. Algunas de estas salidas necesitan transceptor externo y hay que indicárselo a la tarjeta cuando se configura.

Tradicionalmente, estos parámetros se configuraban en la tarjeta a través de puentes (jumpers) y conmutadores (switches). Actualmente está muy extendido el modo de configuración por software, que no requiere la manipulación interna de hardware: los parámetros son guardados por el programa configurador que se suministra con la tarjeta en una memoria no volátil que reside en la propia tarjeta.

Algunas tarjetas de red incorporan un zócalo para inserción de un chip que contiene una memoria ROM (de sólo lectura) con un programa de petición del sistema operativo del host a través de la red. De este modo, el host puede cargar su sistema operativo remotamente.
En la última generación de tarjetas, la configuración se realiza de manera automática: elección del tipo de conector, parámetros de comunicación con el sistema, etc., aunque requiere hardware especializado en el host. Esta tecnología de autoconfiguración de llama Plug&Play (enchufar y funcionar).


No todos los adaptadores de red sirven para todas las redes. Existen tarjetas apropiadas para cada tecnología de red: Ethernet, Token Ring, FDDI, etc.

Además, algunas tarjetas que sirven para el mismo tipo de red tienen parámetros de acuerdo con ciertas especificaciones. Por ejemplo, una tarjeta Ethernet puede estar configurada para transmitir a 10 Mbps o a 100 Mbps, dependiendo del tipo de red Ethernet a la que se vaya a conectar. También se puede elegir el tipo de conexión: 10Base2, 10Base5, 10BaseT, 100BaseT, etc.

Algunos adaptadores de red no se conectan directamente al bus de comunicaciones interno del ordenador, sino que lo hacen a través de otros puertos de comunicación serie o paralelo. Requieren controladores especiales para su correcto funcionamiento y su rendimiento no es tan alto como en las tarjetas conectadas al bus.




JOSE ABELARDO CORRAL MORALES
PATRICIA MARIA ALBAÑEZ CAZARES
CAREEN GPE SOTO BARRIGA

1 comentario: