Al
igual que un controlador de tráfico aéreo, el kernel no es útil sin tener algo
que controlar. Si el kernel es la torre, las aplicaciones son los aviones. Las
aplicaciones mandan peticiones al kernel, en cambio, éste recibe recursos tales
como memoria, CPU y disco. El kernel también abstrae los detalles complicados de
la aplicación. La aplicación no sabe si un bloque de disco es una unidad de
estado sólido de fabricante A, un disco duro metálico de spinning del
fabricante B, o incluso, alguna parte del archivo de red. Las aplicaciones sólo
tienen que seguir la Interfaz de Programación de Aplicaciones (API -
Application Programming Interface) del kernel y a cambio no tienen que
preocuparse por los detalles de implementación.
Cuando
nosotros, como usuarios, pensamos en aplicaciones, tendemos a pensar en los
procesadores de texto, navegadores web y clientes de correo electrónico. Al
kernel no le importa si se está ejecutando algo orientado al usuario, es un
servicio de red que se comunique con un equipo remoto, o una tarea interna. Por
lo tanto, de esto obtenemos una abstracción llamada proceso. Un proceso es
solamente una tarea que está cargada y rastreada por el kernel. Una aplicación
puede necesitar incluso múltiples procesos para funcionar, por lo que el kernel
se encarga de ejecutar los procesos, los arranca y para según lo requerido, y
entrega los recursos del sistema.