En el último artículo explicamos qué es el núcleo de Linux, ahora entraremos en detalle sobre qué tareas funcionales realiza. El núcleo monolítico del SO Linux realiza la gama más amplia de tareas. El procesamiento de las llamadas entrantes al sistema tiene lugar en el nivel superior. Estas llamadas son la interfaz entre el núcleo y las aplicaciones de usuario. Las señales de hardware y las interrupciones se gestionan en el nivel inferior.
Sin embargo, las tareas del núcleo no se limitan a gestionar las interrupciones. También incluye programas de control de dispositivos. Los controladores son necesarios para procesar las señales procedentes de los dispositivos. A ellos se destina una gran parte del kernel. Algunos de ellos están en forma de archivos binarios. La versión del núcleo sin controladores cerrados es Linux-libre, en la práctica no es tan fácil de usar, porque no siempre es posible construir un PC basado en componentes con sólo controladores abiertos.
Otras tareas funcionales del núcleo son trabajar con abstracciones. Los hilos virtuales son generados por un hilo virtual, un gestor de memoria asigna y aísla una parte de la RAM específicamente para el proceso, un sistema de archivos virtual forma un espacio único para almacenar archivos, los sockets son creados por un módulo de red. Así se crean las condiciones para garantizar un alto nivel de seguridad. El sistema de interacción entre procesos se encarga de que no haya conflictos al acceder a los mismos recursos informáticos, y también facilita el intercambio de datos entre procesos.
Desde el punto de vista del software de usuario, se parece al hardware físico, con la diferencia de que el procesador y la RAM no se comunican directamente, sino a través de llamadas al sistema. El directorio /dev
contiene referencias simbólicas y de bloque para los periféricos. Una característica distintiva de las referencias de bloque es que sólo funcionan con bloques de un tamaño determinado.
A pesar de que el núcleo controla todos los procesos, no hace nada por sí mismo, necesita software de usuario y los procesos ejecutados por ese software. Entre el software básico se encuentran las utilidades GNU: es difícil imaginar cualquier distribución de Linux sin ellas. Un ejemplo es el shell Bash
, que permite introducir comandos en la consola.