Este trabajo busca dejar
claros conceptos fundamentales relacionados al funcionamiento interno de los
sistemas operativos y especificamente a como estos controlan el hardware que
conectamos a la PC atraves de los
diferentes puertos a los que tenemos acceso.
OBJETIVOS
Se busca comprender el
funcionamiento de los dispositivos y/o perifericos que se encuentran conectados
a los computadores, asi como el comportamiento del procesador cuando el
dispositivo termina su proceso produciendose la interrupcion de puerto, asi
mismo como identificar los diferentes tipos de interrupciones que se podrian
presentar durante el dia a dia del uso del sistema.
GESTIÓN DE LOS DISPOSITIVOS
Los
dispositivos hardware de entrada/salida, también conocidos como “periféricos”,
son elementos complejos. Para hacer más fácil el trabajo de los programadores,
es preferible ocultar los detalles de estos dispositivos, de manera que los
programas no tengan que diseñarse en función de los mismos, sino que sean
independientes de ellos. Sera el software del sistema operativo el encargado de
conseguir dicha independencia, a través de las operaciones de E/S que
utilizaran los programas y que serán independientes del tipo y modelo del
periférico.
El
software del sistema operativo para manejar los dispositivos de entrada y
salida representa aproximadamente un 50%, del total del código mismo.
Proporciona a los
programadores
y procesos las siguientes funciones:
Comandos
que faciliten el uso de los periféricos.
Gestión
de interrupciones.
Gestión
de errores.
Conjunto de llamadas al sistema operativo para que los programadores puedan realizar las operaciones de entrada/salida.
Conjunto de llamadas al sistema operativo para que los programadores puedan realizar las operaciones de entrada/salida.
DISPOSITIVO
Son
estructuras sólidas, electrónicas y mecánicas las cuales son diseñadas para un
uso específico, estos se conectan entre sí para crear una conexión en común y
obtener los resultados esperados, siempre y cuando cumplan con las reglas de configuración.
Dispositivos de
entrada
Son
los medios por el cual el usuario proporciona órdenes, comandos, instrucciones
y
datos
de diversa índole a la computadora, para que ésta los procese.
Dispositivos de Salida
Son
aquellos dispositivos que proporcionan al usuario el resultado final del
procesamiento de la información. Entre ellos tenemos el monitor, la impresora,
las bocina y la tarjeta de audio.
Se
pueden clasificar según el tipo de transmisión de información en dos grande scategorías:
Dispositivos de bloque
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.
Dispositivos de carácter
Las
principales características de los dispositivos de carácter 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 ejemplo típico de dispositivos de carácter son las
impresoras de línea, terminales, interfaces de una red, mouse, 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.
Los
dispositivos de E/S se pueden agrupar en tres grandes grupos según su función:
Ø
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 el CPU. 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 memorias flash) 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 comunes de esta clase son los módems, 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.
Características de los
dispositivos
Los dispositivos se caracterizan por su heterogeneidad, lo que
introduce complejidad en el sistema operativo. Algunas de las características
en las que los dispositivos pueden diferir son las siguientes:
Ø
Unidad de transferencia. Unos dispositivos
utilizan el byte como unidad de transferencia (dispositivos de caracteres, como
el teclado o el ratón). Otros transfieren y/o almacenan la información en
bloques (dispositivos de bloques, como discos y cintas magnéticas).
Ø
Velocidad. Los rangos en los que se mueven los
dispositivos son muy amplios. Los discos y los dispositivos de comunicación
transfieren millones de caracteres por segundo y pueden hacerlo a velocidad
constante, mientras que con el teclado se transfieren a lo sumo unos cuantos
caracteres por segundo, con un periodo concreto impredecible.
Ø
Representación de los datos. Incluso un mismo
dispositivo puede utilizar diferentes codificaciones configurables en la
instalación, como es el caso del teclado y el monitor.
Ø
Protocolos de comunicación. La comunicación
entre el dispositivo y la CPU se realiza de acuerdo a un determinado protocolo
que depende del dispositivo y del bus de comunicación.
Ø
Operaciones. Hay dispositivos de entrada, de
salida y de entrada/salida. Además, algunos dispositivos requieren operaciones
específicas (por ejemplo, posicionar el cabezal de lectura/escritura en los
discos).
Ø
Errores. Las condiciones de error varían con la
naturaleza del dispositivo. Por ejemplo, en la impresora hay que tratar la
falta de papel como una situación de error específica, mientras que en un disco
puede haber errores en el posicionamiento del cabezal.
Para proporcionar una forma homogénea de direccionar los
dispositivos, a nivel hardware éstos se conectan al sistema mediante
controladores. El sistema operativo ya no trata con el dispositivo en sí mismo,
sino con una interfaz que lo representa mediante un conjunto de direcciones o
registros del controlador, que se pueden direccionar en el espacio de
direcciones de memoria o constituir un espacio de direcciones independientes.
El sistema se comunica con el controlador mediante operaciones de
lectura/escritura sobre los registros de datos, estado y control, permitiendo
tanto la transferencia de información como el diagnóstico y configuración del
dispositivo. Estas operaciones las realizan las funciones de más bajo nivel del
núcleo del sistema operativo, y son dependientes del hardware.
Tipos de entrada/salida
Por otra parte, y dependiendo
en gran parte de las características del dispositivo, hay que distinguir tres
tipos de entrada/salida, en función de cómo el sistema sesincroniza con el
controlador:
Ø
E/S programada. La sincronización es por
encuesta, realizándose un bucle de espera activa en la consulta del registro de
estado del controlador. Los sistemas operativos multiprogramados evitan este
tipo de operación.
Ø
E/S por interrupciones. El controlador activa
una interrupción que permite lacomunicación asíncrona del sistema operativo,
que puede estar realizandootras tareas, con el dispositivo. Es la base que
permite implementar un sistemaoperativo multiprogramado.
Ø
E/S por DMA. Los dispositivos de bloques, que
requieren una tasa de transferenciamuy elevada, utilizan el acceso directo a
memoria para las operaciones de entrada/salida, bien utilizando ciclos de
memoria libres (robo de ciclo), bienadueñándose de los buses de memoria para
transferir un bloque completo.Este tipo de entrada/salida implica la
utilización de interrupciones para la sincronización con el fin de la
transferencia.
La evolución del hardware ha llevado a incluir capacidad de
proceso dentro deldispositivo (procesadores de E/S). El sistema operativo se
comunica con elprocesador de E/S para indicarle los parámetros de la operación
a realizar y ordenarsu inicio. El procesador de E/S ejecuta un código propio
que controla los detalles dela operación. Por otra parte, lo habitual hoy en
día es incluir una cierta cantidad dememoria RAM en el controlador o en el
dispositivo, sobre la que el sistema realiza la transferencia. Esto ocurre por
ejemplo con los discos, las impresoras y laspantallas gráficas, que pueden
contar con varios Mbytes de memoria.Finalmente, un dispositivo puede estar
accesible a través de una red, de forma
transparente a las aplicaciones, situación habitual hoy en día, por ejemplo en
las impresoras. Una pila de protocolos proporciona la comunicación entre la
máquina cliente, que lanza la operación, y el servidor remoto, que gestiona el
dispositivo
ESQUEMAS DE CONEXIÓN Y MANEJO DE DISPOSITIVOS
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
Suscribirse a:
Entradas (Atom)