You are on page 1of 12

Dispositivos Y Manejadores De Dispositivos

Todos los dispositivos de E/S se pueden agrupar en tres grandes grupos:

Dispositivos de interfaz de usuario. Se llama as a los dispositivos que permiten la comunicacin entre los usuarios y la computadora. Dentro de este grupo se incluyen todos los dispositivos que sirven para proporcionar interfaz con el usuario, tanto para entrada (ratn, teclado, etc.) como para salida (impresoras, pantalla, etc.). Existen perifricos menos habituales, pero ms sofisticados, tales como un escner, lectores de huella digital, lectores de cinta magntica, instrumentos musicales digitales (MIDI), etc.

Dispositivos de almacenamiento. Se usan para proporcionar almacenamiento no voltil de datos y memoria. Su funcin primordial es abastecer de datos y almacenamiento a los programas que se ejecutan en la UCP. Segn su capacidad y la inmediatez con que se puede acceder a los datos almacenados en estos dispositivos, se pueden dividir en almacenamiento secundario (discos y disquetes) y terciario (cintas)

Dispositivos de comunicaciones. Permiten conectar a la computadora con otras computadoras a travs de una red. Los dos tipos de dispositivos ms importantes de esta clase son los mdem, para comunicacin va red telefnica, y las tarjetas de interfaz a la red, para conectar la computadora a una red de rea local.

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 visin lgica 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 visin lgica se ofrece a los usuarios un mecanismo de abstraccin que oculta todos los detalles relacionados con los dispositivos fsicos, 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 fcil 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 fsico sin que sea necesario remodelar el sistema de E/S del sistema operativo.

Permitir la conexin de dispositivos nuevos de E/S, solventando de forma automtica su instalacin usando mecanismos del tipo plug & play.

Conexin de un dispositivo de E/S a una computadora En la siguiente figura se muestra el esquema general de conexin de perifricos a una computadora. En el modelo de un perifrico se distinguen dos elementos:

Perifricos o dispositivos de E/S. Elementos que se conectan a la unidad central de proceso a travs de las unidades de entrada/salida. Son el componente mecnico que se conecta a la computadora.

Controladores de dispositivos o unidades de E/S. Se encargan de hacer la transferencia de informacin entre la memoria principal y los perifricos. Son el componente electrnico a travs del cual se conecta el dispositivo de E/S. Tienen una conexin al bus de la computadora y otra para el dispositivo (generalmente mediante cables internos o externos).

Para empezar una operacin de E/S, la UCP tiene que escribir sobre los registros anteriores los datos de la operacin a travs de una direccin de E/S o de memoria asignada nicamente al controlador. Segn se haga de una u otra forma, se distingue entre dispositivos conectados por puertos o proyectados en memoria. El modelo de dispositivos por puertos es clsico en las arquitecturas de Intel. En ellas, cuando se instala un dispositivo, a su controlador se le asigna un puerto de E/S, una interrupcin hardware y un vector de interrupcin. Para efectuar una operacin de E/S la UCP ejecuta operaciones por o portout con la direccin de puerto del dispositivo y con parmetros para indicar qu registro se quiere manipular. Todas las operaciones de entrada/salida (pantalla grfica, impresoras, ratn, discos, etc.) se realizan usando esas dos instrucciones de lenguaje mquina con los parmetros 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, tpico de las arquitecturas de Motorola, asigna a cada dispositivo de E/S un rango de direcciones de memoria a travs de las cuales se escribe sobre los registros del controlador. En este modelo no hay instrucciones especficas de E/S, sino que las operaciones se llevan a cabo mediante instrucciones mquina 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 fsica para asignar las direcciones de E/S.

Los dispositivos de almacenamiento secundario y terciario manejan la informacin en unidades de tamao 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 dems. Los dispositivos de bloque lo son porque el hardware fuerza la existencia de accesos de un tamao determinado. Un disco, por ejemplo, se divide en sectores de 512 bytes o de 1 KB, siendo un sector la unidad mnima de transferencia que el controlador del disco puede manejar. Los dispositivos de caracteres, como los terminales, impresoras, tarjetas de red, mdems, etctera, no almacenan informacin en bloques de tamao fijo. Gestionan flujos de caracteres de forma lineal y sin ningn 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 carcter 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 lnea serie tambin es un dispositivo de caracteres. Su controlador se limita a enviar al perifrico el flujo de caracteres que debe representar en la pantalla y a recibir del mismo los caracteres tecleados por el usuario.

Un controlador de dispositivo (llamado normalmente controlador, o, en ingls, driver) es un programa informtico que permite al sistema operativo interactuar con un perifrico, haciendo una abstraccin del hardware y proporcionando una interfaz -posiblemente estandarizada- para usarlo. Se puede esquematizar como un manual de instrucciones que le indica cmo debe controlar y comunicarse con un dispositivo en particular. Por tanto, es una pieza esencial, sin la cual no se podra usar el hardware.

Existen tantos tipos de controladores como tipos de perifricos, y es frecuente encontrar ms de un controlador posible para el mismo dispositivo, cada uno ofreciendo un nivel distinto de funcionalidades. Por ejemplo, aparte de los oficiales (normalmente disponibles en la pgina web del fabricante), se pueden encontrar tambin los proporcionados por el sistema operativo, o tambin versiones no oficiales hechas por terceros. Estos controladores pueden ser genricos (vlidos para ms de un modelo del mismo perifrico) o especficos para cada modelo. Tambin se distribuyen actualizaciones a nuevas versiones, que pueden dar un mejor funcionamiento. Normalmente son los fabricantes del hardware quienes escriben sus controladores, ya que conocen mejor el funcionamiento interno de cada aparato, pero tambin se encuentran controladores libres, por ejemplo en los sistemas operativos libres. En este caso, los creadores no son de la empresa fabricante, aunque a veces hay una cooperacin con ellos, cosa que facilita el desarrollo. Si no la hay, el procedimiento necesita de ingeniera inversa y otros mtodos difciles o con riesgos legales.

Los controladores son muy variados, casi tanto como los dispositivos de E/S. Muchos de ellos, como los de disco, pueden controlar mltiples dispositivos. 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 aos ha existido un esfuerzo importante de estandarizacin de los dispositivos, lo que permite usar un mismo controlador para dispositivos de distintos fabricantes. Un buen ejemplo lo constituyen los dispositivos SCSI (Srna Il? Computer Svstern interftice), cuyos controladores ofrecen una interfaz comn independientemente de que se trate de un disco, una cinta, un CD-ROM, etc. Otro buen ejemplo son los controladores IDE (In tegrated Drive Electronics), que suelen usarse para conectar los discos en todas las computadoras personales. En cualquier caso, y sea como sea el controlador, su misin es convertir los datos del formato interno del dispositivo a uno externo que se ofrezca a travs de una interfaz de programacin bien definida. Los controladores de dispositivo se suelen agrupar en alguna de las siguientes categoras o clases:

Adaptadores de audio (tarjetas de sonido).

Dispositivos de comunicacin (infrarrojos, mdems, etc).

Dispositivos de visualizacin; pantallas (displays).

Teclados.

Ratn (mouse y otros sealadores grficos).

Dispositivos multimedia.

Dispositivos de Red.

Impresoras.

Almacenamiento

Mecanismos Funciones Manejadores Dispositivos

El controlador es el componente ms importante desde el punto de vista del sistema operativo, ya que constituye la interfaz del dispositivo con el bus de la computadora y es el componente que se ve desde la UCP. El S. O. generalmente trabaja con el controlador y no con el dispositivo. Los modelos ms frecuentes de comunicacin entre la cpu y los controladores son: -Para la mayora de las micro y mini computadoras: Modelo de bus del sistema. -Para la mayora de los mainframes: Modelo de varios buses y computadoras especializadas en e/s llamadas canales de e/s. La interfaz entre el controlador y el dispositivo es con frecuencia de muy bajo nivel: -La comunicacin es mediante un flujo de bits en serie que: Comienza con un prembulo. Sigue con una serie de bits (de un sector de disco, por ej.). Concluye con una suma para verificacin o un cdigo corrector de errores. -El prembulo: Se escribe al dar formato al disco. Contiene el nmero de cilindro y sector, el tamao de sector y otros datos similares. El controlador debe: -Convertir el flujo de bits en serie en un bloque de bytes. -Efectuar cualquier correccin de errores necesaria. -Copiar el bloque en la memoria principal. Cada controlador posee registros que utiliza para comunicarse con la cpu: -Pueden ser parte del espacio normal de direcciones de la memoria: e/s mapeada a memoria. -Pueden utilizar un espacio de direcciones especial para la e/s, asignando a cada controlador una parte de l. El S. O. realiza la e/s al escribir comandos en los registros de los controladores; los parmetros de los comandos tambin se cargan en los registros de los controladores. Al aceptar el comando, la cpu puede dejar al controlador y dedicarse a otro trabajo. Al terminar el comando, el controlador provoca una interrupcin para permitir que el S. O.: -Obtenga el control de la cpu. -Verifique los resultados de la operacin. La cpu obtiene los resultados y el estado del dispositivo al leer uno o ms bytes de informacin de los registros del controlador.

Su programacin se lleva a cabo mediante una interfaz de muy bajo nivel que proporciona acceso a una serie de registros del controlador, incluidos en el mapa de E/S de la computadora, que se pueden acceder mediante instrucciones de mquina de E/S. Hay tres registros importantes en casi todos los controladores: registro de

datos, estado y control. El registro de datos sirve para el intercambio de datos. En l ir el controlador cargando los datos ledos y de l ir extrayendo los datos para su escritura en el perifrico. Un bit del registro de estado sirve para indicar que el controlador puede transferir una palabra. En las operaciones de lectura esto significa que ha cargado en el registro de datos un nuevo valor, mientras que en las de escritura significa que necesita un nuevo dato. Otros bits de este registro sirven para que el controlador indique los problemas que ha encontrado en la ejecucin de la ltima operacin de E/S. El registro de control sirve para indicarle al controlador las operaciones que ha de realizar. Los distintos bits de este registro indican distintas acciones que ha de realizar el perifrico. Para empezar una operacin de E/S, la UCP tiene que escribir sobre los registros anteriores los datos de la operacin a travs de una direccin de E/S o de memoria asignada nicamente al controlador. Este modelo vale tanto para los terminales o la pantalla como para los discos. Las caractersticas del controlador son muy importantes, ya que definen el aspecto del perifrico para el sistema operativo. Atendiendo a las caractersticas del hardware de los dispositivos, se pueden observar los siguientes aspectos distintivos: Direccin de E/S. En general hay dos modelos de direccionamiento de E/S, los que usan puertos y los que proyectan los registros en memoria. Unidad de transferencia. Los dispositivos suelen usar unidades de transferencia de tamao fijo. Hay dos modelos clsicos de dispositivos: de caracteres y de bloques. Interaccin computadora-controlador. La computadora tiene que interaccionar con la computadora para realizar las operaciones de E/S y saber cundo terminan.

Un controlador de dispositivo o unidad de E/S se encarga de controlar uno o ms dispositivos del mismo tipo y de intercambiar informacin entre ellos y la memoria principal o unidad central de proceso de la computadora. El controlador debe encargarse adems de sincronizar la velocidad del procesador con la del perifrico y de detectar los posibles errores que se produzcan en el acceso a los perifricos. En el caso de un controlador de disco, ste debe encargarse de convertir un flujo de bits procedente del disco a un bloque de bytes detectando y corrigiendo, si es posible, los errores que se produzcan en esta transferencia. Una vez obtenido el bloque y comprobado que se encuentra libre de errores, deber encargarse de transferirlo a memoria principal. La informacin entre los controladores de dispositivo y la unidad central de proceso o memoria principal se puede transferir mediante un programa que ejecuta continuamente y lee o escribe los datos del (al) controlador. Con esta tcnica, que se denomina E/S programada, la transferencia de informacin entre un perifrico y el procesador se realiza mediante la ejecucin de una instruccin de E/S. Con esta tcnica, es el procesador el responsable de extraer o enviar datos entre el procesador y el controlador de dispositivo, lo que provoca que el procesador tenga que esperar mientras se realiza la transferencia entre el perifrico y el controlador. Dado que los perifricos son sensiblemente ms lentos que el procesador, ste deber esperar una gran cantidad de tiempo hasta que se complete la operacin de E/S. En este caso no existe ningn tipo de concurrencia entre la E/S y el procesador ya que ste debe esperar a que finalice la operacin. Aunque esta tcnica es muy antigua, ya que proviene del tiempo en que los controladores no tenan interrupciones, actualmente los canales de E/S y algunos multiprocesadores usan esta tcnica para evitar que lleguen a la UCP de la computadora muchas interrupciones de E/S. En ambos casos, la tcnica es la misma: dedicar una UCP especial para la E/S. La forma de hacerlo es muestrear continuamente los registros de estado de los

controladores para ver si estn disponibles y, en ese caso, leer o escribir los registros. Imagine un canal de E/S al que hay conectados mltiples buses de E/S que, a su vez, tienen mltiples dispositivos de E/S. Si la UCP quiere escribir en uno de ellos, debe mirar su registro de estado hasta que los bits indiquen que no est ocupado. Cuando esto ocurra, escribir un bloque en los registros del controlador y esperar hasta que los bits de estado indiquen que est disponible. Imagine que quiere leer de otro controlador, deber esperar a que los bits de estado le indiquen que est disponible, programar la operacin y esperar a que se indique que los datos estn disponibles. Evidentemente, incluso aunque la UCP est controlando varios dispositivos de E/S, siempre existe prdida de ciclos debido a la existencia de las esperas. Sin embargo, existen situaciones en que esto no es as.

Hay que recalcar que el controlador al ser una parte crtica del sistema operativo, el fallo de un controlador puede ser ms grave que otros errores de software, pudiendo bloquear el ordenador o incluso daar el hardware. Debido a que el hardware es (necesariamente) indeterminista, encontrar y solucionar un fallo en un controlador es una tarea complicada ya que no slo hay que monitorizar el programa, sino tambin el propio dispositivo. Estructuras De Datos Para Manejo De Dispositivos

Los procesos de usuario emiten peticiones de entrada/salida al sistema operativo. Cuando un proceso solicita una operacin de E/S, el sistema operativo prepara dicha operacin y bloquea al proceso hasta que se recibe una interrupcin del controlador del dispositivo indicando que la operacin est completa. Las peticiones se procesan de forma estructurada en las siguientes capas:

Manejadores de interrupcin.

Manejadores de dispositivos o drivers.

Software de EIS independiente de los dispositivos. Este software est formado por la parte de alto nivel de los manejadores, el gestor de cache, el gestor de bloques y el servidor de archivos.

Interfaz del sistema operativo. Llamadas al sistema que usan las aplicaciones de usuario.

El sistema operativo estructura el software de gestin de E/S de esta forma para ofrecer a los usuarios una serie de servicios de E/S independientes de los dispositivos. Esta independencia implica que deben emplearse los mismos servicios y operaciones de E/S para leer datos de un disquete, de un disco duro, de un CD-ROM o de un teclado.

Manejadores de interrupcin

Los manejadores de interrupcin se encargan de tratar las interrupciones que generan los controla dores de dispositivos una vez que stos estn listos para la transferencia de datos o bien han ledo o escrito los datos de memoria principal en caso de acceso directo a memoria. Para tratar dicha interrupcin se ejecuta el correspondiente manejador de interrupcin cuyo efecto es el de salvar los registros, comunicar el evento al manejador del dispositivo y restaurar la ejecucin de un proceso (que no tiene por qu ser el interrumpido).

Los manejadores de interrupcin suelen hacer algo ms que comunicar el evento al manejador de dispositivo. Cuando una interrupcin ocurre muy frecuentemente, caso del reloj, o cuando la cantidad de informacin a transferir es muy pequea, caso del teclado, sera muy costoso comunicar siempre el evento al manejador de dispositivo asociado. En estos casos, el propio manejador de interrupcin registra la ocurrencia del evento, bien mediante el incremento de una variable global para el reloj o la acumulacin de caracteres en un buffer del teclado. La notificacin al manejador se hace nicamente cada cierto nmero de ocurrencias del evento, en el caso del reloj, o activando unflag que indica que hay datos en el buffer del teclado.

Manejadores de dispositivos

Cada dispositivo de E/S, o cada clase de dispositivos, tiene un manejador asociado en el sistema operativo.

Dicho manejador incluye: cdigo independiente del dispositivo para proporcionar al nivel superior del sistema operativo una interfaz de alto nivel y el cdigo dependiente del dispositivo necesario para programar el controlador del dispositivo a travs de sus registros y datos. La tarea de un manejador de dispositivo es aceptar peticiones en formato abstracto, de la parte del cdigo de E/S independiente del dispositivo, traducir dichas peticiones a trminos que entienda el controlador, enviar al mismo las rdenes adecuadas en la secuencia correcta y esperar a que se cumplan. La siguiente figura muestra un diagrama de flujo con las operaciones de un manejador.

Todos los manejadores tienen una lista de peticiones pendientes por dispositivo donde se encolan las peticiones que llegan de niveles superiores. El manejador explora la lista de peticiones, extrae una peticin pendiente y ordena su ejecucin. La poltica de extraccin de peticiones de la lista es dependiente de manejador y puede ser FIFO. Una vez enviada la peticin al controlador, el manejador se bloquea o no, dependiendo de la velocidad del dispositivo. Para los lentos (discos) se bloquea esperando una interrupcin. Para los rpidos (pantalla, discos RAM, etctera) responde inmediatamente. Despus de recibir el fin de operacin, controla la existencia de errores y devuelve al nivel superior el estado de terminacin de la operacin. Si tiene operaciones pendientes en la cola de peticiones, atiende a la siguiente, en caso de que le toque ejecutar despus de la operacin de E/S. En caso contrario se bloquea.

Software de E/S independiente del dispositivo

La mayor parte del sistema de E/S es software independiente de dispositivo. Este nivel incluye el sistema de archivos y el de gestin de red, el gestor de bloques, la cache de bloques y una parte de los manejadores de dispositivo. La principal funcin de esta capa de software es ejecutar las funciones de E/S que son comunes a todos los dispositivos a travs de una interfaz uniforme.

Internamente, en este nivel se proporciona acceso a nivel de bloques o caracteres, almacenamiento intermedio, gestin de los dispositivos, planificacin de la E/S y control de errores.

El tamao de acceso a nivel de bloques se hace usando tamaos de bloque de acceso comunes para todo un sistema de archivos, lo que permite ocultar que cada dispositivo puede tener distinto tamao de sector y distinta geometra. Estos detalles quedan ocultos por la capa de software in dependiente de dispositivo que ofrece una interfaz sobre la base de bloques lgicos del sistema de archivos. Lo mismo ocurre con los dispositivos de caracteres, algunos de los cuales trabajan con un carcter cada vez, como el teclado, mientras otros trabajan con flujos de caracteres, como el modem o las redes.

Para optimizar la E/S y para armonizar las peticiones de usuario, que pueden ser de cualquier tamao, con los bloques que maneja el sistema de archivos, el software de E/S proporciona almacenamiento intermedio en memoria del sistema operativo. Esta facilidad se usa para tres cosas:

Optimizar la E/S evitando accesos a los dispositivos.

Ocultar las diferencias de velocidad con que cada dispositivo y usuario manejan los datos.

Facilitar la implementacin de la semntica de comparticin, al existir una copia nica de los datos en memoria.

El sistema de E/S mantiene buffers en distintos componentes. Por ejemplo, en la parte del manejador del teclado independiente del dispositivo existe un buffer para almacenar los caracteres que teclea el usuario hasta que se pueden entregar a los niveles superiores. Si se usa una lnea serie para leer datos de un sistema remoto y almacenarlos en el disco, se puede usar un buffer para guardar temporalmente los datos hasta que tengan una cierta entidad y sea rentable escribirlos a disco. Si se est leyendo o escribiendo un archivo, se guardan copias de los bloques en memoria para no tener que acceder al disco si se vuelven a leer.

La gestin de los dispositivos agrupa a su vez tres servicios: nombrado, proteccin y control de acceso.

El nombrado permite traducir los nombres de usuario a identificadores del sistema. Por ejemplo, en UNIX, cada dispositivo tiene un nombre (p. ej.: /dev/cdrom) que se traduce en un nico identificador interno (o nodoi), que a su vez se traduce en un nico nmero de dispositivo principal (clase de dispositivo) y secundario (elemento de la clase). Cada dispositivo tiene asociada una informacin de proteccin (en UNIX mediante 3

bits para dueo, grupo y mundo) y este nivel de software asegura que los requisitos de proteccin se cumplen. Adems proporciona control de acceso para que un dispositivo dedicado, como una impresora, sea accedido por un nico usuario cada vez.

Una de las funciones principales del sistema de E/S es la planificacin de la E/S de los distintos componentes. Para ello se usan colas de peticiones para cada clase de dispositivo, de las que se extraen las peticiones de cada dispositivo en particular. Cada una de estas colas se ordena siguiendo una poltica de planificacin, que puede ser distinta en cada nivel. Imagine el caso de LINUX, donde existe una cola global de peticiones de E/S, ordenadas en orden FIFO, para los discos instalados. Cuando un manejador de disco queda libre, busca la cola global para ver si hay peticiones para l y, si existen, las traslada a su cola de peticiones particular ordenadas segn la poltica SCAN, por ejemplo. Este mecanismo permite optimizar la E/S al conceder a cada mecanismo la importancia que, ajuicio de los diseadores del sistema operativo, se merece. En el caso de Windows NT, por ejemplo, el ratn es el dispositivo de E/S ms prioritario del sistema. La razn que hay detrs de esta poltica es conseguir un sistema muy interactivo. En otros sistemas, como UNIX, las operaciones de disco son ms prioritarias que las del ratn para poder desbloquear rpidamente a los procesos que esperan por la E/S. Sea cual sea el criterio de planificacin, todos los sistemas de E/S planifican las actividades en varios lugares.

Por ltimo, este nivel proporciona gestin de errores para aquellos casos que el manejador de dispositivo no puede solucionar. Un error transitorio de lectura de un bloque se resuelve en el manejador reintentando su lectura. Un error permanente de lectura no puede ser resuelto y debe ser comunicado al usuario para que tome las medidas adecuadas. En general, todos los sistemas operativos incluyen alguna forma de control de errores internos y de notificacin al exterior en caso de que esos errores no se puedan resolver. Imagine, por ejemplo, que una aplicacin quiere leer de un dispositivo que no existe. El sistema de E/S ver que el dispositivo no est y lo notificar a los niveles superiores hasta que el error llegue a la aplicacin. Sin embargo, es importante resaltar que los sistemas operativos son cada vez ms robustos y cada vez incluyen ms control y reparacin de errores, para lo cual usan mtodos de paridad, checksums, cdigos correctores de error, etc. Adems, la informacin que proporcionan cuando hay un error es cada vez mayor.

Operaciones De Entrada Salida

Tanto en la E/S programada como la basada en interrupciones, la UCP debe encargarse de la transferencia de datos una vez que sabe que hay datos disponibles en el controlador. Una mejora importante para incrementar la concurrencia entre la UCP y la E/S consiste en que el controlador del dispositivo se pueda encargar de efectuar la transferencia de datos, liberando de este trabajo a la UCP, e interrumpir a la UCP slo cuando haya terminado la operacin completa de EIS. Esta tcnica se denomina acceso directo a memoria (DMA, Direct Memory Access).

Cuando se utiliza acceso directo a memoria, es el controlador el que se encarga directamente de transferir los datos entre el perifrico y la memoria principal, sin requerir intervencin alguna por parte del procesador. Esta tcnica funciona de la siguiente manera: cuando el procesador desea que se imprima un bloque de datos, enva una orden al controlador indicndole la siguiente informacin:

Tipo de operacin: lectura o escritura. Perifrico involucrado en la operacin. La direccin de memoria desde la que se va a leer o a la que va a escribir directamente con el
controlador de dispositivo (direccin).

El nmero de bytes a transferir (contador).


Donde el campo Operacin corresponde al cdigo de operacin de las instrucciones de mquinas normales. Especifica la operacin que debe realizar la CCW. La unidad de control decodifica este campo y enva las seales adecuadas de control al dispositivo. Existen varias operaciones, las ms importantes son las siguientes:

Lectura: el canal transfiere a memoria principal un bloque de palabras de tamao especificado en el campo n de palabras, en orden ascendente de direcciones, empezando en la direccin especificada en el campo direccin del dato.

Escritura: el canal transfiere datos de memoria principal al dispositivo. Las palabras se transfieren en el mismo orden que en la operacin de lectura.

Control: se utiliza esta orden para enviar instrucciones especficas al dispositivo de E/S, como rebobinar una cinta magntica, etc.

Bifurcacin: cumple en el programa de canal la misma funcin que una instruccin de salto en un programa normal. El canal ejecuta las CCW en secuencia, salvo cuando aparece una CCW de este tipo, que utiliza el campo direccin del dato como la direccin de la siguiente CCW a ejecutar.

Flags: Los bits de este campo indican lo siguiente:

CC (Encadenamiento de comando): cuando este bit est a 1, indica al canal que la siguiente CCW especifica una nueva operacin de E/S que debe realizarse con el mismo dispositivo. El canal ejecuta primero la operacin de E/S especificada en la CCW que tiene a 1 el flag CC. Despus ejecuta la siguiente sobre el mismo dispositivo. Desde el punto de vista del dispositivo, las dos operaciones resultantes de la primera y segunda CCW aparecen como dos comandos de E/S separados.

CD (Encadenamiento de datos): una CCW con el bit CD a 1, indica al canal que la siguiente CCW contiene una nueva direccin del dato y un nuevo n de palabras. stos deben utilizarse para transferir un segundo bloque de datos hacia o desde el dispositivo de E/S, mediante la orden especificada por la CCW actual. Cuando el canal termina la transferencia de datos especificada en la CCW con el bit CD a 1, no corta la conexin con el dispositivo de E/S, contina la transferencia utilizando la direccin y el n de palabras de la siguiente CCW.

SKIP (Salto): este bit, cuando est a 1, hace que el programa de canal salte un nmero de palabras igual al especificado en el campo n de palabras. Cuando se utiliza con la orden de lectura, este flag hace que los datos se lean del dispositivo sin que se transfieran a la memoria principal.

PCI (Interrupcin controlada por programa): el canal produce una interrupcin cuando ejecuta una CCW con el flag PCI a 1. Si esta CCW va precedida por otra CCW con encadenamiento de comandos, la interrupcin se genera despus de que hayan concluido todas las transferencias de datos.

Una vez emitida la orden, el procesador contina realizando otro trabajo sin necesidad de transferir el bloque de datos. Es el propio controlador el que se encarga de transferir el bloque de datos del perifrico a memoria. La transferencia se realiza palabra a palabra. Cuando el controlador ha completado la transferencia, genera una interrupcin que activa la rutina de tratamiento correspondiente, de tal manera que se sepa que la operacin ha concluido.

Utilizando acceso directo a memoria el procesador nicamente se ve involucrado al inicio y al final de la transferencia. Por tanto, cuando el sistema operativo despierta al proceso que pidi la E/S, no tiene que copiar el bloque a memoria porque ya est all. El DMA requiere una etapa de almacenamiento intermedio en el controlador del dispositivo para armonizar la velocidad del dispositivo de EIS con la copia de los datos en memoria principal. La razn para este almacenamiento intermedio reside en que una vez que el dispositivo empieza la transferencia de datos, sta debe hacerse a velocidad constante para evitar transferencias parciales y nuevas esperas de posicionamiento del dispositivo sobre los datos (latencia). Una vez transferidos los datos a la memoria del controlador, ste los copia en memoria principal aprovechando el ancho de banda libre del bus.

Los pasos a seguir en una operacin de E/S con DMA son los siguientes:

1. Programacin de la operacin de E/S. Se indica al controlador la operacin, los datos a transferir y la direccin de memoria sobre la que se efectuar la operacin.

2. El controlador contesta aceptando la peticin de E/S.

3. El controlador le ordena al dispositivo que lea (para operacin de lectura) una cierta cantidad de datos desde una posicin determinada del dispositivo a su memoria interna. 7.3.

4. Cuando los datos estn listos, el controlador los copia a la posicin de memoria que tiene en sus registros, incrementa dicha posicin de memoria y decrementa el contador de datospendientes de transferir.

5. Los pasos 3 y 4 se repiten hasta que no quedan ms datos por leer.

6. Cuando el registro de contador est a cero, el controlador interrumpe a la UCP para in dicar que la operacin de DMA ha terminado.

Inicio y control de los programas de canal

Hemos visto como se utilizan los programas de canal para realizar operaciones de E/S. Estos programas residen en la memoria principal del computador y se ejecutan en el canal. Vamos a examinar ahora la forma en que la CPU inicia y supervisa las operaciones de E/S, es decir, el programa de canal. En el IBM S/370 existen cuatro instrucciones mquina que la CPU puede utilizar para estos fines. Son las siguientes:

START I/O Inicia una operacin de E/S. El campo de direccin de la instruccin seemplea para especificar el canal y el dispositivo de E/S que participa en la operacin.

HALT I/O Finaliza la operacin del canal.

TEST CHANNEL Prueba el estado del canal.

TEST I/O Prueba el estado del canal, el subcanal y el dispositivo de E/S.

Una operacin de E/S se inicia con la instruccin START I/O. La ubicacin del programa de canal en la memoria principal viene definida en la palabra de direccin de canal (CAW: Channel A ddress word), que siempre est almacenada en la posicin 72 de la memoria principal.

You might also like