El objetivo principal de una computadora es ejecutar una secuencia predefinida de instrucciones , conocida como programa . Un programa en ejecución a menudo se denomina proceso . Ahora, la mayoría de las computadoras de propósito especial están diseñadas para ejecutar un solo proceso, pero en un sistema sofisticado, una computadora de propósito general está diseñada para ejecutar muchos procesos simultáneamente. Cualquier tipo de proceso requiere recursos de hardware como memoria, tiempo de procesador, espacio de almacenamiento, etc. En una computadora de propósito general que ejecuta muchos procesos simultáneamente, necesitamos una capa intermedia para administrar la distribución de los recursos de hardware de la computadora de manera eficiente y justa entre todos. los diversos procesos que se ejecutan en la computadora. Esta capa intermedia se conoce como el núcleo. Básicamente, el kernel virtualiza los recursos de hardware comunes de la computadora para proporcionar a cada proceso sus propios recursos virtuales. Esto hace que el proceso parezca que es el único proceso que se ejecuta en la máquina. El kernel también es responsable de prevenir y mitigar conflictos entre diferentes procesos. Esto representado esquemáticamente a continuación:
Figura: Recursos Virtuales para cada Proceso
Los subsistemas principales del kernel de Linux son los siguientes:
- El programador de procesos
- La unidad de gestión de memoria (MMU)
- El sistema de archivos virtual (VFS)
- La Unidad de Redes
- Unidad de comunicación entre procesos
Figura: El kernel de Linux A los efectos de este artículo, solo nos centraremos en los primeros tres subsistemas importantes del kernel de Linux. El funcionamiento básico de cada uno de los primeros tres subsistemas se detalla a continuación:
- El programador de procesos: este subsistema del kernel es responsable de distribuir equitativamente el tiempo de la CPU entre todos los procesos que se ejecutan en el sistema simultáneamente.
- Unidad de administración de memoria: esta subunidad del kernel es responsable de la distribución adecuada de los recursos de memoria entre los diversos procesos que se ejecutan en el sistema. La MMU hace más que simplemente proporcionar espacios de direcciones virtuales separados para cada uno de los procesos.
- El sistema de archivos virtual: este subsistema es responsable de proporcionar una interfaz unificada para acceder a los datos almacenados en diferentes sistemas de archivos y medios de almacenamiento físicos.