“input/output” feliut guzman del valle icom 5007 11 de marzo de 2005. capitulo 5

Post on 28-Jan-2016

227 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

“Input/Output”

Feliut Guzman Del ValleICOM 500711 de marzo de 2005.

Capitulo 5

Que es I/O???

Todas las formas de interactuar con la computadora, desde y hacia ella, se conocen como I/O.

Ejemplos: “webcams”, “pen drives”, “keyboards”, “mouse”, “scanner”, “printer”, “networks”, “monitor”, etc….

Principios del I/O en “Hardware” Ingenieros Eléctricos vs. Programadores “I/O Devices”

“Block Devices” “Character Devices”

“Device Controllers” “Memory-Mapped I/O” “Direct Memory Access (DMA)”

Ingenieros Electricos vs. Programadores

Los ingenieros eléctricos, ven el “hardware” en términos de chips, cables, motores, etc. En otras palabras, cosas físicas.

Los programadores lo ven, como una interfase que se le presenta al “software”, los comandos que el acepta, las funciones que lleva a cabo y los errores que se pueden reportar.

“I/O Devices” “Block Devices”: componentes que

guardan la informacion en forma de bloques, cada bloque tiene una dirección. Esto ayuda a que cada bloque se pueda accesar independientemente. Son los mas comunes.

Ejemplos: Hard Drives, CD-R and DVD-R media, Zip Disks, Floppy, etc….

Cont. “I/O Devices” “Character Devices”: No tienen

estructuras de bloques,no es direccional y no tienen operaciones de busqueda (“seek”), son como una secuencia de caracteres, que se graban o se presentan.

Ejemplos: “printers”, “network interfaces”, “mouse” y otros tipos de componentes que no sean de tipo disco.

Valores tipicos de Velocidades en componentes

Componentes Lentos

Componentes Rápidos

“Device Controllers” “Device Controller”: Controlador o

adapter donde se conecta el componente, por medio de un cable. Ejemplo: “IDE Devices” a traves de un “IDE Cable”, hacia el componente especifico.

Como Funcionan? El controlador convierte una cadena de

bits, en bloques de bytes y verifica si hay errores por medio del “Error-Correcting Code” (ECC).

“ECC”: Código donde cada señal de data, debe ser conforme a una construcción, y de esa manera se puede arreglar y detectar automáticamente.

El bloque de bytes se llena en un buffer, dentro del controlador, luego que se verifica que esta libre de errores, se copia a la memoria.

“Memory-Mapped I/O” “Memory-Mapped I/O”: Usa el mismo

“bus” para la memoria y “I/O devices”, y el CPU puede accesar los dos. Partes del “Address Space” del CPU tienen que reservarse para los “I/O devices”.

Estos componentes monitorean su “Address Space” para cuando tengan una asignación, hagan “mapping” de su dirección a sus registros del hardware.

Esto es así porque la mayoría de los “hardware” también tienen su propio “buffer”.

“Direct Memory Access (DMA)” “DMA”: “Hardware” diseñado para accesar la

memoria independiente al CPU. Componentes como Tarjetas de Video, Sonido, Discos duros y CD-ROM’s.

El CPU da la señal para copiar directamente un bloque de memoria de un device a otro. Ese proceso se hace directamente con el “DMA controller”, sin el CPU intervenir.

Sin “devices” con “DMA”, el proceso se haría bit por bit por el CPU, lo que pone bien lento al OS, y lo inabilita hasta que la transferencia termine.

Diferentes modos del “DMA” “Cycle stealing”: El controlador pide el transfer

de un “word” y lo accesa. Se llama “Cycle stealing” porque el controlador entra al “bus” y se roba un ciclo, ocasionalmente. Esto pone al CPU, un poco lento.

“Burst Mode”: En este caso, el controlador accesa el bus, pero se lleva un bloque. En este caso es mas eficiente, porque al accesar el bus y luego liberarlo se puede obtener mas “words”, por el precio de adquirir el bus en cierto momento.

Funcionamiento del “DMA Fly-by” “Fly-by”: Se pasa la data directamente,

de un device a otro o a la memoria.

“Interrupts revisited”

“Principles of I/O Software” “Device Independent”: concepto de

escribir programas que accesen cualquier componente de I/O. El programa no se tiene que cambiar para accesar de un “device” en específico.

“Uniform naming”: el nombre de los “files” o “devices”, deben ser un “string” o entero y no depender de un “device”, ni plataforma en alguna forma.

“Principles of I/O Software”

“Error Handling”: dentro de este contexto, que se puedan manejar los errores lo más cercano al “hardware” posible.

“Synchronous vs. Asynchronous transfers”: el mas comun es “Asynchronous”, donde el CPU empieza el transfer y hace otras cosas, hasta q el “interrupt” llegue.

“Principles of I/O Software” “Buffering”: Usualmente la data que sale

de un device y no se puede guardar directamente en su destino.

“Sharable vs. Dedicated devices”: Algunos componentes pueden ser compartidos por usuarios y otros no. Compartidos: Discos como hard drives,

floppy,etc. Dedicados: Tape Drives, donde no se puede

tener dos usuarios a la vez escribiendo.

“I/O software layers”

“Interrupt Handlers”: Los “interrupts” casi nunca deben ser vistos por el OS. La forma mas facil es bloqueandolos con las operaciones de I/O de los drivers.

“I/O software layers”

“Device Drivers”: En componentes estandares, usualmente hay “drivers” que el OS tiene definidos. Como los “block devices” y los “character devices”.

Algunos “devices” requieren

drivers específicos

como printers y camaras

“I/O software layers”

“Device-Independent I/O Software”: Los programas son especificos, pero los “devices” no.

“User-Space I/O Software”: Areas donde el usuario o programador puede modificar el formato de los programas. Ejemplo: por medio de “printf”, “scanf”, etc.

Preguntas?

top related