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.
- Conexión de un dispositivo de E/S
a una computadora En la siguiente figura se muestra el esquema general de
conexión de periféricos a una computadora. En el modelo de un periférico
se 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).
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 código de e / s representa una
fracción 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.
Se denomina periféricos a los aparatos o dispositivos auxiliares e independientes conectados a la unidad central de procesamiento de una computadora.
Se consideran periféricos tanto a las unidades
o dispositivos a través de los cuales la computadora se
comunica con el mundo exterior, como a los sistemas que almacenan o archivan la
información, sirviendo de memoria auxiliar de la memoria principal.
Se pueden clasificar en dos grandes
categorías:
- Dispositivos
de bloques: dispositivos que almacenan la
información en bloques de tamaño fijo (discos)
- Dispositivos
de caracteres: maneja la información mediante un flujo
de caracteres sin estructurarlos en bloques (mouse, teclado, impresora)
Las principales características de los dispositivos
de bloque son:
- La información se almacena en bloques de
tamaño fijo.
- Cada bloque tiene su propia dirección.
- Los tamaños más 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 demás, en cualquier momento.
- Un ejemplo típico de dispositivos de bloque
son los discos.
Las principales características de los dispositivos
de caracter son:
- La información se transfiere como un flujo de
caracteres, sin sujetarse a una estructura de bloques.
- No se pueden utilizar direcciones.
- No tienen una operación de búsqueda.
- Un ejemplos típico de dispositivos de caracter
son las impresoras de línea, terminales, interfaces de una red, ratones,
etc.
Algunos dispositivos no se ajustan a este
esquema de clasificación, por ejemplo los
relojes, que no tienen direcciones por medio de bloques y no generan o aceptan
flujos de caracteres.
El sistema de archivos solo
trabaja con dispositivos de bloque abstractos, por lo que encarga
la parte dependiente del dispositivo a un software de menor
nivel, el software manejador del dispositivo.
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 comunicación 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
(ratón, teclado, etc.) como para salida (impresoras, pantalla, etc.).
Existen periféricos menos habituales, pero más sofisticados, tales como un
escáner, lectores de huella digital, lectores de cinta magnética,
instrumentos musicales digitales (MIDI), etc.
- Dispositivos de almacenamiento. Se usan para proporcionar almacenamiento
no volátil de datos y memoria. Su función primordial es abastecer de datos
y almacenamiento a los programas que se ejecutan en la UCP. Según 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 través de una red. Los dos tipos de dispositivos más
importantes de esta clase son los módem, para comunicación vía red
telefónica, y las tarjetas de interfaz a la red, para conectar la computadora
a una red de área local.
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.
- Almacenamiento
Algunos dispositivos de entrada y
salida:
- Entrada:
- Teclado
- Ratón
- Joystick
- Lápiz óptico
- Micrófono
- Webcam
- Escáner
- Escáner de código de barras
- Salida:
- Monitor
- Altavoz
- Auriculares
- Impresora
- Plotter
- Proyector
- Entrada/salida (mixtos):
- Unidades de almacenamiento: CD,DVD, Blu-ray,
Memory cards, Disco Duro Externo, Disco duro, Pendrive USB.
- Módem
- Router
- Pantalla táctil
- Tarjeta de red
Un controlador (instaladores) de disposotivos,
normalmente llamado controlador en inglés (device driver) es un programa que
infórmatico que permite al sistema operativo interactuar con un periférico,
haciendo una abstracción del hardware del dispositivo y proporcionando una
interfaz- posiblemente estardarizada - para usarlo. Se puede esquematizar
como un manual de instrucciones que se indica al sistema operativo, cómo debe controlar
y comunicarse con un dispositivo en particular. Por lo tanto es una pieza
esencial, sin el cual, no se podría usar el hardware.Los controladores de
dispositivos son programas añanidos al núcleo del sistema para gestionar
periféricos y dispositivos oficiales.
Existen tantos tipos de controladores
como tipos de periféricos y es común mas de un tipo de controlador posible
para el mismo dispositivo, cada uno ofreciendo un nivel distinto de funcionalidades. Por
ejemplo, aparte de los oficiales ( normalmente disponibles en la página web del
fabricante se pueden encontrar tambienlos proporcinados por el sistema
operativo o tambien versiones no oficiales hechas por terceros.
Las unidades de e / s generalmente
constan de:
- Un componente mecánico.
- Un componente electrónico, el controlador del
dispositivo o adaptador.
Muchos controladores pueden manejar más
de un dispositivo. El S. O. generalmente trabaja con el controlador y no
con el dispositivo.
Los modelos más frecuentes de
comunicación entre la cpu y los controladores son:
- Para la mayoría de las micro y mini computadoras:
- Modelo de bus del sistema.
- Para la mayoría 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 comunicación es mediante un flujo
de bits en serie que:
- Comienza con un preámbulo.
- Sigue con una serie de bits (de un sector de
disco, por ej.).
- Concluye con una suma para verificación o un
código corrector de errores.
- El preámbulo:
- Se escribe al dar formato al disco.
- Contiene el número de cilindro y sector, el
tamaño de sector y otros datos similares.
El controlador debe:
- Convertir el flujo de bits en serie en un
bloque de bytes.
- Efectuar cualquier corrección 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 parámetros de los comandos también se cargan
en los registros de los controladores.
Al aceptar el comando, la cpu puede dejar al controlador y dedicarse a otro trabajo.
Al aceptar el comando, la cpu puede dejar al controlador y dedicarse a otro trabajo.
Al terminar el comando, el
controlador provoca una interrupción para permitir que el S.
O.:
- Obtenga el control de la cpu.
- Verifique los resultados de la operación.
La cpu obtiene los resultados y
el estado del dispositivo al leer uno o más bytes de información de los
registros del controlador.
Ejemplos de controladores,
sus direcciones de e / s y sus vectores de
interrupción en la PC IBM pueden verse en la Tabla 5.1.
Controlador de e / s
|
Dirección de e / s
|
Vector de interrupciones
|
Reloj
|
040 - 043
|
8
|
Teclado
|
060 - 063
|
9
|
Disco duro
|
320 - 32f
|
13
|
Impresora
|
378 - 37f
|
15
|
Disco flexible
|
3f0 - 3f7
|
14
|
Rs232 primario
|
3f8 - 3ff
|
12
|
Rs232 secundario
|
2f8 - 2ff
|
11
|
Tabla 5.1: Controladores de e / s, direcciones de
e / s y vector de interrupciones.
|
Cada dispositivo de E/S, o cada clase de
dispositivos, tiene un manejador asociado en el sistema operativo.
Dicho manejador incluye: código
independiente del dispositivo para proporcionar al nivel superior del sistema
operativo una interfaz de alto nivel y el código dependiente del dispositivo
necesario para programar el controlador del dispositivo a través de sus
registros y datos. La tarea de un manejador de dispositivo es aceptar
peticiones en formato abstracto, de la parte del código de E/S independiente
del dispositivo, traducir dichas peticiones a términos 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 petición pendiente y ordena su
ejecución. La política de extracción de peticiones de la lista es dependiente
de manejador y puede ser FIFO. Una vez enviada la petición al controlador, el
manejador se bloquea o no, dependiendo de la velocidad del dispositivo. Para
los lentos (discos) se bloquea esperando una interrupción. Para los rápidos
(pantalla, discos RAM, etcétera) responde inmediatamente. Después de recibir el
fin de operación, controla la existencia de errores y devuelve al nivel
superior el estado de terminación de la operación. Si tiene operaciones
pendientes en la cola de peticiones, atiende a la siguiente, en caso de que le
toque ejecutar después de la operación de E/S. En caso contrario se bloquea.
Todo el código
que depende de los dispositivos aparece en los manejadores de
dispositivos. (Ver figura 4.1.1)

Figura 4.1.1

Figura 4.1.1
Cada controlador
posee uno o más registros de dispositivos:
- Se utilizan para darle los
comandos.
- Los manejadores de dispositivos
proveen estos comandos y verifican su ejecución 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 ejecución de dichas
solicitudes.
Si al recibir una
solicitud el manejador esta ocupado con otra solicitud, agregara la nueva
solicitud a una cola de solicitudes pendientes.
La solicitud de e / s, por ej. para un disco, se debe traducir de términos abstractos a términos concretos:
La solicitud de e / s, por ej. para un disco, se debe traducir de términos abstractos a términos concretos:
- El manejador de disco debe:
(ver figura 4.1.2)
- Estimar el lugar donde se
encuentra en realidad el bloque solicitado.
- Verificar si el motor de la
unidad funciona.
- Verificar si el brazo esta
colocado en el cilindro adecuado, etc.
- Resumiendo: debe decidir
cuales son las operaciones necesarias del controlador y su orden.
- Envía los comandos al controlador
al escribir en los registros de dispositivo del mismo.
- Frecuentemente el manejador del
dispositivo se bloquea hasta que el controlador realiza cierto trabajo;
una interrupción lo libera de este bloqueo.
- Al finalizar la operación debe
verificar los errores.
- Si todo esta o.k. transferirá los
datos al software independiente del dispositivo.
- Regresa información de estado
sobre los errores a quien lo llamo.
- Inicia otra solicitud pendiente o
queda en espera.

Figura 4.1.2