El kernel ofrece una serie de subrutinas o funciones en el espacio de usuario que permiten al programador de aplicaciones finales interaccionar con el hardware. Habitualmente, en sistemas UNIX o Linux, este diálogo se hace a través de las funciones o subrutinas para leer y escribir en ficheros, ya que en estos sistemas los propios dispositivos se ven desde el punto de vista del usuario como ficheros.
Por otro lado, en el espacio del kernel, Linux también ofrece una serie de funciones o subrutinas para por un lado interaccionar directamente, a bajo nivel, con los dispositivos hardware y por otro permite el paso de información desde el kernel al espacio de usuario.
Es común que para cada función en el espacio de usuario que permite el uso de dispositivos o ficheros haya su equivalente en el espacio de kernel que permite el trasvase de información del espacio de kernel al de usuario y viceversa. Esto se puede apreciar en la Tabla 1, la cual de momento se quedará vacía y se irá rellenando a medida que se vayan introduciendo los diferentes conceptos de los drivers.
Eventos | Funciones de usuarios | Funciones del kernel |
Carga de módulo | ||
Abrir dispositivo | ||
Leer dispositivo | ||
Escribir dispositivo | ||
Cerrar dispositivo | ||
Quitar módulo |
Tabla 1. Eventos de los drivers y sus funciones asociadas de intercambio entre el espacio de kernel y el espacio de usuario.