Images

Unidad 4: Administración de entrada/salida

4.1 Dispositivos y manejadores de dispositivos (device drivers).  

Dispositivos de E/S  

Se pueden clasificar en dos grandes categorías según el tipo de transmisión de información:   
  • Dispositivos de bloque.   
  • Dispositivos de caracter.  
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.  Las principales características de los dispositivos de caracter 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 caracter son las impresoras de línea, terminales, interfaces de una red, ratones, 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 también 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.  

Controladores o manejadores de Dispositivos  

Las unidades de e/s generalmente constan de:   
  • Un componente mecánico.  
  • Un componente electrónico: el controlador del dispositivo o tarjeta.  Muchos controladores pueden manejar más de un dispositivo.  
El S. O. generalmente trabaja con el controlador y no con el dispositivo.  
Los modelos más frecuentes de comunicación entre el CPU y los controladores son:   
  • Para la mayoría de las micro y mini computadoras:  Modelo de bus del sistema.   
  • Para la mayoría de los mainframes:  Modelo de varios buses y computadoras especializadas en e/s llamadas canales de e/s.
La interfaz entre el controlador y el dispositivo es con frecuencia de muy bajo nivel:  
La comunicación es mediante un flujo de bits en serie en el que el controlador debe:
  • Convertir el flujo de bits en serie en un bloque de bytes.   
  • Efectuar cualquier corrección de errores necesaria.   
  • Copiar el bloque en la memoria principal.  
Cada controlador posee registros que utiliza para comunicarse con el CPU:   
  • Pueden ser parte del espacio normal de direcciones de la memoria: e/s mapeada a memoria.   
  • Pueden utilizar un espacio de direcciones especial para la e/s, asignando a cada controlador una parte de él.  
El S. O. realiza la e/s al escribir comandos en los registros de los controladores; los parámetros de los comandos también se cargan en los registros de los controladores.  
Al aceptar el comando, el CPU puede dejar al controlador y dedicarse a otro trabajo.  
Al terminar el comando, el controlador provoca una interrupción para permitir que el S. O.:  
  • Obtenga el control del CPU.   
  • Verifique los resultados de la operación.  
El cpu obtiene los resultados y el estado del dispositivo al leer uno o más bytes de información de los registros del controlador.  

Drivers de E/S 

Un controlador de dispositivo (llamado normalmente controlador, o, en inglés, driver) es un programa informático que permite al sistema operativo interactuar con un periférico, haciendo una abstracción del hardware y proporcionando una interfaz -posiblemente estandarizada- para usarlo. Se puede esquematizar como un manual de instrucciones que le indica cómo debe controlar y comunicarse con un dispositivo en particular. Por tanto, es una pieza esencial, sin la cual no se podría usar el hardware.  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. Por ejemplo, aparte de los oficiales (normalmente disponibles en la página web del fabricante), se pueden encontrar también los proporcionados por el sistema operativo, o también versiones no oficiales hechas por terceros. Estos controladores pueden ser genéricos (válidos para más de un modelo del mismo periférico) o específicos para cada modelo. También se distribuyen actualizaciones a nuevas versiones, que pueden dar un mejor funcionamiento. Normalmente son los fabricantes del hardware quienes escriben sus controladores, ya que conocen mejor el funcionamiento interno de cada aparato, pero también se encuentran controladores libres, por ejemplo en los sistemas operativos libres. En este caso, los creadores no son de la empresa fabricante, aunque a veces hay una cooperación con ellos, cosa que facilita el desarrollo. Si no la hay, el procedimiento necesita de ingeniería inversa y otros métodos difíciles o con riesgos legales. 
 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.  
  • Almacenamiento 
4.2 Mecanismos y funciones de los manejadores de dispositivos (device drivers).
El controlador es el componente más importante desde el punto de vista del sistema operativo, ya que constituye la interfaz del dispositivo con el bus de la computadora y es el componente que se ve desde el CPU. El S. O. generalmente trabaja con el controlador y no con el dispositivo.  
La interfaz entre el controlador y el dispositivo es con frecuencia de muy bajo nivel:  
La comunicación es mediante un flujo de bits en serie que:   
  • Comienza con un preámbulo.   
  • Sigue con una serie de bits (de un sector de disco, por ejemplo).   
  • Concluye con una suma para verificación o un código corrector de errores.  
El preámbulo:   
  • Se escribe al dar formato al disco.   
  • Contiene el número de cilindro y sector, el tamaño de sector y otros datos similares.
El controlador debe:   
  • Convertir el flujo de bits en serie en un bloque de bytes.  
  • Efectuar cualquier corrección de errores necesaria.   
  • Copiar el bloque en la memoria principal. 
Cada controlador posee registros que utiliza para comunicarse con el CPU:   
  • Pueden ser parte del espacio normal de direcciones de la memoria: e/s mapeada a memoria.   
  • Pueden utilizar un espacio de direcciones especial para la e/s, asignando a cada controlador una parte de él. 
4.3 Estructuras de datos para manejo de dispositivos. 

Los procesos de usuario emiten peticiones de entrada/salida al sistema operativo. Cuando un proceso solicita una operación de E/S, el sistema operativo prepara dicha operación y bloquea al proceso hasta que se recibe una interrupción del controlador del dispositivo indicando que la operación está completa. Las peticiones se procesan de forma estructurada en las siguientes capas:  
  • Manejadores de interrupción.  
  • Manejadores de dispositivos o drivers.  
  • Software de E/S independiente de los dispositivos. Este software está formado por la parte de alto nivel de los manejadores, el gestor de cache, el gestor de bloques y el servidor de archivos.  
  • Interfaz del sistema operativo. Llamadas al sistema que usan las aplicaciones de usuario.
Manejadores de interrupción  
Los manejadores de interrupción se encargan de tratar las interrupciones que generan los controladores de dispositivos una vez que éstos están listos para la transferencia de datos o bien han leído o escrito los datos de memoria principal en caso de acceso directo a memoria. Para tratar dicha interrupción se ejecuta el correspondiente manejador de interrupción cuyo efecto es el de salvar los registros, comunicar el evento al manejador del dispositivo y restaurar la ejecución de un proceso (que no tiene por qué ser el interrumpido).  Los manejadores de interrupción suelen hacer algo más que comunicar el evento al manejador de dispositivo. Cuando una interrupción ocurre muy frecuentemente, caso del reloj, o cuando la cantidad de información a transferir es muy pequeña, caso del teclado, sería muy costoso comunicar siempre el evento al manejador de dispositivo asociado. En estos casos, el propio manejador de interrupción registra la ocurrencia del evento, bien mediante el incremento de una variable global para el reloj o la acumulación de caracteres en un buffer del teclado. La notificación al manejador se hace únicamente cada cierto número de ocurrencias del evento, en el caso del reloj, o activando una bandera que indica que hay datos en el buffer del teclado.   


Las interrupciones deben ocultarse en el S. O.:  
  • Cada proceso que inicie una operación de e / s se bloquea hasta que termina la e / s y ocurra la interrupción.   
  • El procedimiento de interrupción realiza lo necesario para desbloquear el proceso que lo inició. 
Manejadores de dispositivos  
Cada dispositivo de E/S, o cada clase de dispositivos, tiene un manejador asociado en el sistema operativo.  Dicho manejador incluye: código independiente del dispositivo para proporcionar al nivel superior del sistema operativo una interfaz de alto nivel y el código dependiente del dispositivo necesario para programar el controlador del dispositivo a través de sus registros y datos. La tarea de un manejador de dispositivo es aceptar peticiones en formato abstracto, de la parte del código de E/S independiente del dispositivo, traducir dichas peticiones a términos que entienda el controlador, enviar al mismo las órdenes adecuadas en la secuencia correcta y esperar a que se cumplan. 

Cada controlador posee uno o más registros de dispositivos:  
  • Se utilizan para darle los comandos.   
  • Los manejadores de dispositivos proveen estos comandos y verifican su ejecución adecuada.  
La labor de un manejador de dispositivos es la de:  
  • Aceptar las solicitudes abstractas que le hace el software independiente del dispositivo.   
  • Verificar la ejecución de dichas solicitudes.  
Si al recibir una solicitud el manejador está ocupado con otra solicitud, agregará la nueva solicitud a una cola de solicitudes pendientes.

Software de E/S independiente del dispositivo  

La mayor parte del sistema de E/S es software independiente de dispositivo. Este nivel incluye el sistema de archivos y el de gestión de red, el gestor de bloques, la cache de bloques y una parte de los manejadores de dispositivo. La principal función de esta capa de software es ejecutar las funciones de E/S que son comunes a todos los dispositivos a través de una interfaz uniforme.  Internamente, en este nivel se proporciona acceso a nivel de bloques o caracteres, almacenamiento intermedio, gestión de los dispositivos, planificación de la E/S y control de errores.  El tamaño de acceso a nivel de bloques se hace usando tamaños de bloque de acceso comunes para todo un sistema de archivos, lo que permite ocultar que cada dispositivo puede tener distinto tamaño de sector y distinta geometría. Estos detalles quedan ocultos por la capa de software independiente del dispositivo que ofrece una interfaz sobre la base de bloques lógicos del sistema de archivos. Lo mismo ocurre con los dispositivos de caracteres, algunos de los cuales trabajan con un carácter cada vez, como el teclado, mientras otros trabajan con flujos de caracteres, como el modem o las redes.  Para optimizar la E/S y para armonizar las peticiones de usuario, que pueden ser de cualquier tamaño, con los bloques que maneja el sistema de archivos, el software de E/S proporciona almacenamiento intermedio en memoria del sistema operativo. Esta facilidad se usa para tres cosas:  
  • Optimizar la E/S evitando accesos a los dispositivos.  
  • Ocultar las diferencias de velocidad con que cada dispositivo y usuario manejan los datos.  
  • Facilitar la implementación de la semántica de compartición, al existir una copia única de los datos en memoria.  
Espacio de usuario para software de E/S  
La mayoría del software de e / s está dentro del S. O. Una pequeña parte consta de bibliotecas ligadas entre sí con los programas del usuario. La biblioteca estándar de e / s contiene varios procedimientos relacionados con e / s y todos se ejecutan como parte de los programas del usuario. Otra categoría importante de software de e / s a nivel usuario es el sistema de spooling. El spooling es una forma de trabajar con los dispositivos de e /s de uso exclusivo en un sistema de multiprogramación.

Instrucciones máquina que el CPU puede utilizar para E/S 
  • START I/O Inicia una operación de E/S. El campo de dirección de la instrucción se emplea para especificar el canal y el dispositivo de E/S que participa en la operación.
  • HALT I/O Finaliza la operación del canal.  
  • TEST CHANNEL Prueba el estado del canal.  
  • TEST I/O Prueba el estado del canal, el subcanal y el dispositivo de E/S.  
Estructuras de datos de un driver 
Las rutinas de un driver para dar un correcto servicio a las peticiones de entrada / salida necesitan para cada dispositivo una serie de datos que se encuentran en estructuras de datos en forma de tabla de manera que su composición depende del sistema operativo, aunque tienen forma y nombres similares a los siguientes:  

Bloque de control del driver (BCD) Es la representación del driver desde el punto de vista del sistema operativo. Contiene aquellos parámetros que son susceptibles de ser variados dinámicamente y aquellos que definen el tipo de dispositivo que puede ser atendido por el driver. Los datos que suele contener son:  
  • Dirección del siguiente BCD.  
  • Nombre del driver.  
  • Dirección de comienzo de los bloques de control de unidades (BCU) que controle el driver.  
  • Número de unidades a servir.  
  • Dirección de comienzo de la rutina de inicialización del driver.  
  • Estado del driver (On/off line).  
  • Dirección de comienzo de la cola de bloques de entrada / salida (BES).  
  • Dirección del BES que está siendo servido.  
  • Variables particulares del driver.  
Paquete de petición de entrada/salida (PES) 
Cuando un proceso de usuario intenta hacer una operación de entrada/salida, el sistema operativo crea un paquete asociado a dicho proceso y a dicha petición para ser tratado por el driver. Este paquete se coloca en una cola prioritaria para ser atendido por el driver al que va dirigido. 






Los datos que normalmente contiene son:  
  • Dirección del siguiente PES en la cola.  
  • Prioridad de la petición de entrada/salida.  
  • Proceso que ha lanzado la petición.  
  • Dirección dónde devolver el resultado de la petición.  
  • Función a realizar (entrada o salida).  
  • Identificador del dispositivo.  
  • Identificador de la unidad.  
  • Dirección de la lista de parámetros de entrada de la llamada al sistema operativo.  

1 comentario: