4.1 Dispositivos y manejadores de
dispositivos (drivers)
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.
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.
Dispositivos de E / S
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
Manejadores de Dispositivos
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.
4.2 Mecanismos y funciones de los manejadores de dispositivos
El
controlador es el componente más 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 la CPU. El Sistema Operativo
generalmente trabaja con el controlador y no con el dispositivo.
Técnicas de E/S
E/S programada: El procesador emite una orden de E/S de parte de un proceso
a un modulo de E/S; el proceso espera entonces a que termine la operación,
antes de seguir.
E/S dirigida por interrupciones: El procesador emite una orden de E/S
de parte de un proceso, continua la ejecución de las instrucciones siguientes y
el modulo de E/S lo interrumpe cuan do completa su trabajo. Las instrucciones
siguientes pueden ser del mismo proceso, si no es necesario para este esperar
la terminación de E/S. en otro caso, el proceso se suspende a la espera de la
interrupción, mientras se realiza otro trabajo.
|
Sin interrupciones
|
Con interrupciones
|
|
|
Transferencia de E/S a memoria a través del
procesador
|
E/S programada
|
E/S dirigida por interrupciones
|
|
Transferencia de E/S directa a memoria
|
Acceso directo a memoria (DMA)
|
Funciones
de los manejadores de dispositivos
Funciones
generalmente realizadas por el software independiente del dispositivo:
- Interfaz uniforme para los
manejadores de dispositivos.
- Nombres de los dispositivos.
- Protección del dispositivo.
- Proporcionar un tamaño de bloque
independiente del dispositivo.
- Uso de buffer.
- Asignación de espacio en los
dispositivos por bloques.
- Asignación y liberación de los dispositivos
de uso exclusivo.
- Informe de errores.
Las
funciones básicas 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 simbólicos de los dispositivos
con el nombre adecuado.
Un nombre de dispositivo determina de manera única el nodo-i de
un archivo especial:
- Este nodo-i contiene el número
principal del dispositivo, que se utiliza para localizar el
manejador apropiado.
- El nodo-i contiene también
el número secundario de dispositivo, que se transfiere
como parámetro al manejador para determinar la unidad por leer o escribir.
El software
independiente del dispositivo debe:
- Ocultar a los niveles superiores
los diferentes tamaños de sector de los distintos discos.
- Proporcionar un tamaño uniforme de
los bloques, por ej.: considerar varios sectores físicos como un solo
bloque lógico.
4.3 Estructuras de datos para manejo de dispositivos
¿Qué es una estructura?
Los
sistemas operativos actuales son grandes y complejos, estos deben poseer una
ingeniería correcta para su fácil actualización y para que puedan cumplir su
función correctamente. La estructura es generalmente modular, cada modulo
cumple una función determinada e interactúa con los demás módulos.
Estructura simple o sistema
monolítico
El
sistema MS-DOS es, sin duda, el mejor sistema operativo para microcomputadoras.
Sin embargo, sus interfaces y niveles de funcionalidad no están bien definidos.
Los programas de aplicación pueden acceder a operaciones básicas de entrada /
salida para escribir directamente en pantalla o discos. Este libre acceso, hace
que el sistema sea vulnerable, ya que un programa de aplicación puede eliminar
por completo un disco rígido por alguna falla. Además este sistema, también
esta limitado al hardware sobre el que corre.
Otra
estructura simple es la utilizada por la versión original de UNIX, esta
consiste de dos partes separadas, el kernel y los programas de sistemas . El
kernel fue posteriormente separado en manejadores (drivers) de dispositivos y
una serie de interfaces. El kernel provee el sistema de archivos, la
programación de CPU, el administrador de memoria y otras funciones del sistema
operativo que responden a las llamadas del sistema enunciadas
anteriormente.
Es una forma de
relación entre el kernel y el software los sistemas operativos que
usaron este sistema fueron freedbsd, unix y linux.
Estructura por capas (layers)
Las nuevas
versiones de UNIX se diseñaron para hardware mas avanzado. Para dar mayor
soporte al hardware, los sistemas operativos se dividieron en pequeñas partes.
Ahora los sistemas operativos tienen mayor control sobre el hardware y las
aplicaciones que se ejecutan sobre este.
La
modularizacion de un sistema se puede presentar de varias formas, la mas
utilizada es la de capas, la cual consiste en dividir al sistema operativo en
un numero de capas. La capa de menor nivel es el hardware y la de mayor nivel
es la interfaz con el usuario. La
principal ventaja es que cada capa cumple con una serie de funciones y
servicios que brinda a las otras capas, esto permite una mejor organización del
sistema operativo y una depuración mas fácil de este.
BUFFERING (uso de memoria
interna)
Trata
de mantener ocupados tanto la CPU como los dispositivos de E/S. Los datos se
leen y se almacenan en un buffer, una vez que los datos se han leido y la CPU
va a iniciar inmediatamente la operacion con ellos, el dispositivo de entrada
es introducido para iniciar inmediatamente la siguiente lectura.
La
CPU y el dispositivo de entrada permanecen ocupados. Cuando la CPU este libre
para el siguiente grupo de datos, el dispositivo de entrada habra terminado de
leerlos. La CPU podra empezar el proceso de los ultimos datos leidos, mientras
el dispositivo de entrada iniciara la lectura de los datos siguientes.
SPOOLING
Esta
forma de procesamiento de denomina spooling, utiliza el disco como un buffer
muy grade para leer tan por delante como sea posible de los dispositivos de
entrada y para almacenar los ficheros hasta que los dispositivos de salida sean
capaces de aceptarlos.
Es
una caracteristica utilizada en la mayoria de los sistemas operativos.
Los procesos de usuario emiten
peticiones de entrada/salida al sistema operativo. Cuando un proceso solicita
una operación de E/S, el sistema operativo prepara dicha operación y bloquea al
proceso hasta que se recibe una interrupción del controlador del dispositivo
indicando que la operación está completa. Las peticiones se procesan de forma
estructurada en las siguientes capas:- Manejadores de interrupción.
- Manejadores de dispositivos o
drivers.
- Software de EIS 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 gestión 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 interrupción
Los manejadores de interrupción se encargan de tratar las
interrupciones que generan los controladores de dispositivos una vez que éstos
están listos para la transferencia de datos o bien han leído o escrito los
datos de memoria principal en caso de acceso directo a memoria. Para tratar
dicha interrupción se ejecuta el correspondiente manejador de interrupción cuyo
efecto es el de salvar los registros, comunicar el evento al manejador del
dispositivo y restaurar la ejecución de un proceso (que no tiene por qué ser el
interrumpido).
Los manejadores de interrupción suelen hacer algo más que
comunicar el evento al manejador de dispositivo. Cuando una interrupción ocurre
muy frecuentemente, caso del reloj, o cuando la cantidad de información a
transferir es muy pequeña, caso del teclado, sería muy costoso comunicar
siempre el evento al manejador de dispositivo asociado. En estos casos, el
propio manejador de interrupción registra la ocurrencia del evento, bien
mediante el incremento de una variable global para el reloj o la acumulación de
caracteres en un buffer del teclado. La notificación al manejador se hace
únicamente cada cierto número de ocurrencias del evento, en el caso del reloj, o
activando unflag que indica que hay datos en el buffer del teclado.
4.4 Operaciones de Entrada /salida
Tanto en la E/S programada como la
basada en interrupciones, la UCP 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 la UCP y la E/S consiste en
que el controlador del dispositivo se pueda encargar de efectuar la
transferencia de datos, liberando de este trabajo a la UCP, e interrumpir a la
UCP sólo cuando haya terminado la operación completa de E/S. Esta técnica se
denomina acceso directo a memoria (DMA, Direct Memory Access).
Cuando
se utiliza acceso directo a memoria, es el controlador el que se encarga
directamente de transferir los datos entre el periférico y la memoria
principal, sin requerir intervención alguna por parte del procesador. Esta
técnica funciona de la siguiente manera: cuando el procesador desea que se
imprima un bloque de datos, envía una orden al controlador indicándole la
siguiente información:
- Tipo de operación: lectura o escritura.
- Periférico involucrado en
la operación.
- La dirección de memoria desde la que se va a leer o a la que va
a escribir directamente con el controlador de dispositivo (dirección).
- El número de bytes a transferir (contador).
Los pasos a
seguir en una operación de E/S con DMA son los siguientes:
1. Programación de la operación de E/S. Se indica al controlador
la operación, los datos a transferir y la dirección de memoria sobre la que se
efectuará la operación.
2. El controlador contesta aceptando la petición de E/S.
3. El controlador le ordena al dispositivo que lea (para operación
de lectura) una cierta cantidad de datos desde una posición determinada del
dispositivo a su memoria interna.
4. Cuando los datos están listos, el controlador los copia a la
posición de memoria que tiene en sus registros, incrementa dicha posición de
memoria y decrementa el contador de datos pendientes de transferir.
5. Los pasos 3 y 4 se repiten hasta que no quedan más datos por
leer.
6. Cuando el registro de contador está a cero, el controlador
interrumpe a la UCP para in dicar que la operación de DMA ha terminado.
Funciones
implicadas en las operaciones de entrada/salida
Para
que un computador pueda ejecutar un programa debe ser ubicado previamente en la
memoria, junto con los datos sobre los que opera, y para ello debe existir una
unidad funcional de entrada de información capaz de escribir en la memoria
desde el exterior. Análogamente, para conocer los resultados de la ejecución de
los programas, los usuarios deberán poder leer el contenido de la memoria a
través de otra unidad de salida de datos. La unidad de
Entrada/Salida (E/S) soporta estas funciones, realizando las
comunicaciones del computador (memoria) con el mundo exterior (periféricos).
Los dispositivos periféricos que se pueden conectar a un computador se suelen
clasificar en tres grandes grupos:
- Dispositivos de presentación
de datos. Son dispositivos con los que interactúan los usuarios, portando datos
entre éstos y la máquina, por ejemplo, ratón, teclado, pantalla,
impresora, etc.
- Dispositivos de almacenamiento de
datos. Son dispositivos que forman parte de la jerarquía de memoria del
computador. Interactúan de forma autónoma con la máquina, aunque también
sirven para el intercambio de datos con el usuario, por ejemplo, los
discos magnéticos.
- Dispositivos de comunicación con
otros procesadores. Permiten la comunicación con procesadores remotos a
través de redes, por ejemplo, las redes de área local o global.
- Dispositivos de adquisición de
datos. Permiten la comunicación con sensores y actuadores que operan de
forma autónoma en el entorno del computador. Se utilizan en sistemas de
control automático de procesos por computador y suelen incorporar conversores
de señales A/D y D/A.


No hay comentarios:
Publicar un comentario