INTRODUCCION

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.


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