Está en la página 1de 21

1

5 ABR Unidad 4 Administracin de entrada/salida. Introduccin Una de las funciones principales de un S. O. es el control de todos los dispositivos de e / s de la computadora . Las principales funciones relacionadas son: Enviar comandos a los dispositivos. Detectar las interrupciones. Controlar los errores. Proporcionar una interfaz entre los dispositivos y el resto del sistema: El cdigo de e / s representa una fraccin significativa del S. O. El uso inapropiado de los dispositivos de e/s frecuentemente genera ineficiencias del sistema, lo que afecta al performance global. Principios del Hardware de E/S El enfoque que se considerar tiene que ver con la interfaz que desde el hardware se presenta al software : Comandos que acepta el hardware. Funciones que realiza. Errores que puede informar. 4.1 Dispositivos y manejadores de dispositivos (device drivers). Dispositivos de E/S Se pueden clasificar en dos grandes categoras segn el tipo de transmisin de informacin: Dispositivos de bloque. Dispositivos de caracter. Las principales caractersticas de los dispositivos de bloque son: La informacin se almacena en bloques de tamao fijo. Cada bloque tiene su propia direccin. Los tamaos ms comunes de los bloques van desde los 128 bytes hasta los 1,024 bytes. Se puede leer o escribir en un bloque de forma independiente de los dems, en cualquier momento. Un ejemplo tpico de dispositivos de bloque son los discos. Las principales caractersticas de los dispositivos de caracter son: La informacin se transfiere como un flujo de caracteres, sin sujetarse a una estructura de bloques. No se pueden utilizar direcciones. No tienen una operacin de bsqueda. Un ejemplo tpico de dispositivos de caracter son las impresoras de lnea, terminales, interfaces de una red, ratones, etc. Algunos dispositivos no se ajustan a este esquema de clasificacin , por ejemplo los relojes, que no tienen direcciones por medio de bloques y no generan o aceptan flujos de caracteres. Los dispositivos de E/S tambin se pueden agrupar en tres grandes grupos segn su funcin: 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 el CPU. 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 memorias flash) 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 comunes de esta clase son los mdems, para comunicacin va red telefnica, y las tarjetas de interfaz a la red, para conectar la computadora a una red de rea local. Controladores o manejadores de Dispositivos Las unidades de e/s generalmente constan de: Un componente mecnico.

2
Un componente electrnico: el controlador del dispositivo o tarjeta. Muchos controladores pueden manejar ms de un dispositivo. El S. O. generalmente trabaja con el controlador y no con el dispositivo. Los modelos ms frecuentes de comunicacin entre el CPU y los controladores son: Para la mayora de las micro y mini computadoras: o Modelo de bus del sistema.

Para la mayora de los mainframes: o 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 en el que: 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 el 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, el 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 del CPU. Verifique los resultados de la operacin. El cpu obtiene los resultados y el estado del dispositivo al leer uno o ms bytes de informacin de los registros del controlador.

3
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. Permitir la conexin de dispositivos nuevos de E/S, solventando de forma automtica su instalacin usando mecanismos del tipo plug&play.

4
6 ABR Para empezar una operacin de E/S, el CPU 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 el CPU ejecuta operaciones port 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. Ejemplos de controladores, sus direcciones de e/s y sus vectores de interrupcin en la PC IBM pueden verse en la Tabla 4.1 . Controlador de e/s Reloj Teclado Disco duro Impresora Disco flexible Rs232 primario Rs232 secundario Direccin de e/s 040 043 060 063 320 - 32f 378 - 37f 3f0 - 3f7 3f8 - 3ff 2f8 - 2ff Vector de interrupciones 8 9 13 15 14 12 11

Tabla 4.1: Controladores de e/s, direcciones de e/s y vector de interrupciones. 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 Asynchronous 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. Drivers de E/S 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

5
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 propio CPU y bus para controlar la E/S por programa y evitar interrupciones en el CPU 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 (Small Computer System Interface), 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 4.2 Mecanismos y funciones de los manejadores de dispositivos (device drivers). 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 el CPU. El S. O. generalmente trabaja con el controlador y no con el dispositivo. 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 ejemplo). 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 el 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.

6
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, el 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 del CPU. -Verifique los resultados de la operacin. El 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 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.

7
7 ABR Para empezar una operacin de E/S, el CPU 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 CPU-controlador. El CPU tiene que interaccionar con el controlador 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 al CPU de la computadora muchas interrupciones de E/S. En ambos casos, la tcnica es la misma: dedicar un CPU 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 el CPU 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 el CPU 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, si falla 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 monitorear el programa, sino tambin el propio dispositivo.

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

8
Software de E/S 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 controladores 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 una bandera que indica que hay datos en el buffer del teclado.

Las interrupciones deben ocultarse en el S. O.:


Cada proceso que inicie una operacin de e / s se bloquea hasta que termina la e / s y ocurra la interrupcin. El procedimiento de interrupcin realiza lo necesario para desbloquear el proceso que lo inici.

9
11 ABR 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. 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 del 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.

Todo el cdigo que depende de los dispositivos aparece en los manejadores de dispositivos. Cada controlador posee uno o ms registros de dispositivos:
Se utilizan para darle los comandos. Los manejadores de dispositivos proveen estos comandos y verifican su ejecucin adecuada. La labor de un manejador de dispositivos es la de: Aceptar las solicitudes abstractas que le hace el software independiente del dispositivo. Verificar la ejecucin de dichas solicitudes. Si al recibir una solicitud el manejador est ocupado con otra solicitud, agregar la nueva solicitud a una cola de solicitudes pendientes.

La solicitud de e / s, por ej. para un disco, se debe traducir de trminos abstractos a trminos concretos:
El manejador de disco debe: o Estimar el lugar donde se encuentra en realidad el bloque solicitado. o Verificar si el motor de la unidad funciona. o Verificar si el brazo est colocado en el cilindro adecuado, etc. o Resumiendo: debe decidir cules son las operaciones necesarias del controlador y su orden. o Enva los comandos al controlador al escribir en los registros de dispositivo del mismo. o Frecuentemente el manejador del dispositivo se bloquea hasta que el controlador realiza cierto trabajo; una interrupcin lo libera de este bloqueo. o Al finalizar la operacin debe verificar los errores. o Si todo esta ok transferir los datos al software independiente del dispositivo. o Regresa informacin de estado sobre los errores a quien lo llam. o Inicia otra solicitud pendiente o queda en espera.

10

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 independiente del 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 cantidad 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. 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.

Funciones generalmente realizadas por el software independiente del dispositivo:


Interfaz uniforme para los manejadores de dispositivos. Nombres de los dispositivos.

11 Proteccin del dispositivo. Proporcionar un tamao de bloque independiente del dispositivo. Uso de buffers. Asignacin de espacio en los dispositivos por bloques. Asignacin y liberacin de los dispositivos de uso exclusivo. Informe de errores. Las funciones bsicas del software independiente del dispositivo son: Efectuar las funciones de e / s comunes a todos los dispositivos. Proporcionar una interfaz uniforme del software a nivel usuario. El software independiente del dispositivo asocia los nombres simblicos de los dispositivos con el nombre adecuado. El software independiente del dispositivo debe: Ocultar a los niveles superiores los diferentes tamaos de sector de los distintos discos. Proporcionar un tamao uniforme de los bloques, por ej.: considerar varios sectores fsicos como un solo bloque lgico.

12

12 ABR Espacio de usuario para software de E/S


La mayora del software de e / s est dentro del S. O. Una pequea parte consta de bibliotecas ligadas entre s con los programas del usuario. La biblioteca estndar de e / s contiene varios procedimientos relacionados con e / s y todos se ejecutan como parte de los programas del usuario. Otra categora importante de software de e / s a nivel usuario es el sistema de spooling. El spooling es una forma de trabajar con los dispositivos de e /s de uso exclusivo en un sistema de multiprogramacin: El ejemplo tpico lo constituye la impresora de lneas. Los procesos de usuario no abren el archivo correspondiente a la impresora. Se crea un proceso especial, llamado demonio en algunos sistemas. Se crea un directorio de spooling. Para imprimir un archivo: Un proceso genera todo el archivo por imprimir y lo coloca en el directorio de spooling. El proceso especial (demonio), nico con permiso para utilizar el archivo especial de la impresora, debe imprimir los archivos en el directorio. Se evita el posible problema de tener un proceso de usuario que mantenga un recurso tomado largo tiempo. Un esquema similar tambin es aplicable para la transferencia de archivos entre equipos conectados: Un usuario coloca un archivo en un directorio de spooling de la red. Posteriormente, el proceso especial lo toma y transmite. Un ej. son los sistemas de correo electrnico. Demonio o Daemon (Disk And Execution MONitor) Suena Extrao hablar de "demonios" en los Sistemas Operativos, pero es la Traduccin literal que se le puede dar a los Procesos que se ejecutan de manera no "Vista" u Oculta por el Usuario dentro del sistema, pero que se estn ejecutando y que pueden ser controlados por el Administrador. En Sistemas como Windows NT son llamados "Servicios" y son los equivalentes de Windows para los demonios de UNIX, tienen el mismo Propsito. Su contraparte en Sistemas del tipo DOS es algo complicado explicar, puesto que son Monousuario y Monoproceso, es decir que solo admiten un Usuario y que solo "ejecutan" un solo programa dentro de la Memoria, (Olvidando el Kernel, Config.sys, Autoexec.bat y sin olvidar el Command.com), en estos casos se manejaban los TSR (Terminate and Stay Resident) [Termina y Sigue Residente] que era la forma ms primitiva de Multitarea en DOS. En Sistemas como el Mac OS, son llamados extensiones del sistema. Hay que diferenciar entre una Aplicacin activa y entre un Demonio Entre un Servidor Software y un Demonio, la Aplicacin activa programa simplemente es una Aplicacin que se carga en la memoria y que tiene fines especficos como un Procesador de Palabras, un Reproductor, un Navegador, etc. El demonio se ejecuta en la Memoria pero sin "Interface" y las nicas opciones que posee son las de iniciar, reiniciar o detenerse. (Esto solamente dentro de la Sesin). Un Servidor es una Aplicacin en Segundo Plano (como el demonio) pero que cuenta con un interface y es configurable y que trabaja directamente con el Kernel. Un Ejemplo es un Servidor FTP. Lo demonios son programables, ya sea Iniciarlos o deternerlos de manera manual, editando algn archivo, haciendo algn Script programndolos para realizar determinadas tareas. Los demonios se distinguen porque estn presentes en reas sensibles del sistema. En los SO UNIX-like los demonios se arrancan cuando el Sistema Operativo

13 inicia y como a cualquier aplicacin se les asigna un PID (Process ID) [Identificacin de Procesos] es un nmero que Identifica al programa hasta que termina.
4.4 Operaciones de Entrada /salida. Tanto en la E/S programada como la basada en interrupciones, el CPU 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 el CPU y la E/S consiste en que el controlador del dispositivo se pueda encargar de efectuar la transferencia de datos, liberando de este trabajo al CPU, e interrumpirlo slo cuando haya terminado la operacin completa de E/S. Esta tcnica se denomina acceso directo a memoria (DMA, Direct Memory Access).

Si se lee el disco sin DMA: El controlador lee en serie el bloque (uno o ms sectores) de la unidad: o La lectura es bit por bit. o Los bits del bloque se graban en el buffer interno del controlador. Se calcula la suma de verificacin para corroborar que no existen errores de lectura. El controlador provoca una interrupcin. El S. O. lee el bloque del disco por medio del buffer del controlador: o La lectura es por byte o palabra a la vez. o En cada iteracin de este ciclo se lee un byte o una palabra del registro del controlador y se almacena en memoria. Se desperdicia tiempo del CPU. DMA se ide para liberar al CPU de este trabajo de bajo nivel. El CPU le proporciona al controlador: La direccin del bloque en el disco. La direccin en memoria a donde debe ir el bloque. El nmero de bytes por transferir. Luego de que el controlador ley todo el bloque del dispositivo a su buffer y de que corrobor la suma de verificacin: Copia el primer byte o palabra a la memoria principal. Lo hace en la direccin especificada por medio de la direccin de memoria de DMA. Incrementa la direccin DMA y decrementa el contador DMA en el nmero de bytes que acaba de transferir. Se repite este proceso hasta que el contador se anula y por lo tanto el controlador provoca una interrupcin. Al iniciar su ejecucin el S. O. luego de la interrupcin provocada, no debe copiar el bloque en la memoria, porque ya se encuentra ah (ver Figura 5.1 ).

14

El controlador necesita un buffer interno porque una vez iniciada una transferencia del disco: Los bits siguen llegando del disco constantemente. No interesa si el controlador est listo o no para recibirlos. Si el controlador intentara escribir los datos en la memoria directamente: o Tendra que recurrir al bus del sistema para c / u de las palabras (o bytes) transferidas. o El bus podra estar ocupado por otro dispositivo y el controlador debera esperar. o Si la siguiente palabra llegara antes de que la anterior hubiera sido almacenada, el controlador la tendra que almacenar en alguna parte. Si el bloque se guarda en un buffer interno: El bus no se necesita sino hasta que el DMA comienza. La transferencia DMA a la memoria ya no es un aspecto crtico del tiempo. Los controladores simples no pueden atender la e / s simultnea: Mientras transfieren a la memoria, el sector que pasa debajo de la cabeza del disco se pierde; es decir que el bloque siguiente al recin ledo se pierde. La lectura de una pista completa se har en dos rotaciones completas, una para los bloques pares y otra para los impares. Si el tiempo necesario para una transferencia de un bloque del controlador a la memoria por medio del bus es mayor que el tiempo necesario para leer un bloque del disco: o Sera necesario leer un bloque y luego saltar dos o ms bloques. o El salto de bloques: Se ejecuta para darle tiempo al controlador para la transferencia de los datos a la memoria. Se llama separacin. Al formatear el disco, los bloques se numeran tomando en cuenta el factor de separacin (ver Figura 5.2 ). Esto permite al S. O.: Leer los bloques con numeracin consecutiva. Conservar la mxima velocidad posible del hardware.

15

16
13 ABR Instrucciones mquina que el CPU puede utilizar para E/S o START I/O Inicia una operacin de E/S. El campo de direccin de la instruccin se emplea para especificar el canal y el dispositivo de E/S que participa en la operacin. o HALT I/O Finaliza la operacin del canal. o TEST CHANNEL Prueba el estado del canal. o TEST I/O Prueba el estado del canal, el subcanal y el dispositivo de E/S.

Ejecucin de instrucciones e interrupciones y estructura de E/S. Interrupciones de E/S: Para iniciar una operacin de E/S por parte de un proceso del usuario: La CPU carga los registros en el controlador del dispositivo. El controlador examina los registros para saber qu accin realizar. Tras realizar la accin el controlador informa de ello a la CPU. Esa comunicacin se efecta generando una interrupcin. Al iniciar una E/S hay dos alternativas: E/S sncrona: el SO espera a que termine la E/S. E/S asncrona: el SO devuelve el control al programa del usuario sin esperar a que se complete la E/S. Funcionamiento asncrono + multiprogramado: El usuario solicita E/S mediante llamada al sistema. El SO tramita la operacin. El SO entrega el control a otro proceso (mientras se desarrolla la E/S). Cuando la E/S termina genera una interrupcin que: Interrumpe el proceso actual. Provoca la aparicin del SO, que reactiva el proceso que hizo la llamada

17

18 14 ABR Estructuras de datos de un driver Las rutinas de un driver para dar un correcto servicio a las peticiones de entrada / salida necesitan para cada dispositivo una serie de datos que se encuentran en estructuras de datos en forma de tabla de manera que su composicin depende del sistema operativo, aunque tienen forma y nombres similares a los siguientes: Bloque de control del driver (BCD) Es la representacin del driver desde el punto de vista del sistema operativo. Contiene aquellos parmetros que son susceptibles de ser variados dinmicamente y aquellos que definen el tipo de dispositivo que puede ser atendido por el driver. Los datos que suele contener son: Direccin del siguiente BCD. Nombre del driver. Direccin de comienzo de los bloques de control de unidades (BCU) que controle el driver. Nmero de unidades a servir. Direccin de comienzo de la rutina de inicializacin del driver. Estado del driver (On/off line). Direccin de comienzo de la cola de bloques de entrada / salida (BES). Direccin del BES que est siendo servido. Variables particulares del driver. Bloque de control de la unidad (BCU) Cada dispositivo fsico se relaciona desde el punto de vista del sistema operativo como una unidad dentro del tipo al que le corresponda y es definido e identificado por el sistema operativo por medio de su BCU. En general, contiene los siguientes datos: Direccin del siguiente BCU del driver. Nmero de unidad. Estado de la unidad Nmero del vector de interrupcin asociado. Direccin de la rutina de gestin de la interrupcin. Direccin del puerto (port) de entrada / salida. Direccin del BCD al que pertenece. Direccin del PCB del proceso que tiene reservada esta unidad. Direccin del comienzo de la cola de bloques de entrada / salida (BES). Direccin del BES que est siendo servido. Caractersticas de la unidad. Variables particulares del drive. Paquete de peticin de entrada/salida (PES) Cuando un proceso de usuario intenta hacer una operacin de entrada/salida, el sistema operativo crea un paquete asociado a dicho proceso y a dicha peticin para ser tratado por el driver. Este paquete se coloca en una cola prioritaria para ser atendido por el driver al que va dirigido. Los datos que normalmente contiene son: Direccin del siguiente PES en la cola. Prioridad de la peticin de entrada/salida. Proceso que ha lanzado la peticin. Direccin dnde devolver el resultado de la peticin. Funcin a realizar (entrada o salida). identificador del dispositivo.

19 identificador de la unidad. Direccin de la lista de parmetros de entrada de la llamada al sistema operativo.

20

21