El camino entre el sistema operativo y virtualmente todo el hardware que no está conectado a la placa base, funciona por medio de un programa especial llamado controlador. Una de las principales funciones de un controlador es ser el traductor entre las señales eléctricas de los subsistemas hardware y los lenguajes de programación de alto nivel del sistema operativo y las aplicaciones. Los controladores recogen datos que el OS ha definido como un fichero y los traduce en un flujos de bits emplazados en localizaciones específicas puestos en dispositivos de almacenamiento, o también es series de pulsos láser en una impresora, por ejemplo.
Al haber tantas diferencias en todo el hardware existente, las diferencias se trasladan en la forma que tienen los controladores de funcionar. La mayoría funciona cuando se requiere un dispositivo en concreto, y lo hace de forma muy parecida a cualquier otro proceso.
El sistema operativo frecuentemente asignará bloques de alta prioridad a los controladores para que los recursos del hardware puedan ser liberados y preparados para ser usados lo más pronto posible. Una de las razones por la que los controladores están separados del sistema operativo es para que las nuevas funciones puedan ser añadidas al controlador – y por tanto a los subsistemas hardware – sin requerir el sistema operativo en si mismo sea modificado, recompilado y redistribuido.
A través del desarrollo de nuevos controladores hardware, las capacidades de entrada y salida de todo el sistema pueden ser muy mejoradas. Este desarrollo suele ser realizado o pagado por el fabricante de los subsistemas.
Gestionar las entradas y salidas es principalmente una cuestión de gestionar colas y buffers – funciones especiales de almacenamiento que cogen un flujo de datos de un dispositivo, como un teclado o un puerto serie, mantiene esos bits y los libera en la CPU a un promedio que la CPU pueda manejar. Esta función es especialmente importante cuando un número de procesos están funcionando y cogiendo tiempo del proceso.
El sistema operativo le dará instrucciones al buffer para que continúe recogiendo entradas del dispositivo, pero parando de enviar datos a la CPU mientras que el proceso usando la entrada está suspendido. Entonces, cuando el proceso que requiere entrada se pone activo de nuevo, el sistema operativo pedirá al buffer que envíe datos. Este proceso permite a un teclado a un modem que funcionar con usuarios externos u ordenadores a alta velocidad, aunque hay veces que la CPU no puede usar la entrada de esas fuentes.
Gestionar todos los recursos del sistema es una parte importante de la función del sistema operativo, y en el caso de los sistemas operativos en tiempo real, puede ser virtualmente toda la funcionalidad requerida. Aunque para otros sistemas operativos, dar una forma sencilla y consistente a las aplicaciones y personas para que usen toda la potencia del hardware, es una parte crucial de la razón de su existencia.
En al próxima parte del artículo, veremos como son los programas de aplicación de interfaz, comúnmente conocido como API. Haz clic en el enlace para ver como funciona: