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.
En la conexión de un dispositivo de E/S a una computadora
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).
El sistema operativo
inicia operaciones de E/S cuando se lo solicite un proceso, pero se desconoce
cuándo termina, puesto que dependerá de la velocidad del hardware de E/S, de su
tecnología y de otros aspectos físicos. Para conocer el momento de terminación
de la operación hay dos métodos, independientemente del tipo de conexión
utilizada:
Ø
Polling: Consiste en comprobar constantemente el
estado del dispositivo. Tiene el inconveniente de ocupar el procesador un
tiempo indeseado.
Ø
Interrupciones: El procesador continua
ejecutando otros procesos y solo cuando el dispositivo concluye la operación
llama la atención del procesador, interrumpiéndole para que tenga conocimiento
del hecho, y además que pueda realizar las gestiones derivadas de dicha
interrupción.
Los
dispositivos complejos se conectan al ordenador a través de un controlador o
adaptador, el cual contiene el estado del dispositivo, le controla y realiza la
transferencia de datos. Cada controlador puede manejar varios dispositivos del
mismo tipo y modelo.
Los
controladores son tarjetas hardware que se conectan al ordenador a través del
bus, y que tienen un conector para poder conectar el dispositivo al ordenador.
Estas tarjetas adaptan los niveles de señal al bus del ordenador, y traduce las
instrucciones que se envían al dispositivo o dispositivos que controlan.
Cada
controlador tiene unos registros como vía de comunicación entre el procesador y
los dispositivos controlados, conociéndose como registros del dispositivo o
registros de E/S.
Estos
registros tienen 4 misiones:
1.
Informar del estado de dispositivo.
2.
Transferir instrucciones al dispositivo.
3.
Recibir datos desde el dispositivo.
4.
Enviar datos al dispositivo.
El
sistema operativo realizara las operaciones de E/S usando comandos específicos
que entiende el controlador, y que recibe a través de estos registros. Cuando
el controlador acepta un comando, el procesador no volverá a ocuparse de la
operación de E/S hasta que reciba una interrupción indicándole que ha terminado
el servicio solicitado. Gracias a los registros, el Sistema Operativo podrá
conocer si la operación se realizó correctamente o no, si el dispositivo está
apagado o tiene algún error hardware.
Buffering y Spooling
Con
el fin de agilizar las operaciones de entrada y salida y descarga al procesador
de estos trabajos, permitiendo que se pueda ejecutar los procesos simultáneamente
con el trabajo de los periféricos, se diseñaron dos técnicas para conseguirlo,
fueron el Buffering y Spooling.
Buffering
A
veces la velocidad de los periféricos no se adapta a la velocidad del
procesador, porque los periféricos son lentos o porque el proceso trabaja a
ráfagas. Es decir, que necesita conjuntos de información para procesar de
golpe. Para solucionar este problema y que ni los periféricos ni el procesador
se deban esperar mutuamente, el sistema operativo utiliza una memoria
intermedia llamada buffer. La función de esta memoria es amortiguar las
diferencias de velocidad.
Cuando
tenemos un buffer, el periférico produce información y el proceso la consume.
El periférico sólo debe ponerse de acuerdo con el buffer y únicamente habrá
problemas cuando el buffer este lleno. Por otro lado, el procesador sólo
consumirá información del buffer y sólo deberá esperar cuando el buffer este
vacío.
Spooling
El
SPOOL (SimultaneousPerifhericalOperation On-Line) es una técnica que permite
que las entradas y las salidas de un proceso tengan un paso intermedio en
dispositivos de gran capacidad de almacenamiento. Esto permite que el
computador trabaje con un proceso en concreto mientras los diferentes
periféricos van sacando e incorporando información, de manera más lenta, al
mismo tiempo. El ejemplo típico es el spool de impresora: un proceso puede
obtener una gran cantidad de información en poco tiempo, y en cambio estos
resultados pueden necesitar mucho tiempo para ser impresos. Otro caso muy
corriente es el de trabajar con un procesador de textos y hacer una impresión
de un documento relativamente largo. Si no se utiliza el spool, tanto el
computador como el usuario no podrán hacer nada hasta que se termine de
imprimir.
El
modelo de dispositivos por puertos es clásico en las arquitecturas de Intel. En
ellas, cuando se instala un dispositivo, a su controlador se le asigna un
puerto de E/S, una interrupción hardware y un vector de interrupción. Para
efectuar una operación de E/S la UCP ejecuta operaciones port o portout con la
dirección de puerto del dispositivo y con parámetros para indicar qué registro
se quiere manipular. Todas las operaciones de entrada/salida (pantalla gráfica,
impresoras, ratón, discos, etc.) se realizan usando esas dos instrucciones de
lenguaje máquina con los parámetros 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, típico de las arquitecturas de
Motorola, asigna a cada dispositivo de E/S un rango de direcciones de memoria a
través de las cuales se escribe sobre los registros del controlador. En este
modelo no hay instrucciones específicas de E/S, sino que las operaciones se
llevan a cabo mediante instrucciones máquina 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 física para asig nar las direcciones de E/S.
Los
dispositivos de almacenamiento secundario y terciario manejan la información en
unidades
de tamaño 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 demás. Los dispositivos de bloque lo son porque el hardware fuerza la
existencia de accesos de un tamaño determinado. Un disco, por ejemplo, se
divide en sectores de 512 bytes o de 1 KB, siendo un sector la unidad mínima de
transferencia que el controlador del disco puede manejar.
Los
dispositivos de caracteres, como los terminales, impresoras, tarjetas de red,
módems, etcétera, no almacenan información en bloques de tamaño fijo. Gestionan
flujos de caracteres de forma lineal y sin ningún 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 carácter 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 línea serie también es un dispositivo de
caracteres. Su controlador se limita a enviar al periférico el flujo de
caracteres que debe representar en la pantalla y a recibir del mismo los
caracteres tecleados por el usuario.
Existen tantos tipos de controladores como
tipos de periféricos, y es frecuente encontrar más de un controlador posible
para el mismo dispositivo, cada uno ofreciendo un nivel distinto de
funcionalidades.
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 años ha existido un esfuerzo importante de
estandarización de los dispositivos, lo que permite usar un mismo controlador
para dispositivos de distintos fabricantes. Un buen ejemplo lo constituyen los
dispositivos SCSI (SrnaIl? ComputerSvsterninterftice), cuyos controladores
ofrecen una interfaz común independientemente de que se trate de un disco, una
cinta, un CD-ROM, etc. Otro buen ejemplo son los controladores IDE (Integrated
Drive Electronics), que suelen usarse para conectar los discos en todas las
computadoras personales. 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
No hay comentarios:
Publicar un comentario