GESTIÓN ENTRADA/SALIDA
La función principal del S.O. es el control de todos los dispositivos de E/S.
Las principales funciones son: Enviar comandos a los dispositivos, detectar interrupciones, controlar errores.
Las posibles tres técnicas son:
Técnicas de E/S
A medida que los sistemas informáticos han evolucionados, se ha producido una tendencia creciente en la complejidad y sofisticación de cada componente individual. Al principio el procesador controlaba directamente los dispositivos periféricos, luego intervino menos con el uso de la e/s, las interrupciones permitidas hacían que el procesador no desperdiciaran tiempo esperando que se realice una operación de e/s.
E/S programada:
Los datos se intercambian entre el CPU y el modulo de E/S. El CPU ejecuta un programa que controla directamente la operación de e/s, incluyendo la comprobación del estado del dispositivo, el envío de la orden de lectura o escritura y la transferencia del dato. Cuando el CPU envía la orden debe esperar hasta que la operación de e/s concluya. Si el CPU es mas rápido esté estará ocioso. El CPU es el responsable de comprobar periódicamente el estado del modulo de e/s hasta que encuentre que la operación ha finalizado.
Cada dispositivo tiene asociado un identificador o dirección. Cuando el CPU envía una orden de e/s, la orden contiene la dirección del dispositivo deseado.
El problema con la e/s es que la CPU tiene que esperar un tiempo considerable para que el modulo de e/s concerniente este listo para la recepción o transmisión de datos. Y el echo de que la CPU deba interrogar repetidamente por el status del modulo de e/s hace que el nivel de performance de todo el sistema sea severamente degradado.
Ordenes de E/S
Al ejecutar una instrucción relacionada con una E/S, la CPU proporciona una dirección, especificando el módulo de E/S particular y el dispositivo externo. Hay cuatro tipos de ordenes de E/S.
Orden de control, se utiliza para activar el periférico e indicarle que hacer.
Orden de test, se utiliza para comprobar diversas condiciones de estado asociadas con el módulo de E/S y sus periféricos.
Orden de lectura, hace que el módulo de E/S capte un dato de un periférico y lo sitúe en un buffer interno
Orden de escritura, hace que el módulo de E/S tome un dato (byte o palabra) del bus de datos y posteriormente lo trasmita al periférico.
Instrucciones de E/S
Existe una estrecha correspondencia entre las instrucciones que la CPU capta de memoria y las ordenes de E/S que la CPU envía a un modulo de E/S al ejecutar las instrucciones. Normalmente hay muchos dispositivos conectados al sistema por lo cual tiene asociado un identificador único o dirección. Cuando la CPU envía una orden de E/S, la orden contiene la dirección del dispositivo deseado. Así cada modulo de entrada y salida debe interpretar las líneas de dirección para determinar si la orden es para él.
Cuando los tres componentes principales del computador comparten un bus común son posibles dos modos de direccionamiento: asignado en memoria y aislado.
Las E/S asignadas en memoria, existe un único espacio de direcciones para las posiciones de memoria y los dispositivos de E/S. En este tipo de direccionamiento se necesita una sola línea de lectura y una sola línea de escritura en el bus
E/S aislada, el bus puede disponer de líneas de lectura y escritura en memoria junto con líneas para ordenes de entrada y salida. En este caso, las líneas de órdenes especifican si la dirección se refiere a una posición de memoria o a un dispositivo de E/S. Puesto que el espacio de direcciones de E/S esta aislado del de memoria
E/S dirigida por interrupciones:
Cuando la interrupción desde un modulo de E/S ocurre, la CPU salva el contexto de ejecución del programa corriente y procesa la interrupción. La E/S por interrupción es mas eficiente que la E/S programada porque elimina la espera innecesaria de la cpu por la E/S.El modulo de E/S interrumpirá al CPU para solicitar sus servicios cuando esté preparado para intercambiar datos.
Se pueden distinguir dos tipos : E/S sincrónica y E/S asincrónica
· E/S sincrónica: cuando la operación de e/s finaliza, el control es retornado al proceso que la generó. La espera por E/S se lleva a cabo por medio de una instrucción wait que cobra al CPU en un estado ocioso hasta que ocurre otra interrupción. Aquellas máquinas que no tienen esta instrucción utilizan un loop. Este loop continua hasta que ocurre una interrupción transfiriendo el control a otra parte del sistema operativo. Sólo se atiende a una solicitud de E/S por vez. El sistema operativo conoce exactamente que dispositivo esta interrumpiendo. Esta alternativa excluye el procesamiento simultaneo por de E/S.
· E/S asincrónica : retorna al programa usuario sin esperar a que la operación de E/S finalice. Se necesita una llamada al sistema que le permita al usuario esperar por la finalización de E/S ( si es requerido). También es necesario llevar un control de las distintas solicitudes de E/S. Para ello el S.O. utiliza una tabla que contiene una entrada para cada dispositivo de E/S ( Tabla de Estado de Dispositivo). La ventaja de este tipo de E/S es el incremento de la eficiencia del sistema. Mientras se lleva a cabo la E/S, la CPU puede ser usado para procesar o para planificar otras E/S.
Inicio de la Operación de E/S
Para realizar la operación de E/S, el Cpu actualiza los registros necesarios en el modulo de E/S. El mismo examina el contenido de estos registros para determinar que acción será llevada a cabo.
Tabla de Estado de Dispositivos
Cuando el cpu recibe una interrupción que indica que ha finalizado una operación de E/S el sistema de operación debe saber a cual proceso pertenece. Para esto se mantiene una tabla de estado de dispositivos. Cada entrada en la tabla contiene: tipo de dispositivo, dirección y estado (ocioso, ocupado, no funcionando) si el dispositivo se encuentra ocupado, entonces el tipo de solicitud junto con otros parámetros son almacenados en la tabla.
Las operaciones TYPEAHEAD son un esquema usado por algunos dispositivos que permiten a los usuarios "adelantar" la entrada de datos antes de ser requeridas. Cuando sucede la interrupción del final de E/S no hay proceso que la requirió ,por lo tanto se necesita un buffer para almacenar los caracteres adelantados hasta que algún programa los requiera. En Gral. Se requiere un buffer para cada terminal de entrada.
Acceso Directo a Memoria (DMA)
Tanto en las E/S Programadas como en as E/S por Interrupciones la CPU es responsable de extraer los datos de la memoria central para el output o almacenar los datos en la memoria central para input. La alternativa a esto se conoce como Acceso Directo a Memoria (DMA). En este modo , el Modulo de E/S y la memoria central intercambian datos directamente sin involucrar a la CPU.
El modulo DMA es capaz de imitar a la CPU y de relevarla en el control del sistema para transferir los datos con la memoria por el bus del sistema. Cuando la CPU desea leer o escribir un bloque de datos emite un comando a módulo del DMA, enviándole la siguiente información: si el pedido es una lectura o una escritura, la dirección del dispositivo de E/S involucrado, la ubicación en memoria desde donde empezar a leer o escribir y el numero de palabras a ser leídas o escritas. La CPU continua con otro trabajo, a delegado esta operación de E/S al modulo DMA. Cuando la transferencia termina el modulo DMA manda una señal de interrupción al procesador. La CPU solo opera al comienzo y al final de la transferencia.
El modulo de DMA utiliza el bus solo cuando la CPU no lo necesita o debe forzarla a que suspenda temporalmente su operación. Esta ultima operación se conoce como Robo de Ciclo.
Los módulos de E/S no se conectan directamente al bus del sistema. Ya que existe una variedad de periféricos con modos de direccionamientos diferentes. Además la velocidad de transferencia de datos de los periféricos es mucho menor que la de la memoria o el procesador.
Tipos de controladores:
Generales
Procesadores de E/S.
Controladores de dispositivos específicos.
Direccionamiento de los módulos de E/S:
Mapeada en memoria.
El sistema dispone de un único espacio de direcciones.
La cpu no dispone de líneas de control especiales, ni instrucciones para realizar las operaciones de E/S.
Los registros del controlador son listos como posesiones de memoria.
Se dispone de un espacio de direcciones para memoria y otro para los controladores independientes.
La CPU debe tener líneas de control e instrucciones especificas para realizar las operaciones de E/S.