Un controlador de dispositivo es una pieza de software que opera o controla un tipo particular de dispositivo. En los sistemas operativos de kernel modernos y monolíticos, estos suelen ser parte del kernel. Muchos núcleos monolíticos, incluido Linux, tienen un diseño modular, lo que permite que los módulos ejecutables se carguen en tiempo de ejecución. Los controladores de dispositivos suelen utilizar esta función, aunque nada impide que los controladores de dispositivos se compilen en la imagen del kernel.
Un archivo de dispositivo es una interfaz para un controlador de dispositivo que aparece en un sistema de archivos como si fuera un archivo ordinario. En los sistemas operativos similares a Unix, generalmente se encuentran bajo el /dev
directorio y también se denominan nodos de dispositivo . Un archivo de dispositivo puede representar dispositivos de caracteres , que emiten un flujo de datos de un carácter a la vez, o bloquean dispositivos que permiten el acceso aleatorio a bloques de datos.
Los nodos de dispositivo son creados por mknod
llamada del sistema. El recurso del kernel expuesto por el nodo del dispositivo se identifica mediante un número mayor y menor. Por lo general, el número mayor identifica el controlador del dispositivo y el número menor identifica un dispositivo en particular que controla el controlador.
Lo que parece contener el archivo del dispositivo depende de lo que expongan los controladores del dispositivo a través del archivo del dispositivo. Por ejemplo, el archivo de dispositivo de caracteres que representa el ratón, /dev/input/mice
expone el movimiento del mouse como un flujo de caracteres, mientras que el archivo del dispositivo de bloque representa un disco duro, como /dev/sda
, expone las regiones direccionables de memoria del dispositivo. Algunos archivos de dispositivos también aceptan entradas, lo que permite que las aplicaciones del espacio del usuario se comuniquen con el dispositivo escribiendo en su archivo de dispositivo.