Estructura y componentes del sistema de E/S:
- Interfaz del sistema operativo para entrada/salida: Proporciona servicios de E/S síncrona y asíncrona a las aplicaciones y una interfaz homogénea para poderse comunicar con los manejadores de dispositivo ocultando los detalles de bajo nivel.
- Sistemas de archivos: Proporcionan una interfaz homogénea, a través del sistema de archivos virtuales, para acceder a todos los sistemas de archivos que proporciona el sistema operativo (FFS, SV, NTFS, FAT, etc.)
- Gestor de redes: Proporciona una interfaz homogénea para acceder a todos los sistemas de red que proporciona el sistema operativo (TCP/IP, Novell, etc.).
- Gestor de bloques: Los sistemas de archivos y otros dispositivos lógicos con acceso a nivel de bloque se suelen limitar a traducir las operaciones del formato del usuario al de bloques que entiende el dispositivo y se las pasan a este gestor de bloques.
- Gestor de cache: Optimiza la entrada/salida mediante la gestión de almacenamiento inter medio en memoria para dispositivos de E/S de tipo bloque [ 1985].
- Manejadores de dispositivo: Proporcionan operaciones de alto nivel sobre los dispositivos y las traducen en su ámbito interno a operaciones de control de cada dispositivo particular
Por otra parte, las capas que componen el software de E/S son:
- Manejadores de Interrupciones: 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.
- Manejadores de Dispositivos (Drivers): incluyen el 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 mandatos
Utilidades que usa el sistema de E/S para comunicarse con el ordenador en representación del usuario:
- Bibliotecas de los Lenguajes: traducen la petición del usuario a llamadas del sistema, convirtiendo los parámetros allí donde es necesario. Ejemplos de utilidades de biblioteca en C son fread, fwríte o printf.
- Demonios del Sistema: programas privilegiados que pueden acceder a recursos que las aplicaciones normales tienen vetados.