Entrada/Salida
Los mecanismos de E/S de la computadora tiene como objetivo el intercambio de informacion entre los perifericos y la memoria principal o los registros del procesador.Dentro de lo que es E/S se van a encontrar con varias palabras que parecen similares pero en ciertos casos no lo son, y que ademas dentro de la red se encontraran con definiciones distintas de la misma palabra o incluso distintas palabras haciendo referencia a la misma cosa

en fin estas palabras son:
Modulo E/S
Dispositivo E/S
Periferico E/S
Controlador E/S
Unidad E/S
bien veamos...
El modulo es lo mismo que el controlador.
los dispositivos son lo mismo que las unidades.
Los perifericos son el conjunto de:
modulo y dispositivos o modulo y unidades o controlador y dispositivos o controlador y unidades

ahora vamos a definir estos 3 conceptos.
DispositivosEstos son faciles de indentificar, son componentes del hardware capaces de generar un señal de E/S.
existen 4 tipos de dispositivos: de entrada, de salida, mixtos y de memoria masiva auxiliar(estos ultimos entrarian dentro de los mixtos pero yo los considero aparte)
Por ejemplo algunos dispositivos son:
De entrada:- Teclado
- Ratón
- Lápiz óptico
- Lector óptico
- Lector de caracteres imanables
- Lector de bandas magnéticas
- Lector de tarjetas "Chip" o inteligentes (Smart Card)
- Lector de marcas
- Lector de caracteres manuscritos
- Lector de códigos de barras
- Reconocedores de voz
- "Joystick "o palanca manual de control
- Digitalizador o tabla gráfica
- Pantalla sensible al tacto
- Scanner o rastreadores
- Web cams
De salida:- Impresora
- Sintetizado de voz
- Visualizador
- Trazador de gráficos o "plotter"
- Monitor
- Microfilm
- Instrumentación científica o industrial
- Parlantes
Mixtos:- Terminal interactivo
- Terminal teletipo
- Pantalla sensible al tacto
- Lectora/perforadora de tarjetas
- Módem
- Multifuncion
Memoria masiva auxiliar:- Cinta magnética
- Disco magnético
- Tambor magnético
- Disco óptico
- Sistema de CD-ROM
- DVD- Disco Versátil Digital
Debemos recordar que
toda señal de entrada produce una o mas señales de salidaTambien podemos calificar los dispositivos en locales (Se encuentran cerca de la computadora) y Remotos (Si debido a su situación lejana la conexión hay que realizarla a través de líneas especiales de transmisión son remotos)
Bueno aca hay la descripcion de algunos
Para ver este enlace Registrate o Inicia SesionDispositivos
.
ModuloEl modulo o controlador de E/S es un chip de la
Para ver este enlace Registrate o Inicia Sesionplaca madre
que se encarga de las comunicaciones entre el
Para ver este enlace Registrate o Inicia SesionSouthbridge
del
Para ver este enlace Registrate o Inicia Sesionchipset
y otros dispositvos del sistema.
Para que les sea mas sencillo el modulo de E/S recibe la informacion de los dispositivos y la manda a la CPU aunque esto viendolo mas minociosamente en realidad recibe la informacion de los disposotivos luego la manda al Southbridge que sera el encargado de enviarla al
Para ver este enlace Registrate o Inicia SesionNorthbridge
y recien ahi ira a la CPU.

Como pueden apreciar aca el modulo(controlador) hace de:
Interface con la CPU y Memoria
Interface a uno o mas Dispositivos
Sin embargo esa es un de sus funciones, tambien se encarga de:
Comunicación con la CPU
Comunicación con el dispositivo
Buffering de datos
Control & Timing
Detección de error
¿que es timing?
no he encontrado una definicion para timing pero esta es muy buena!!
Timing es la cualidad que hace o quiebra un peleador. Es la habilidad para reconocer y reaccionar inmediatamente a los cambios y oportunidades durante los entrenamientos de sparring o peleas. Por ejemplo, su oponente se tropieza. Usted ve el error, instantáneamente tomando ventaja de ello con una patada o puñetazo. Eso es timing.
Aunque no sea del tema se puede adaptar, el timing vendria a ser le gestion de de las distintas señales de E/S.
Aca les dejo un pequeño grafico para que mas o menos vean como se compone:

Y aca les dejo una imagen de un chipset intel sacada de la wikipedia:
PerifericosUn periferico es un Dispositivo+Controlador como muestra la figura siguiente

El controlador(modulo) tiene una serie de registros incluidos en el mapa de E/S de la computadora, por lo que se pueden acceder mediante instrucciones de maquina de E/S.
El registro de datos sirve para el intercambio de datos. En él ira cargando el controlador los datos leídos y de él ira extrayendo lo datos para su escritura en el periférico.
Un bit del registro de estado sirve para indicar que el controlador puede transferir una palabra. En las operaciones de lectura esto significa que ha cargado en el registro de datos un nuevo valor, mientras que en las de escritura significa que necesita un nuevo dato.
Otros bits de este registro sirven para que el controlador indique los problemas que ha encontrado en la ejecución de la última operación de entrada/salida.
El registro de control sirve para indicarle al controlador las operaciones que ha de realizar. Los distintos bits de este registro indican distintas accione que ha de realizar el periférico.
El disco magnéticoEl disco magnético es, para el sistema operativo, el periférico más importante, puesto que sirve de espacio de intercambio a la memoria virtual y sirve de almacenamiento permanente para los programa y los datos, encargándose el sistema operativo de la gestión de este tipo de
dispositivo.
Para entender la forma en que el sistema operativo trata a los discos magnéticos es necesario conocer las características de los mismos, entre las que destacare tres:
Organización de la información, tiempo de acceso y velocidad de transferencia.La organización de la información del disco se realiza en contenedores de tamaño fijos denominados sectores (tamaños típicos del sector son 256, 512 o 1.024 bytes). Como muestra la figura a continuacion, el disco se divide en pistas que, a su vez, se dividen en sectores.
Las operaciones se realizan a nivel de sector, es decir, no se puede escribir o leer una palabra o byte individual: hay que escribir o leer de golpe uno o varios sectores.
El tiempo de acceso de estos dispositivos viene dado por el tiempo que tardan en Posicionar el brazo en la pista deseada, esto es, por el tiempo de búsqueda, más el tiempo que tarda la información de la pista en pasar delante de la cabeza por efecto de la rotación del disco, esto es, mas la
latencia. Fijense que estos tiempos dependen de la posición de partida y de la posición deseada. No se tarda lo mismo en mover el brazo de la pista 1 a la 2 que de la 1 a la 1.385.
Por ello, los fabricantes suelen dar los valores medios y los peores.
Un sistema de cabeza fija presenta solamente latencia sin tiempo de
sincronización. por tanto, suponiendo que gira a 10.000 rpm, tendrá un tiempo medio de acceso de 3 ms (1/2 revolución).
Dispositivos de bloques y caracteresEl disco magnético requiere que se lea o escriba un bloque de información (uno o varios sectores), por lo que se denomina dispositivo de bloques. Existen otros dispositivos de bloques como las cintas magnéticas, los DVD, los CD y los controladores de red. Todos ellos se caracterizan por tener un tiempo de acceso importante comparado con el tiempo de transferencia de una palabra, por lo que interesa amortizar este tiempo de acceso transfiriendo bastantes palabras.
Otros dispositivos como el teclado se denominan de caracteres. puesto que la operación básica de acceso es de un carácter. Estos dispositivos se cauterizan por ser lentos y por no tener un tiempo de acceso apreciablement
e mayor que el tiempo de transferencia de una palabra.
aca un grafico que muestra los tiempode de acceso como para que tengan una idea general:
E/S y concurrenciaLos periféricos son más lentos que el procesador, por ejemplo, durante el tiempo que se tarda en acceder a una información almacenada en un disco, un procesador moderno es capaz de ejecutar varios millones de instrucciones de máquina.
Es, por tanto, muy conveniente que mientras se está esperando a que se complete una operación de E/S el procesador esté ejecutando un programa útil y no un bucle de espera.
Tecnicas de E/S
Las computadoras presentan tres modos básicos de realizar operaciones de E/S:
- E/S programada
- E/S por interrupciones
- E/S por DMA (direct memory access)
La E/S programada exige que el procesador esté ejecutando un programa de E/S, por lo que no existe ninguna concurrencia entre el procesador y la E/S. Sin embargo, en los otros dos modos de E/S el procesador no tiene que estar tendiendo directamente a la E/S, por lo que puede estar ejecutando otro programa. Se dice, entonces, que existe concurrencia entre la E/S y el
procesador. Esta concurrencia permite optimizar el uso del procesador, pero exige que las unidades de control de los periféricos sean más inteligentes, lo que supone que sean más complejas y más caras.
En términos generales, una operación de E/S se compone de tres fases, envío de la orden al periférico, lectura o escritura de los datos y fin de la operación.
La fase de envío de la orden consiste en escribir la orden en los registros del controlador del periférico, operación que puede hacerse mediante unas cuantas instrucciones de salida, Dado que el controlador es un dispositivo electrónico, estas escrituras se pueden hacer a la velocidad de procesador, sin esperas intermedias.
En la fase de transferencia de los datos interviene el periférico, típicamente mucho más lento que el procesador.
Pasemos a explicar cada una de las tecnicas =D
E/S programadaCuando el procesador está ejecutando un programa y encuentra una instrucción de E/S, ejecuta dicha instrucción, enviando una orden al módulo apropiado de E/S. Con E/S programada, el módulo de E/S llevará a cabo la acción requerida y luego activará los bits apropiados en el registro de estado de E/S. El módulo de E/S no lleva a cabo ninguna otra acción para avisar al procesador. En particular, no interrumpe al procesador. Así pues, es responsabilida
d del procesador comprobar periódicamente el estado del módulo de E/S hasta saber que se ha completado la operación.
Con esta técnica, el procesador es el responsable de extraer los datos de la memoria principal cuando va a hacer una salida o poner los datos en la memoria principal cuando se hace una entrada. El software de E/S se escribe de manera tal que el procesador ejecute unas instrucciones que le otorguen el control directo sobre la operación de E/S, incluyendo la comprobación del estado de los dispositivos, el envío de órdenes de lectura o escritura y la transferencia de los datos. Por lo tanto, en el conjunto de instrucciones se incluyen instrucciones de E/S de las siguientes categorías:
• Control: Empleadas para activar un dispositivo externo y decirle qué debe hacer. Por ejemplo, una unidad de cinta magnética puede ser instruida para rebobinar o avanzar un registro.
• Comprobación: Empleadas para comprobar varias condiciones de estado asociadas con un módulo de E/S y sus periféricos.
• Lectura, escritura: Empleadas para transferir los datos entre los registros del procesa- dor y los dispositivos externos.
la desventaja principal de esta técnica: Es un proceso que consume tiempo y que mantiene al procesador ocupado de forma innecesaria.
he aqui un "pedazo de codigo que ayudar a comprender mejor."
Sabiendo que d es el numero de datos a leer
n=0;
while (n < d) {
read registro_control;
if (registro_control = datoDisponible) {
read registro_datos;
store en memoria principal;
n++;
}
}
A simple vista parece que todo esta bien....pero no.
cuando se llege al numero d de datos a leer se termina la operacion de E/S.
Sin embargo hasta que se disponga del primer dato (datoDisponible) el bucle dara unas cuantas vuletas, y una vez que se lea cuando se cambie el dato dara unas cuantas vueltas mas, debido a que el procesador es mucho mas rapido que los perifericos, el tema es que no dara 5 o 6 vueltas mas, dara millones de vueltas mas.
Se denomina espera activa cuando un programa queda en un bucle hasta que ocurra un evento. La espera activa consume tiempo del procesador, por lo que es muy poco recomendable cuando el tiempo de espera es grande en comparación con el tiempo de ejecución de una instrucción.
E/S diriguida por instruccionesEl problema de la E/S programada es que el procesador tiene que esperar un largo rato a que el módulo de E/S en cuestión esté listo para recibir o transmitir más datos. El procesador, mientras está esperando, debe interrogar repetidamente el estado del módulo de E/S. Como resultado, el nivel de rendimiento del sistema en conjunto se degrada fuertemente.
Una alternativa es que el procesador envíe una orden de E/S al módulo y se dedique a hacer alguna otra tarea útil. El módulo de E/S interrumpirá entonces al procesador para requerir sus servicios cuando esté listo para intercambiar los datos. El procesador ejecuta entonces la transferencia de los datos y reanuda el procesamiento anterior.
Seguidamente veremos cómo funciona esto, en primer lugar desde el punto de vista del módulo de E/S. Para la entrada, el módulo de E/S recibe una orden LEER desde el procesador. El módulo de E/S procede entonces con la lectura de los datos desde el periférico asociado. Una vez que los datos están en el registro de datos del módulo, éste envía una señal de interrupción al procesador a través de una línea de control. El módulo espera entonces a que los datos sean solicitados por el procesador. Cuando se haga esta solicitud, el módulo pondrá los datos en el bus de datos y estará listo para otra operación de E/S.
Desde el punto de vista del procesador, la acción para la entrada es como sigue. El procesador envía una orden LEER. Salva entonces el contexto (el contador de programa y los registros del procesador, por ejemplo) del programa en curso, se sale del mismo y se dedica a hacer otra cosa (por ejemplo, el procesador puede estar trabajando con diferentes programas al mismo tiempo). Al finalizar cada ciclo de instrucción, el procesador comprueba si hubo alguna interrupción. Cuando se produce una interrupción desde el módulo de E/S, el procesador salva el contexto del programa que está ejecutando en ese momento y comienza la ejecución de la rutina de tratamiento de la interrupción. En este caso, el procesador lee la palabra de datos del módulo de E/S y la almacena en la memoria. Luego restaura el contexto del programa que emitió la orden de E/S (o de algún otro programa) y reanuda la ejecución.
La E/S por interrupciones es más eficiente que la E/S programada porque elimina las esperas innecesarias. Sin embargo, la E/S por interrupciones sigue consumiendo una gran cantidad de tiempo del procesador, debido a que cada palabra de datos que va de la memoria al módulo de E/S o del módulo de E/S a la memoria debe pasar a través del procesador.
Casi siempre habrá varios módulos de E/S en un sistema informático, así que hacen falta mecanismos que capaciten al procesador para determinar qué dispositivo causó la interrupción y decidir, en caso de varias líneas de interrupción, cuál debe tratar primero. En algunos sistemas, hay varias líneas de interrupción, de forma que cada módulo de E/S envía una señal por una línea diferente. Cada línea tiene una prioridad diferente.
Otra solución sería habilitar una única línea de interrupción, pero utilizando líneas adicionales para indicar la dirección del dispositivo. De nuevo, a diferentes dispositivos se les asignarán prioridades diferentes.
Podemos deducir que la rutina de interrupción deberá hacer la lectura del dato y su almacenamiento en memoria principal, lo cual conlleva un cierto tiempo del procesador.
En este caso se dice que se hace espera pasiva, puesto que el programa que espera el evento no esta ejecutándose la interrupción se encarga de "despertar" al programa cuando ocurre el evento.
E/S por DMALa E/S dirigida por interrupciones, aunque es más eficiente que la simple E/S programada, todavía requiere de la intervención activa del procesador para transferir los datos entre la memoria y un módulo de E/S y, además, cualquier transferencia de datos debe recorrer un camino que pasa por el procesador. Así pues, ambas formas de E/S adolecen de dos desventajas inherentes:
1. La velocidad de transferencia de E/S está limitada por la velocidad con la que el procesador puede comprobar y dar servicio a un dispositivo.
2. El procesador participa en la gestión de la transferencia de E/S; debe ejecutarse una se- rie de instrucciones en cada transferencia de E/S.
Cuando se tienen que mover grandes volúmenes de datos, se necesita una técnica más efi-ciente: el acceso directo a memoria (DMA, Direct Memory Access). La función de DMA se puede llevar a cabo por medio de un módulo separado sobre el bus del sistema o puede estar incorporada dentro de un módulo de E/S. En cualquier caso, la técnica funciona como sigue. Cuando el procesador desea leer o escribir un bloque de datos, emite una orden hacia el módulo de DMA, enviándole la información siguiente:
• Si lo que se solicita es una lectura o una escritura
• La dirección del dispositivo de E/S involucrado
• La dirección inicial de memoria desde la que se va a leer o a la que se va a escribir
• El número de palabras a leer o escribir
El procesador continúa entonces con otro trabajo. Habrá delegado la operación de E/S en el módulo de DMA y dicho módulo es el que tendrá que encargarse de ésta. El módulo de DMA transfiere el bloque entero, una palabra cada vez, directamente hacia o desde la memoria, sin pasar por el procesador. Cuando se completa la transferencia, el módulo de DMA envía una señal de interrupción al procesador. De esta manera, el procesador se ve involucrado sólo al inicio y al final de la transferencia.
El módulo de DMA debe tomar el control del bus para transferir los datos con la memoria. Debido a la competencia por la utilización del bus, puede ocurrir que el procesador necesite el bus pero deba esperar.Esto no es una interrupción; el procesador no salva el contexto y se dedica a hacer otra cosa. En su lugar, el procesador hace una pausa durante un ciclo del bus. El efecto general es hacer que el procesador ejecute con más lentitud durante una transferencia de DMA. No obstante, para una transferencia de E/S de varias palabras, el DMA es bastante más eficiente que la E/S programada o la dirigida por interrupciones
.
Cuando el módulo de E/S en cuestión es un sofisticado canal de E/S, el concepto de DMA debe tenerse en cuenta con más razón. Un canal de E/S es un procesador propiamente dicho, con un conjunto especializado de instrucciones, diseñadas para la E/S. En un sistema informático con tales dispositivos el procesador no ejecuta instrucciones de E/S. Dichas instrucciones se almacenan en la memoria principal para ser ejecutadas por el propio canal de E/S. Así pues, el procesador inicia una transferencia de E/S instruyendo al canal de E/S para ejecutar un programa en memoria. El programa especifica el o los dispositivos, la zona o zonas de memoria para almacenamiento, la prioridad y la acción que llevar a cabo bajo ciertas condiciones de error. El canal de E/S sigue estas instrucciones y controla la transferencia de datos, informando de nuevo al procesador al terminar.
En la siguiente imagen se puede apresiar un diegrma en bloque de cada tecnica de E/S.

Como podran ver DMA es la mas efectiva, sin embargo es la mas cara y complicada como asi tambien la mas nueva, a contrapunto de la programada que es la mas vieja pero la mas barata y facil.
En fin creo que todas las computadoras actuales usan DMA y no solo un modulo, si no no se justificarian esos procesadores ultra rapidas y multi-nucleo si tendrian que estar esperando en un bucle a un periferico

Un aspecto fundamental de esta concurrencia es su explotación. En efecto, de nada sirve descargar al procesador del trabajo de E/S si durante ese tiempo no tiene nada útil que hacer.
Será una función importante del sistema operativo el explotar esta concurrencia la E/S y el procesador, haciendo que este ultimo tenga trabajo útil el mayor tiempo posible.
para finalizar el tema les dejo esta tablita que indica cuando actua el procesador y cuando no.

Una cosa mas que puedo mostrales pero solamente para que tengan una idea visual es como se forma una placa madre, en este caso una INTEL S5000PAL que es de la unica que encontre imagen

