INTERRUPCIONES Y ENCUESTAS

Interrupciones

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.



Debido a que el procesador no puede procesar múltiples datos al mismo tiempo (procesa un dato a la vez) el sistema de multitareas es en realidad una sucesión de fragmentos de instrucciones de muchas tareas diferentes. Es posible suspender momentáneamente un programa que se estaba ejecutando mediante una interrupción que dure el tiempo que lleva una rutina de servicios de interrupción. Luego, el programa interrumpido puede continuar ejecutándose. Existen 256 direcciones de interrupción diferentes.

Una interrupción se realiza cuando un componente del hardware del ordenador requiere la interrupción del hardware. Un ordenador posee muchos periféricos, generalmente necesitan utilizar recursos del sistema, aunque sólo sea para comunicarse con éste.

Cuando necesitan un recurso, envían una petición de interrupción al sistema para que éste les preste atención. Cada periférico cuenta con un número de interrupción llamado IRQ (Interruptionrequest [Petición de interrupción]). Una manera de poder entender este proceso es imaginar a cada periférico tirando de una "cuerda" conectada a una campana para indicarle al ordenador que requiere de su atención.

De hecho, la "cuerda" es una línea física que conecta la ranura a la placa madre. Para una ubicación ISA de 8 bits, por ejemplo, hay 8 líneas IRQ (Interruption Request [Petición de Interrupción]) que conectan la ranura ISA de 8 bits a la placa madre, IRQ 0 a IRQ7. Estas IRQ son controladas por un "controlador de interrupciones" que verifica qué IRQ tiene mayor prioridad. Para las ranuras de 16 bits, se agregan las IRQ que van desde la 8 a la 15, las cuales requieren de un segundo controlador de interrupciones. La conexión entre los dos grupos de interrupciones se realiza por medio de la IRQ 2 que está conectada a la IRQ 9 (denominada "cascada"). El término "cascada" se puede pensar como una manera de "insertar" las IRQ del 8 al 15 entre las IRQ del 1 al 3:


Dado que la prioridad se otorga a medida que va aumentando el orden en el número de IRQ, y debido a que las IRQ del 8 al 15 se insertan entre las IRQ del 1 al 3, el orden de prioridad es el siguiente:

0 > 1 > 8 > 9 > 10 > 11 > 12 > 13 > 14 > 15 > 3 > 4 > 5 > 6 > 7

Estas peticiones pueden ser generadas no solo por dispositivos hardware, también por los programas, e incluso en circunstancias especiales (errores generalmente) por el propio procesador.

Básicamente que existen tres posibles orígenes de estas peticiones: Hardware, Software, y del procesador.


Principio de funcionamiento

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 ( 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). A continuación estableció otros 27 de uso reservado, aunque no desveló ningún uso específico para algunos de ellos. A partir de aquí, los vectores 32 a 255 estaban disponibles. El esquema resultante se muestra en la tabla adjunta.



Aunque teóricamente las interrupciones 0 a 31 estaban restringidas, IBM y Microsoft utilizaron algunas de ellas sin respetar las indicaciones de Intel. En concreto, IBM y Microsoft utilizaron algunas para los servicios BIOS. Es significativo que, a pesar de haber sufrido ampliaciones, la especificación inicial se mantiene para las 31 interrupciones iniciales. Lo que hace posible que pueda cargarse un Sistema PC-DOS 1.0 en una máquina Pentium.

El "modus operandi" es como sigue: Cuando se recibe la petición de interrupción, el procesador termina la instrucción que está ejecutando; guarda el contenido de los registros; deshabilita el sistema de interrupciones; ejecuta el "servicio", y vuelve a su punto de ejecución. El servicio suele terminar con una instrucción IRET ("InterruptReturn") que restituye el contenido de los registros y vuelve a habilitar el sistema de interrupciones. En cierto sentido, el proceso es similar al que ocurre cuando aparece la invocación de una función en el código de un programa.

Existen tres tipos de elementos de soporte:

Ø  Ciertas líneas específicas (IRQ's) en el bus de control

Ø  El controlador de interrupciones (PIC). Un procesador específico que realiza cierta elaboración previa de las peticiones antes de entregar la señal a la CPU.

Ø  Ciertas patillas específicas en el procesador.

El resumen del proceso es como sigue:Un periférico, tarjeta o dispositivo necesita atención; a tal efecto pone en tensión baja una de las líneas IRQ del bus de control (que le había sido asignada). La señal es recogida por el PIC, que la procesa, la clasifica, y envía una señal a una de las patillas del procesador. A continuación el procesador se da por notificado y pregunta qué tipo de excepción debe atender. Como respuesta, PIC asigna un número de servicio (0-256) en forma de un octeto que es colocado en el bus de datos, con lo que estamos en el punto inicial del proceso.

Para la asignación del número de servicio a partir de una de las 16 solicitudes de las IRQ, el PIC realiza un cierto proceso ("InterruptHandlingRoutine") a partir de los datos de programación inicial y del estado actual del propio sistema de interrupciones. Por ejemplo, puede estar procesándose el servicio de una interrupción, pero la rutina está suspendida momentáneamente porque se ha solicitado otra interrupción de prioridad más alta, o tal vez se recibe otra interrupción del mismo periférico antes de haber atendido la anterior, Etc.


Líneas de petición de interrupción

El bus de control dispone de líneas específicas para el sistema de interrupciones ( H2). 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.

Aunque internamente se manejan 16 líneas, no todas tienen contacto en los zócalos del bus externo; Son las marcadas con asterisco (*) en la tabla que sigue . La razón de esta ausencia en los zócalos de conexión es que son de asignación fija, y nadie más que ciertos dispositivos instalado en la propia placa tiene que utilizarlas. En concreto la línea NMI está asignada al mecanismo de control de paridad de la memoria; la línea 0 está asignada al cronómetro del sistema ( H2) y la línea 1 al chip que controla el teclado (dispositivos que pueden requerir atención urgente por parte del procesador). Es costumbre denominar IRQx a las que tienen prolongación en el bus. Teóricamente las restantes líneas podrían ser asignadas a cualquier nuevo dispositivo, pero en la práctica algunas están reservadas a dispositivos estándar. Por ejemplo, IRQ3 está casi siempre asignado al puerto serie COM2 y IRQ4 a COM1; IRQ6 al controlador estándar de disquetes y IRQ7 al puerto de impresora LPT1. La tabla 1 muestra las asignaciones clásicas para el XT y el AT.



Cuando se instala un dispositivo E/S que puede necesitar atención del procesador, debe asignársele una IRQ adecuada. Dicho en otras palabras, cuando requiera atención debe enviar una señal en la línea IRQ especificada. Inicialmente esta asignación se efectuaba de forma manual, por medio de puentes ("Jumpers") en la placa o dispositivo, pero actualmente esta selección puede hacerse por software. Los dispositivos son de enchufar y usar PnP ("Plug and play").

A continuación se nuestra la distribución de líneas IRQ en un ordenador típico (AT), bajo Windows-98SE.

Los usuarios de Windows 98 pueden comprobar la asignación de IRQ's a los diversos dispositivos del sistema mediante el programa msinfo032.exe. Generalmente en C:\Archivos de programa\Archivos comunes\Microsoft Shared\MSINFO

IRQ Utilización

0 Cronómetro del sistema
1 Teclado estándar de 101/102 teclas o MS Natural Keyboard
2 Controlador programable de interrupciones
3 Puerto de infrarrojos rápidos ThinkPad de IBM
4 Puerto de comunicaciones (COM1)
5 CrystalSoundFusion(tm) GameDevice
6 Controlador estándar de disquetes
7 Puerto de impresora (LPT1)
8 Sistema CMOS/reloj en tiempo real
9 (libre)
10 (libre)
11 Marcador IRQ para manejo de PCI
11 Marcador IRQ para manejo de PCI
11 Marcador IRQ para manejo de PCI
11 Marcador IRQ para manejo de PCI
11 Controlador universal de host Intel 82371AB/EB PCI a USB
11 CrystalSoundFusion(tm) PCI Audio Accelerator
11 LucentWin Modem
11 Intel(R) PRO/100 SP Mobile Combo Adapter
11 Texas Instruments PCI-1450 CardBusController
11 Texas Instruments PCI-1450 CardBusController
11 RAGE MOBILITY-M AGP (English)
12 Puerto de mouse compatible con PS/2
13 Procesador de datos numéricos
14 Controlador estándar para disco duro Bus Mastering IDE
15 Controlador estándar para disco duro Bus Mastering IDE


Controlador PIC

Las peticiones hardware de interrupción del PC son manejadas por un chip, conocido como PIC#1 ("ProgrammableInterruptController"). Originariamente era un 8259A, que puede manejar 8 peticiones (IRQ0/IRQ7), pero pronto se hizo evidente que eran un número excesivamente corto, por lo que en 1984 IBM añadió un segundo controlador PIC#2 en el modelo AT, que podía manejar las peticiones IRQ8 a IRQ15, aunque las interrupciones utilizables resultantes no fuesen de 16 como cabría suponer, por las razones apuntadas en el párrafo anterior.

Nivel de prioridad

El PIC dispone de 16 niveles de prioridad, numerados del 0 al 15, de forma que los de número más bajo se atienden antes que los de número más alto. La asignación a cada
nivel es como sigue:



Como puede verse, la prioridad más alta se asigna a las interrupciones no enmascarables (NMI), a las que nos referimos más adelante. A continuación se atienden IRQ0 e IRQ1; asignadas como hemos visto al cronómetro del sistema y al teclado (el cronómetro no puede ser interrumpido por nadie porque perdería la hora). Después se atienden las peticiones IRQ8 a IRQ15 del controlador esclavo, que hereda la prioridad de IRQ2 de la que está colgado (en realidad no existe IRQ2). A continuación se atienden las IRQ3 a IRQ7 de PIC#1. Las peticiones de prioridad más baja son las del controlador estándar de disquetes (IRQ6) y las del puerto de impresora LPT1 (IRQ7).

Físicamente, el 8259A es un chip de 28 patillas, 8 de las cuales conectan con las líneas IRQ0-IRQ7; ocho para el bus de datos (D0-D7), una entrada INTA ("InterruptAcknowledge") y una salida INTR ("InterruptRequest"). Aparte de otras auxiliares, como tensión de alimentación y masa. Como veremos a continuación, cuando el 8259A recibe una señal IRQ, activa la señal INTR que es recibida por el procesador.
Cuando este responde con un INTA, pone en el bus de datos un byte en el rango 0/256, que es identificado a su vez por el procesador como un número de interrupción.

Desde el punto de vista lógico, PIC #1 responde a las direcciones 020h-021h, mientras que PIC#2 lo hace en 0A0h-0A1h. Cada PIC dispone de tres registros de 1 byte; IRR, ISR e IMR, que en conjunto gobiernan las decisiones del dispositivo:

  • Registro de solicitud de interrupción IRR ("InterruptRequestRegister"). Cada bit de este registro controla el estado de una línea IRQ. Cuando se detecta una petición en una de estas líneas, el bit correspondiente del IRR es pueto a 1.
  • Registro de interrupciones activas ISR ("In ServiceRegister"). Cada bit indica si ya existe una interrupción activada en la línea correspondiente.
  • Registro de máscara de interrupciones IMR ("InterruptMaskRegister"). También aquí cada bit corresponde a una línea IRQ, e indica si esta permitida un interrupción de ese nivel en ese momento.

El PIC es un dispositivo complejo que realiza varias tareas; a continuación se muestra un resumen de ellas:


  • Puesto que existen muchos dispositivos que pueden solicitar interrupciones, es responsabilidad del PIC priorizarlas según el esquema indicado en el punto anterior, cuando existen varias IRQ's simultáneas [5].
  • Después de enviar una solicitud de interrupción y el procesador contesta que está listo para atenderla, debe enviar un número de interrupción (número de vector).
  • Mantiene un registro de que se está procesando una interrupción. Cuando esto sucede, no envía más peticiones del mismo dispositivo al procesador hasta que este le responde con una señal EOI ("End Of Interrupt"), indicando que la rutina de servicio precedente ha terminado, o puede aceptar otra interrupción.
  • Puede enmascarar de forma selectiva cualquiera de las 8 IRQ's que tiene conectadas (como se verá más adelante, es la única forma de enmascarar las interrupciones no enmascarables).

El 8259A tiene distintos modos de operación, uno de los cuales es el utilizado por los diseñadores del PC; esta selección se realiza vía software en los momentos iniciales. También se decide en este momento que número de interrupción deberá devolver el PIC en respuesta a las señales recibidas en las líneas IRQ.

Puntos importantes a destacar es que, como se ha señalado, se trata de un dispositivo programable; que esta programación es realizada por el BIOS en la fase de inicio, y que el PIC es una parte fundamental del mecanismo de excepciones hardware


Patillas del procesador

Otro elemento que interviene en el mecanismo de excepciones son ciertas patillas del procesador. Todos los miembros de la saga 8088 disponen de dos patillas, designadas INTR y NMI, para este servicio específico (H3.2.1). Sirven respectivamente para atender las interrupciones enmascarables y no enmascarables (nos referimos a ellas inmediatamente). A su vez, el procesador utiliza ciertas señales en algunas de sus patillas para generar un ciclo INTA ("InterruptAcknowledge"), que sirve para notificar al PIC que ha recibido la interrupción.



Tipos de interrupción

Atendiendo a su origen, en el PC existen tres tipos de interrupciones: Interrupciones hardware; interrupciones software, y excepciones del procesador.

  • Interrupciones hardware
   Ocurren cuando un dispositivo necesita atención del procesador y genera una señal eléctrica en la línea IRQ que tiene asignada. Esta señal es recogida y procesada por el controlador de excepciones PICantes de ser enviada al procesador, lo que puede realizarse de dos formas, según el tipo de interrupción sea enmascarable o no enmascarable.
  • Interrupciones software
Los procesadores Intel de la gama x86 y compatibles, disponen de una instrucción INT que permite generar por software cualquiera de los 256 tipos de interrupción anteriormente descritos ). El proceso seguido es exactamente el mismo que si se recibe una interrupción hardware en la patilla INTR, salvo que en este caso se conoce el tipo de interrupción, y no se requiere ningún ciclo INTA. Por ejemplo, en lenguaje ensamblador, la instrucción INT 21 invoca la interrupción 33d (21h), que en MS-DOS es la llamada a los servicios del Sistema. Este tipo de interrupciones son de prioridad más alta que las de hardware (enmascarables y no enmascarables), de forma que si se recibe una interrupción hardware mientras que se ejecuta una software, esta última tiene prioridad.
Este tipo de interrupciones son utilizadas tanto por el Sistema Operativo como por los programas de usuario que pueden instalar las suyas particulares (hemos señalado, que algunas de las 255 posiciones de la tabla de vectores de interrupción están desocupadas). Precisamente, aquellas posiciones de la IDT que señalan a posiciones dentro de la ROM-BIOS (por encima de la dirección F0000h H5.1) se refieren a interrupciones relacionadas con servicios de la BIOS, mientras que las situadas en la zona de memoria convencional, se refieren a interrupciones instaladas por el Sistema o los programas de aplicación.

  • Excepciones del procesador
Durante el funcionamiento del procesador pueden ocurrir circunstancias excepcionales; es usual citar como ejemplo el caso de una división por cero. En estos casos, el procesador genera una excepción, que es tratada como si fuese una interrupción software, con la diferencia de que el número de interrupción asociado depende del tipo de excepción.

En el caso de la división por cero el número asociado es cero. Este era el único tipo de excepción de procesador prevista en el 8088, pero en los modelos sucesivos de la saga x86 y Pentium esta posibilidad fue ampliándose paulatinamente.


Orden de prioridad

Las interrupciones tienen un orden de prioridad, de forma que si ocurren dos de forma simultánea es atendida la de prioridad más alta. El orden en que se atienden es el siguiente:

1. Excepciones del procesador.
2. Interrupciones software.
3. Interrupciones hardware no enmascarables.
4. Interrupciones hardware enmascarables.


Conflictos de hardware y IRQ



Cuando tiene un problema que cree que está relacionado con la configuración del hardware de su máquina, lo primero que debe hacer es identificarlo. Es decir, debe tratar de eliminar todas las variables posibles, generalmente abriendo la máquina y quitando, uno por uno, todos los elementos que pudieran causar un conflicto, o aislándolos por medio de un software (que esté instalado en su sistema operativo), hasta encontrar el componente que provocó el conflicto.

Interrupciones en Windows

La descripción anterior corresponde a lo que ocurre en el hardware, o lo que es lo mismo, en una aplicación trabajando en modo real; es la descripción clásica del mecanismo de interrupciones de una aplicación bajo MS-DOS.

Hemos señalado que en los sistemas Windows, cada aplicación corre en una máquina virtual MV, de modo que está más alejada del hardware que las aplicaciones que se ejecutan en modo real. En este caso, las aplicaciones interactúan con dispositivos virtuales VDs ("Virtual devices") a través de controladores virtuales de dispositivos VxDs.

En concreto, el controlador PIC es virtualizado por el VPICD ("Virtual PIC Device"); este es un controlador virtual proporcionado de forma estándar por Windows que emula las funciones del auténtico controlador programable de interrupciones. Esta simulación implica reflejar las interrupciones en las máquinas virtuales y simular E/S, por ejemplo, reconocer cuando una MV emite un final de interrupción EOI ("End of interrupt").

Lo mismo que ocurre en modo real, durante la inicialización del controlador virtual VPICD, se establece un manejador de excepciones por defecto para cada petición de interrupción (IRQ). Estos manejadores determinan que máquina virtual será afectada y con que interrupción. También arbitran los posibles conflictos cuando diversas máquinas virtuales intentan desenmascarar la misma interrupción.

Cualquier interrupción no enmascarada cuando se inicia Windows es considerada una interrupción global. Este tipo de interrupciones serán reflejadas en la máquina virtual que esté en ejecución en ese momento (a su vez la MV puede enmascarar o no enmascarar esta IRQ).

Si una MV desenmascara una IRQ que fue enmascarada cuando se inició Windows, es declarada propietaria de dicha interrupción, y la IRQ será reflejada exclusivamente en su máquina propietaria (si alguna otra MV intenta desenmascarar dicha interrupción, Windows terminará la segunda MV, y puede señalar la necesidad de reiniciar el sistema).


Si algún otro VxD virtualiza una petición IRQ, es su responsabilidad determinar que MV debe recibir las interrupciones y arbitrar los posibles conflictos. Además, el controlador por virtual por defecto VPICD dejará de proporcionar soporte para dicha IRQ.

Webgrafia:
http://www.sc.ehu.es/acwlaroa/SO2/Apuntes/Cap5.pdf
http://www.ctr.unican.es/asignaturas/so/cap8-2en1.pdf
http://es.wikipedia.org/wiki/Perif%C3%A9rico_de_Entrada/Salida#Perif.C3.A9rico_de_Entrada_.C3.B3_Salida.2C_.C3.BAnicamente
http://www.monografias.com/trabajos33/dispositivos/dispositivos.shtml

ESQUEMAS DE CONEXIÓN Y MANEJO DE DISPOSITIVOS

Introducción: El sistema de E/S es la parte del sistema operativo que se ocupa de facilitar el manejo de los dispositivos de E/S ofreciendo una visión lógica simplificada de los mismos que pueda ser usada por otros componentes del sistema operativo (como el sistema de archivos) o incluso por el usuario. Mediante esta visión lógica se ofrece a los usuarios un mecanismo de abstracción que oculta todos los detalles relacionados con los dispositivos físicos, así como del funcionamiento real de los mismos. El sistema operativo debe controlar el funcionamiento de todos los dispositivos de E/S para alcanzar los siguientes objetivos:

Ø  Facilitar el manejo de los dispositivos de E/S. Para ello debe ofrecer una interfaz entre los dispositivos y el resto del sistema que sea sencilla y fácil de utilizar.
Ø  Optimizar la E/S del sistema, proporcionando mecanismos de incremento de prestaciones donde sea necesario.
Ø  Proporcionar dispositivos virtuales que permitan conectar cualquier tipo de dispositivo físico sin que sea necesario remodelar el sistema de E/S del sistema operativo.
Ø  Permitir la conexión de dispositivos nuevos de E/S, solventando de forma automática su instalación usando mecanismos del tipo plug&play.

En la conexión de un dispositivo de E/S a una computadora distinguen dos elementos:

Ø  Periféricos o dispositivos de E/S. Elementos que se conectan a la unidad central de proceso a través de las unidades de entrada/salida. Son el componente mecánico que se conecta a la computadora.

Ø  Controladores de dispositivos o unidades de E/S. Se encargan de hacer la transferencia de información entre la memoria principal y los periféricos. Son el componente electrónico a través del cual se conecta el dispositivo de E/S. Tienen una conexión al bus de la computadora y otra para el dispositivo (generalmente mediante cables internos o externos).

 El sistema operativo inicia operaciones de E/S cuando se lo solicite un proceso, pero se desconoce cuándo termina, puesto que dependerá de la velocidad del hardware de E/S, de su tecnología y de otros aspectos físicos. Para conocer el momento de terminación de la operación hay dos métodos, independientemente del tipo de conexión utilizada:

Ø  Polling: Consiste en comprobar constantemente el estado del dispositivo. Tiene el inconveniente de ocupar el procesador un tiempo indeseado.

Ø  Interrupciones: El procesador continua ejecutando otros procesos y solo cuando el dispositivo concluye la operación llama la atención del procesador, interrumpiéndole para que tenga conocimiento del hecho, y además que pueda realizar las gestiones derivadas de dicha interrupción.

Los dispositivos complejos se conectan al ordenador a través de un controlador o adaptador, el cual contiene el estado del dispositivo, le controla y realiza la transferencia de datos. Cada controlador puede manejar varios dispositivos del mismo tipo y modelo.

Los controladores son tarjetas hardware que se conectan al ordenador a través del bus, y que tienen un conector para poder conectar el dispositivo al ordenador. Estas tarjetas adaptan los niveles de señal al bus del ordenador, y traduce las instrucciones que se envían al dispositivo o dispositivos que controlan.

Cada controlador tiene unos registros como vía de comunicación entre el procesador y los dispositivos controlados, conociéndose como registros del dispositivo o registros de E/S.

Estos registros tienen 4 misiones:

1. Informar del estado de dispositivo.
2. Transferir instrucciones al dispositivo.
3. Recibir datos desde el dispositivo.
4. Enviar datos al dispositivo.

El sistema operativo realizara las operaciones de E/S usando comandos específicos que entiende el controlador, y que recibe a través de estos registros. Cuando el controlador acepta un comando, el procesador no volverá a ocuparse de la operación de E/S hasta que reciba una interrupción indicándole que ha terminado el servicio solicitado. Gracias a los registros, el Sistema Operativo podrá conocer si la operación se realizó correctamente o no, si el dispositivo está apagado o tiene algún error hardware.

Buffering y Spooling

Con el fin de agilizar las operaciones de entrada y salida y descarga al procesador de estos trabajos, permitiendo que se pueda ejecutar los procesos simultáneamente con el trabajo de los periféricos, se diseñaron dos técnicas para conseguirlo, fueron el Buffering y Spooling.

Buffering

A veces la velocidad de los periféricos no se adapta a la velocidad del procesador, porque los periféricos son lentos o porque el proceso trabaja a ráfagas. Es decir, que necesita conjuntos de información para procesar de golpe. Para solucionar este problema y que ni los periféricos ni el procesador se deban esperar mutuamente, el sistema operativo utiliza una memoria intermedia llamada buffer. La función de esta memoria es amortiguar las diferencias de velocidad.

Cuando tenemos un buffer, el periférico produce información y el proceso la consume. El periférico sólo debe ponerse de acuerdo con el buffer y únicamente habrá problemas cuando el buffer este lleno. Por otro lado, el procesador sólo consumirá información del buffer y sólo deberá esperar cuando el buffer este vacío.

Spooling

El SPOOL (SimultaneousPerifhericalOperation On-Line) es una técnica que permite que las entradas y las salidas de un proceso tengan un paso intermedio en dispositivos de gran capacidad de almacenamiento. Esto permite que el computador trabaje con un proceso en concreto mientras los diferentes periféricos van sacando e incorporando información, de manera más lenta, al mismo tiempo. El ejemplo típico es el spool de impresora: un proceso puede obtener una gran cantidad de información en poco tiempo, y en cambio estos resultados pueden necesitar mucho tiempo para ser impresos. Otro caso muy corriente es el de trabajar con un procesador de textos y hacer una impresión de un documento relativamente largo. Si no se utiliza el spool, tanto el computador como el usuario no podrán hacer nada hasta que se termine de imprimir.

El modelo de dispositivos por puertos es clásico en las arquitecturas de Intel. En ellas, cuando se instala un dispositivo, a su controlador se le asigna un puerto de E/S, una interrupción hardware y un vector de interrupción. Para efectuar una operación de E/S la UCP ejecuta operaciones port o portout con la dirección de puerto del dispositivo y con parámetros para indicar qué registro se quiere manipular. Todas las operaciones de entrada/salida (pantalla gráfica, impresoras, ratón, discos, etc.) se realizan usando esas dos instrucciones de lenguaje máquina con los parámetros adecuados. El problema de este tipo de direccionamiento es que exige conocer las direcciones de E/S y programar las instrucciones especiales de E/S, lo que es significativamente distinto del modelo de memoria de la computadora. El otro modelo de direccionamiento de E/S es el modelo proyectado en memoria. Este modelo, típico de las arquitecturas de Motorola, asigna a cada dispositivo de E/S un rango de direcciones de memoria a través de las cuales se escribe sobre los registros del controlador. En este modelo no hay instrucciones específicas de E/S, sino que las operaciones se llevan a cabo mediante instrucciones máquina de manejo de memoria, lo que permite gestionar un mapa único de direcciones de memoria. Sin embargo, para no tener conflictos con otros accesos a memoria y para optimizar las operaciones, se reserva una zona de memoria física para asignar las direcciones de E/S.

Los dispositivos de almacenamiento secundario y terciario manejan la información en unidades de tamaño fijo, denominadas bloques, por lo que a su vez se denominan dispositivos de bloques. Estos bloques se pueden direccionar de manera independiente, lo que permite leer o escribir un bloque con independencia de los demás.

Los dispositivos de bloque lo son porque el hardware fuerza la existencia de accesos de un tamaño determinado. Un disco, por ejemplo, se divide en sectores de 512 bytes o de 1 KB, siendo un sector la unidad mínima de transferencia que el controlador del disco puede manejar.

Los dispositivos de caracteres, como los terminales, impresoras, tarjetas de red, módems, etcétera, no almacenan información en bloques de tamaño fijo. Gestionan flujos de caracteres de forma lineal y sin ningún tipo de estructura de bloque. Un teclado es un buen ejemplo de estos dispositivos. Está conectado a una UART (Universal Asvnchronous Receiver/Transmiter) que recibe un carácter del teclado cada vez que se pulsa una tecla.

No es posible leer un bloque de teclas de un golpe o buscar dentro del dispositivo por ninguna unidad. Un terminal por línea serie también es un dispositivo de caracteres. Su controlador se limita a enviar al periférico el flujo de caracteres que debe representar en la pantalla y a recibir del mismo los caracteres tecleados por el usuario.

 Existen tantos tipos de controladores como tipos de periféricos, y es frecuente encontrar más de un controlador posible para el mismo dispositivo, cada uno ofreciendo un nivel distinto de funcionalidades.

Otros, como los de canales de E/S, incluyen su propia UCP y bus para controlar la E/S por programa y evitar interrupciones en la UCP de la computadora. De cualquier forma, en los últimos años ha existido un esfuerzo importante de estandarización de los dispositivos, lo que permite usar un mismo controlador para dispositivos de distintos fabricantes. Un buen ejemplo lo constituyen los dispositivos SCSI (SrnaIlComputerSvsterninterftice), cuyos controladores ofrecen una interfaz común independientemente de que se trate de un disco, una cinta, un CD-ROM, etc. Otro buen ejemplo son los controladores IDE (Integrated Drive Electronics), que suelen usarse para conectar los discos en todas las computadoras personales. En cualquier caso, y sea como sea el controlador, su misión es convertir los datos del formato interno del dispositivo a uno externo que se ofrezca a través de una interfaz de programación bien definida.

Los controladores de dispositivo se suelen agrupar en alguna de las siguientes categorías o clases:

Ø  Adaptadores de audio (tarjetas de sonido)



Ø  Dispositivos de comunicación (infrarrojos, módems, etc)


Ø  Dispositivos de visualización, pantallas (displays)



Ø  Teclados




Ø  Ratón (“mouse” y otros señaladores gráficos)



Ø  Dispositivos multimedia


Ø  Dispositivos de Red



Ø  Impresoras

Webgrafia:
http://www.sc.ehu.es/acwlaroa/SO2/Apuntes/Cap5.pdf
http://www.ctr.unican.es/asignaturas/so/cap8-2en1.pdf
http://es.wikipedia.org/wiki/Perif%C3%A9rico_de_Entrada/Salida#Perif.C3.A9rico_de_Entrada_.C3.B3_Salida.2C_.C3.BAnicamente
http://www.monografias.com/trabajos33/dispositivos/dispositivos.shtml