FUNDAMENTOS SISTEMAS OPERATIVOS
  ARQUITECTURA ENTRADA / SALIDA
 

Entrada/Salida

 

Conceptos básicos de E/S

 Un periférico contiene una serie de servomecanismos y dispositivos electrónicos que tienen que ser controlados mediante señales eléctricas. 

Por ejemplo, las 
bobinas que mueven el brazo con las cabezas de un disco, el motor paso a paso que mueve la cabeza de un floppy, los diversos motores que mueven el papel en una impresora, etc.

Algunos periféricos primitivos reciben del exterior todas las señales de control de sus mecanismos (ej. floppy) o Los periféricos más avanzados tienen su propia lógica (puede ser hasta un microprocesador) y reciben comandos de alto nivel que él mismo interpreta (ej. disco SCSI, impresoras PostScript) . 

Los periféricos no están conectados directamente al bus interno del sistema, 
sino que necesitan intermediarios: los controladores de E/S. 
 

Dialogan con los periféricos usando señales diferentes a 
las del bus del procesador (adaptación de señales).

El controlador de E/S es capaz de llevar a cabo secuencias de operaciones de forma autónoma (ej. transferencias de bloques de bytes).

 Si hay varios periféricos conectados a un mismo controlador, necesitamos un bus de E/S. Existen diversos estándares de bus de E/S en el mercado orientados a tipos de periféricos distintos. Algunos muy usados son:

Ù SCSI e IDE: dispositivos de almacenamiento de gran

velocidad de transferencia

RS-232: sensores, modems, dispositivos lentos

 
Centronics: impresoras, scanners

PS/2: ratones, teclados, interfaces de entrada

USB: bus genérico de mediana velocidad. Sustituye a

centronics, RS-232 y PS/2 poco a poco.

Desarrollo de una operación de E/S

 La presencia de controladores inteligentes (controlador de E/S y lógica del periférico) permite que la CPU no tenga que intervenir durante el desarrollo de la operación de E/S (paralelismo entre CPU y controladores).

La CPU envía comandos al controlador mediante instrucciones IN y OUT. El controlador envía a su vez comandos a la lógica del periférico.

 Secuencia de operación de lectura de un sector de disco:

La CPU envía un comando al controlador SCSI (OUT)

El controlador envía un comando SCSI al disco

La lógica del disco controla los motores y la electrónica de lectura. Se lee un sector (512 bytes) en un buffer del disco

 La lógica del disco avisa al controlador de que va a enviar los datos

El controlador va recibiendo los datos y los almacena directamente en memoria mediante DMA

Al terminar, el controlador envia una IRQ a la CPU

 La CPU lee el estado final de la operación (IN).

 

 

Dispositivos físicos, lógicos y devices

Cada dispositivo requiere un conjunto diferente de operaciones para dialogar con él.

 Este conjunto depende del tipo de bus de conexión (IDE, SCSI, USB, ...), del tipo de periférico (discos, cintas magnéticas, scanners, ...), e incluso del fabricante.

 Esto requiere porciones de software específico en el sistema para dialogar con cada tipo de periférico: cada una de ellas es un device driver.

 Los programadores prefieren tener un solo conjunto de operaciones para cada tipo de periférico, e incluso para todos los tipos, si es posible.

 El núcleo ofrece a los procesos una abstracción que unifica todas las variantes de un mismo tipo de periférico, el dispositivo lógico.

 Cada device driver ofrece siempre el mismo interfaz genérico de operaciónes sobre el periférico que controla:

Cada device driver se corresponde con un modelo de periférico físico.

 Cada dispositivo lógico se corresponde una clase entera de device drivers.

discos duros y CD-ROMs

 
cintas magneticas

 terminales

 impresoras

 Cada periférico físico asignado a uno lógico constituye una unidad.

 El SO ofrece un espacio de nombres para acceder a las unidades de los dispositivos lógicos. En UNIX, son ficheros especiales (devices) bajo el directorio /

 

Dispositivos físicos, lógicos y devices

 Las operaciones que los drivers ofrecen al núcleo son siempre las mismas

Nucleo

Driver IDE

Interfaz de syscalls

Procesos

leer(hdb)

leer(ficheroB)

Driver SCSI

Disco SCSI Disco IDE

leer(hda)

leer(ficheroA)

Comandos IDE Comandos SCSI

 

Servicios de E/S en el S.O.

 El conjunto de operaciones para todos los periféricos es estándar: lectura, escritura,

No todas las operaciones tienen sentido en todos los periféricos.

 La redirección de E/S permite programar sin saber que periférico específico modo transferencia, aparcado,verificación de superficie

 

Modalidades de la E/S

Cruda/cocinada

Cruda: el driver transfiere sin modificaciones toda la información que lee o escribe (ej. disco duro, cinta magnética)

Cocinada: el driver interpreta el contenido que lee o escribe:

 Síncrona/Asíncrona

o Síncrona: el proceso queda bloqueado hasta que termina la operación de E/S

 Asíncrona: el proceso sale de la syscall y continua su ejecución. El S.O. se encarga de la operación, pero el proceso no sabe cuando acaba. Hay una syscall para preguntar al S.O. el estado de la operación.

Buffering/Spooling: Son técnicas para optimizar la E/S con periféricos lentos.

Buffering: Las datos a escribir son guardados por el S.O. en buffers y escritos de forma asíncrona mientras éste continua (solapamiento de E/S de un proceso con su ejecución)

Spooling: Todos los datos escritos son guardados en un fichero temporal (spool). Cuando el proceso termina, el S.O. se encarga de escribir el fichero en el dispositivo real.

 La escritura en el buffering la lleva a cabo el núcleo en las interrupciones (IRQ) de fin de operación del periférico.

 

 

Modalidades de la E/S

lo adapta para ser entendido por el periférico (ej. impresoras)

operaciones de control.

 

Ejemplos de dispositivos lógico:

inicializar, leer, escribir, configurar, ...

 

Dispositivos físicos, lógicos y devices

 
  Hoy habia 4 visitantes (4 clics a subpáginas) ¡Aqui en esta página!  
 
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis