Cuando se escriben drivers es importante distinguir entre el espacio de usuario (“user space”) y el espacio de kernel (“kernel space”).
Espacio del kernel (“kernel space”). El sistema operativo Linux y en especial su kernel se ocupan de gestionar los recursos de hardware de la máquina de una forma eficiente y sencilla, ofreciendo al usuario una interfaz de programación simple y uniforme. El kernel, y en especial sus drivers, constituyen así un puente o interfase entre el programador de aplicaciones para el usuario final y el hardware. Toda subrutina que forma parte del kernel tales como los módulos o drivers se consideran que están en el espacio del kernel (“kernel space”).
Espacio de usuario (“user space”). Los programas que utiliza el usuario final, tales como las “shell” u otras aplicaciones con ventanas como por ejemplo “kpresenter”, residen en el espacio de usuario (“user space”). Como es lógico estas aplicaciones necesitan interaccionar con el hardware del sistema, pero no lo hacen directamente, sino a través de las funciones que soporta el kernel.
Todo esto se puede visualizar en la Fig. 1.
Figura 1. Espacio de usuario donde residen las aplicaciones y espacio de kernel donde residen los módulos o drivers.