Interfaz Procesador – Periférico
El procesador únicamente puede dar comienzo a las operaciones de E/S, pero no puede controlar su terminación. Para esto se pueden usar dos métodos:
- Polling: Consiste en leer constantemente el registro de estado del dispositivo para ver su estatus (consume tiempo no deseado del procesador).
- Interrupciones: El procesador continúa con su trabajo y solo cuando el dispositivo concluye su operación, llama su atención, interrumpiéndole para que trate dicha situación.
Controladores
Los dispositivos complejos no se conectan directamente al procesador, sino a través de un controlador que mantiene el estado del dispositivo (estatus). Es el controlador el que acepta las órdenes del procesador y se comunica con él a través de registros, como si él fuera el dispositivo.
Canales
Los controladores se conectan al procesador a través de un canal o procesador de E/S. El propósito del canal es conseguir que los dispositivos sean tratados como virtuales. Los canales son manejados por comandos, cuando terminan la operación de E/S devuelven el estatus correspondiente e interrumpen al procesador. Pueden ser de 2 tipos:
- Selectores
- Multiplexores
Software de Control de E/S (Drivers)
Un driver es un software formado por un conjunto de rutinas y tablas que, formando parte del núcleo del SO, ejecutan y controlan todas las operaciones de E/S sobre cualquier periférico conectado a la computadora, siendo particulares para cada dispositivo.
El tratamiento por el núcleo de un SO de toda la información de E/S, se puede dividir para su estudio en 2 niveles:
- Tratamiento independiente del periférico: Formado por un conjunto de rutinas que procesan información, sin atender a las características propias del periférico.
- Tratamiento dependiente del periférico: Conjunto de rutinas que el núcleo del SO ofrece para controlar al propio dispositivo periférico.
Fin de operaciones E/S y control de la operación de E/S
Proceso usuario → software independiente de dispositivos → despachador E/S → Manejador de interrupciones → HW (realización de la operación de E/S)
Funciones de un Driver
- Definir las características del periférico al resto del SO.
- Inicializar los registros asociados al periférico, en el momento del arranque del SO (Bootstrap).
- Habilitar y deshabilitar el dispositivo para un proceso.
- Procesar todas las operaciones de E/S solicitadas por el proceso.
- Cancelar toda operación de E/S en el momento que sea necesario por cualquier causa.
- Procesar todas las interrupciones HW generadas por el propio periférico.
- Tratar los errores y estados del dispositivo haciendo la correspondiente comunicación al usuario.
Rutinas de un Driver
- Inicialización: Es la llamada al núcleo del SO en la inicialización del sistema.
- Atención a peticiones de E/S.
- Gestión de interrupciones.
- Cancelación de operaciones de E/S.
- Otras:
- Time – out.
- Power – fail.
Estructuras de Datos de un Driver
Para dar un correcto servicio a las peticiones de E/S se necesitan para cada dispositivo. Es necesario tener controlados una serie de datos que son los que intervienen en la transacción. Estos datos se encuentran almacenados en unas estructuras de datos en forma de lista enlazada. El driver tiene una de estas listas asociada a cada uno de los periféricos que controla. Su composición depende del SO, aunque todas tienen nombre y forma similares.
Bloque de Control del Driver (BCD)
Es la representación del driver desde el punto de vista del SO. Contiene aquellos parámetros que son susceptibles de ser variados dinámicamente y aquellos que definen el tipo de dispositivo que puede ser atendido por el driver.
- Dirección del siguiente BCD.
- Nombre del driver.
- Dirección del comienzo de los bloques de control de unidades (BCU).
- Número de unidades a servir.
- Dirección de la rutina de iniciación del driver.
- Estado del driver (On/Off line).
- Dirección del comienzo de la cola de bloques de E/S (BES).
- Dirección del BES que está siendo servido.
- Variables particulares del driver.
Bloque de Control de la Unidad (BCU)
Cada dispositivo se relaciona desde el punto de vista del SO con una unidad dentro del tipo al que corresponde y es definido e identificado por el SO por su BCU.
- Dirección del siguiente BCU del driver.
- Número de unidad.
- Estado de la unidad.
- Nº del vector de interrupción asociado.
- Dirección de la rutina de gestión de las interrupciones.
- Dirección del puerto de E/S.
- Dirección del BCD al que pertenece.
- Dirección del PCB del proceso que tiene reservado entre la unidad.
- Dirección de la cola de bloques de E/S (BES).
- Dirección del Bes que está siendo servido.
- Características de la unidad.