Como ya seguramente será conocido, el kernel es un programa que empieza a ejecutarse poco después de arrancar el ordenador. Su principal función es esconder los detalles del hardware a los programas que sobre él se van a ejecutar.
Nosotros, como usuarios y programadores aprovechamos la funcionalidad que el kernel nos ofrece, gracias a él, nuestra vida es mucho más sencilla. Cuando queremos copiar un fichero en nuestro disco duro, no nos preocupamos de en que sectores está distribuido dicho fichero, o de si ese fichero estaba ya en la cache o no, todas esas cosas las hace el kernel por nosotros, ni movemos las cabezas lectoras del disco duro.
El kernel nos ofrece un interfaz simple con nuestro hardware. Los programadores del comando cp por ejemplo, simplemente usaron las llamadas al sistema que el kernel ofrece para crear este comando. Por otro lado el programador del kernel se preocupó anteriormente de crear esas llamadas al sistema, de forma que fuesen las mismas para un disquete, una tarjeta de red o un disco duro.
Es importante darse cuenta de que cada kernel (i.e. cada sistema operativo) tiene su propia manera de manejar el hardware, y tiene sus propias llamadas al sistema definidas. Es por esto que el comando cp para el kernel de Linux nunca funcionará para Windows, simplemente las llamadas al sistema son diferentes, tienen diferentes argumentos e implementan diferentes funciones. Lo mismo pasa con programas más complicados, como puede ser un navegador web o un juego.
Nosotros mismos, en nuestra corta experiencia como programadores, hemos utilizado en un montón de ocasiones las llamadas al sistema que nuestro kernel nos ofrecía, por ejemplo, cuando declaramos un puntero y reservamos memoria para él, estamos usando seguramente la llamada al sistema malloc() que se encarga de decirle al kernel: ``habla con la memoria y pídele que me reserve unos cuantos bytes en las direcciones donde apunta mi puntero''.
Por supuesto el kernel ha de conocer el ``idioma'' de nuestro hardware, cuando compramos una impresora nueva, hemos de decirle al kernel como se usa, para que luego podamos pedirle al kernel que imprima algo. Por eso cuando conectamos por primera vez una impresora hemos de cargar los drivers de la misma.