1. kernel: El núcleo es el corazón del sistema operativo Linux. Es el software central el que administra los recursos de hardware y software del sistema. Sus funciones incluyen:
* Abstracción de hardware: El núcleo proporciona una capa de abstracción, ocultando las complejidades de diferentes dispositivos de hardware de aplicaciones de espacio de usuario. Esto permite que las aplicaciones se ejecuten independientemente del hardware específico que se encuentren. Los controladores, que son módulos de kernel, interfaz directamente con componentes de hardware específicos.
* Gestión de procesos: El núcleo crea, cronozca y administra procesos (ejecutando programas). Asigna el tiempo de la CPU, la memoria y otros recursos a los procesos, asegurando la utilización de recursos justos y eficientes. Esto incluye la conmutación de contexto (conmutación rápidamente entre procesos).
* Gestión de memoria: El núcleo maneja la asignación de memoria y la desacoplación, evitando que los procesos interfieran con el espacio de memoria del otro. Utiliza técnicas como la memoria virtual para proporcionar a cada proceso su propia memoria aparentemente dedicada, incluso si la RAM física es limitada. También maneja el intercambio al disco.
* Gestión del sistema de archivos: El núcleo interactúa con dispositivos de almacenamiento (discos duros, SSD, etc.) y administra el sistema de archivos. Esto incluye crear, leer, escribir y eliminar archivos, así como administrar directorios y permisos de archivos.
* Administración de dispositivos: Como se mencionó anteriormente, el kernel administra todos los dispositivos de hardware conectados al sistema, proporcionando una interfaz consistente para que las aplicaciones interactúen con ellos.
* Gestión de redes: El núcleo maneja la comunicación de red, la administración de interfaces de red, los paquetes de enrutamiento e implementación de protocolos de red.
2. Shell: El shell es un intérprete de línea de comandos. Es un programa que permite a los usuarios interactuar con el kernel indirectamente escribiendo comandos. Sus funciones clave incluyen:
* Interpretación del comando: El shell toma comandos escrito por el usuario (o leída desde un script) y los interpreta. Luego traduce estos comandos en llamadas al sistema, que son solicitudes al núcleo para realizar tareas específicas.
* Ejecución de comando: Después de interpretar un comando, el shell lo ejecuta, ya sea directamente (para comandos integrados) o invocando otros programas.
* Manipulación de archivos: Los shells proporcionan comandos para administrar archivos y directorios (crear, eliminar, copiar, moverse, etc.).
* Control de procesos: Los shells permiten a los usuarios administrar procesos, iniciar, detener y monitorear su ejecución. Esto incluye procesos de fondo y control de trabajo.
* tubería y redirección: Shells permite a los usuarios encadenar los comandos (tuberías) y redirigir la entrada y salida de comandos a archivos u otros comandos. Esto permite que las operaciones complejas se realicen de manera eficiente.
* Scripting: Los shells admiten secuencias de comandos, lo que permite a los usuarios automatizar tareas complejas escribiendo secuencias de comandos en un script de shell.
3. Bibliotecas del sistema (por ejemplo, GLIBC): Las bibliotecas del sistema son colecciones de funciones y rutinas precompiladas que brindan servicios comunes a las aplicaciones. Actúan como una capa intermedia entre las aplicaciones y el núcleo. Las funciones clave incluyen:
* Entrada/salida estándar: Proporcionar funciones para leer y escribir en la consola, archivos y conexiones de red (por ejemplo, `printf`,` scanf`, `fopen`,` fread`).
* Manipulación de cadenas: Ofreciendo funciones para trabajar con cadenas (por ejemplo, `strcpy`,` strlen`, `strcat`).
* Funciones matemáticas: Proporcionar acceso a operaciones matemáticas (por ejemplo, `sin`,` cos`, `sqrt`).
* Gestión de memoria: Proporcionar funciones para asignar y clasificar la memoria (por ejemplo, `Malloc`,` Free`).
* Programación de red: Ofreciendo funciones para la comunicación de red (por ejemplo, enchufes).
* Acceso al sistema de archivos: Proporcionando una interfaz de nivel superior a las funciones del sistema de archivos del kernel.
* Comunicación entre procesos (IPC): Facilitar la comunicación entre diferentes procesos (por ejemplo, el uso de la memoria compartida o las colas de mensajes).
Estos tres componentes, el núcleo, el shell y las bibliotecas del sistema, funcionan juntos sin problemas para proporcionar la funcionalidad de un sistema operativo Linux. Muchos otros componentes también son críticos, pero estos tres representan un conjunto central de bloques de construcción esenciales.