Sistema operativo: hardware de E / S
Uno de los trabajos importantes de un sistema operativo es administrar varios dispositivos de E / S, incluidos mouse, teclados, panel táctil, unidades de disco, adaptadores de pantalla, dispositivos USB, pantalla de mapa de bits, LED, convertidor de analógico a digital, encendido / interruptor de apagado, conexiones de red, E / S de audio, impresoras, etc.
Se requiere un sistema de E / S para tomar una solicitud de E / S de la aplicación y enviarla al dispositivo físico, luego tomar cualquier respuesta que provenga del dispositivo y enviarla a la aplicación. Los dispositivos de E / S se pueden dividir en dos categorías:
Block devices- Un dispositivo de bloque es aquel con el que el conductor se comunica enviando bloques completos de datos. Por ejemplo, discos duros, cámaras USB, Disk-On-Key, etc.
Character devices- Un dispositivo de caracteres es aquel con el que el conductor se comunica enviando y recibiendo caracteres individuales (bytes, octetos). Por ejemplo, puertos serie, puertos paralelos, tarjetas de sonido, etc.
Controladores de dispositivos
Los controladores de dispositivo son módulos de software que se pueden conectar a un sistema operativo para manejar un dispositivo en particular. El sistema operativo toma la ayuda de los controladores de dispositivos para manejar todos los dispositivos de E / S.
El controlador de dispositivo funciona como una interfaz entre un dispositivo y un controlador de dispositivo. Las unidades de E / S (teclado, mouse, impresora, etc.) generalmente constan de un componente mecánico y un componente electrónico donde el componente electrónico se denomina controlador de dispositivo.
Siempre hay un controlador de dispositivo y un controlador de dispositivo para que cada dispositivo se comunique con los sistemas operativos. Un controlador de dispositivo puede manejar varios dispositivos. Como interfaz, su tarea principal es convertir el flujo de bits en serie en un bloque de bytes y realizar la corrección de errores según sea necesario.
Cualquier dispositivo conectado a la computadora está conectado por un enchufe y un enchufe, y el enchufe está conectado a un controlador de dispositivo. A continuación se muestra un modelo para conectar la CPU, la memoria, los controladores y los dispositivos de E / S donde los controladores de la CPU y de los dispositivos utilizan un bus común para la comunicación.
E / S sincrónicas vs asincrónicas
Synchronous I/O - En este esquema, la ejecución de la CPU espera mientras procede la E / S
Asynchronous I/O - La E / S procede al mismo tiempo que la ejecución de la CPU
Comunicación a dispositivos de E / S
La CPU debe tener una forma de pasar información hacia y desde un dispositivo de E / S. Hay tres enfoques disponibles para comunicarse con la CPU y el dispositivo.
- E / S de instrucción especial
- E / S mapeadas en memoria
- Acceso directo a memoria (DMA)
E / S de instrucción especial
Esto usa instrucciones de CPU que están diseñadas específicamente para controlar dispositivos de E / S. Estas instrucciones normalmente permiten que los datos se envíen a un dispositivo de E / S o se lean desde un dispositivo de E / S.
E / S mapeadas en memoria
Cuando se utilizan E / S asignadas en memoria, la memoria y los dispositivos de E / S comparten el mismo espacio de direcciones. El dispositivo está conectado directamente a ciertas ubicaciones de la memoria principal para que el dispositivo de E / S pueda transferir bloques de datos hacia / desde la memoria sin pasar por la CPU.
Mientras usa IO mapeado en memoria, el sistema operativo asigna búfer en la memoria e informa al dispositivo de E / S que use ese búfer para enviar datos a la CPU. El dispositivo de E / S funciona de forma asíncrona con la CPU, interrumpe la CPU cuando termina.
La ventaja de este método es que todas las instrucciones que pueden acceder a la memoria se pueden utilizar para manipular un dispositivo de E / S. La E / S asignada en memoria se utiliza para la mayoría de los dispositivos de E / S de alta velocidad, como discos, interfaces de comunicación.
Acceso directo a memoria (DMA)
Los dispositivos lentos como los teclados generarán una interrupción en la CPU principal después de que se transfiera cada byte. Si un dispositivo rápido como un disco genera una interrupción para cada byte, el sistema operativo dedicaría la mayor parte de su tiempo a manejar estas interrupciones. Entonces, una computadora típica usa hardware de acceso directo a memoria (DMA) para reducir esta sobrecarga.
El acceso directo a la memoria (DMA) significa que la CPU le otorga al módulo de E / S autoridad para leer o escribir en la memoria sin participación. El propio módulo DMA controla el intercambio de datos entre la memoria principal y el dispositivo de E / S. La CPU solo está involucrada al principio y al final de la transferencia y se interrumpe solo después de que se haya transferido todo el bloque.
El acceso directo a la memoria necesita un hardware especial llamado controlador DMA (DMAC) que administra las transferencias de datos y arbitra el acceso al bus del sistema. Los controladores están programados con punteros de origen y destino (dónde leer / escribir los datos), contadores para rastrear el número de bytes transferidos y configuraciones, que incluyen E / S y tipos de memoria, interrupciones y estados para los ciclos de la CPU.
El sistema operativo utiliza el hardware DMA de la siguiente manera:
Paso | Descripción |
---|---|
1 | El controlador de dispositivo recibe instrucciones para transferir datos del disco a una dirección de búfer X. |
2 | Luego, el controlador del dispositivo indica al controlador de disco que transfiera datos al búfer. |
3 | El controlador de disco inicia la transferencia DMA. |
4 | El controlador de disco envía cada byte al controlador DMA. |
5 | El controlador DMA transfiere bytes al búfer, aumenta la dirección de memoria, disminuye el contador C hasta que C se vuelve cero. |
6 | Cuando C se vuelve cero, DMA interrumpe la CPU para señalar la finalización de la transferencia. |
Sondeo vs E / S de interrupciones
Una computadora debe tener una forma de detectar la llegada de cualquier tipo de entrada. Hay dos formas en que esto puede suceder, conocidas comopolling y interrupts. Ambas técnicas permiten al procesador lidiar con eventos que pueden ocurrir en cualquier momento y que no están relacionados con el proceso que se está ejecutando actualmente.
Sondeo de E / S
El sondeo es la forma más sencilla de que un dispositivo de E / S se comunique con el procesador. El proceso de verificar periódicamente el estado del dispositivo para ver si es el momento de la siguiente operación de E / S se denomina sondeo. El dispositivo de E / S simplemente coloca la información en un registro de estado y el procesador debe venir y obtener la información.
La mayoría de las veces, los dispositivos no requerirán atención y, cuando lo haga, tendrá que esperar hasta que el programa de sondeo los interrogue. Este es un método ineficiente y gran parte del tiempo de los procesadores se pierde en encuestas innecesarias.
Compare este método con un maestro que pregunta continuamente a todos los estudiantes de una clase, uno tras otro, si necesitan ayuda. Obviamente, el método más eficaz sería que el alumno informara al profesor cuando necesite ayuda.
Interrumpe la E / S
Un esquema alternativo para tratar con E / S es el método impulsado por interrupciones. Una interrupción es una señal al microprocesador desde un dispositivo que requiere atención.
Un controlador de dispositivo coloca una señal de interrupción en el bus cuando necesita la atención de la CPU cuando la CPU recibe una interrupción. Guarda su estado actual e invoca el manejador de interrupciones apropiado usando el vector de interrupciones (direcciones de rutinas del sistema operativo para manejar varios eventos). Una vez resuelto el dispositivo de interrupción, la CPU continúa con su tarea original como si nunca hubiera sido interrumpida.