Núcleo (sistema operativo)


El núcleo es un programa de computadora en el núcleo del sistema operativo de una computadora y generalmente tiene control completo sobre todo en el sistema. [1] Es la parte del código del sistema operativo que siempre reside en la memoria, [2] y facilita las interacciones entre los componentes de hardware y software. Un kernel completo controla todos los recursos de hardware (p. ej., E/S, memoria, criptografía) a través de controladores de dispositivos, arbitra los conflictos entre procesos relacionados con dichos recursos y optimiza la utilización de recursos comunes, como el uso de CPU y caché, sistemas de archivos y sockets de red. En la mayoría de los sistemas, el núcleo es uno de los primeros programas cargados al inicio (después del gestor de arranque ).). Maneja el resto del inicio, así como las solicitudes de memoria, periféricos y entrada/salida (E/S) del software , traduciéndolas en instrucciones de procesamiento de datos para la unidad central de procesamiento .

El código crítico del kernel generalmente se carga en un área separada de la memoria, que está protegida del acceso por parte del software de la aplicación u otras partes menos críticas del sistema operativo. El kernel realiza sus tareas, como ejecutar procesos, administrar dispositivos de hardware como el disco duro y manejar interrupciones, en este espacio protegido del kernel . Por el contrario, los programas de aplicación, como los navegadores, los procesadores de texto o los reproductores de audio o video, utilizan un área separada de la memoria, el espacio del usuario . Esta separación evita que los datos del usuario y del núcleo interfieran entre sí y provoquen inestabilidad y lentitud, [1]así como evitar que las aplicaciones que funcionan mal afecten a otras aplicaciones o bloqueen todo el sistema operativo. Incluso en los sistemas donde el núcleo está incluido en los espacios de direcciones de la aplicación , la protección de la memoria se utiliza para evitar que las aplicaciones no autorizadas modifiquen el núcleo.

La interfaz del núcleo es una capa de abstracción de bajo nivel . Cuando un proceso solicita un servicio del kernel, debe invocar una llamada al sistema , generalmente a través de una función contenedora .

Hay diferentes diseños de arquitectura del kernel. Los núcleos monolíticos se ejecutan completamente en un solo espacio de direcciones con la CPU ejecutándose en modo supervisor , principalmente por velocidad. Los micronúcleos ejecutan la mayoría de sus servicios, pero no todos, en el espacio del usuario, [3] como lo hacen los procesos de usuario, principalmente por resiliencia y modularidad . [4] MINIX 3 es un ejemplo notable de diseño de micronúcleo. En cambio, el kernel de Linux es monolítico, aunque también es modular, ya que puede insertar y eliminar módulos del kernel cargables en tiempo de ejecución.

Este componente central de un sistema informático es responsable de ejecutar programas. El núcleo asume la responsabilidad de decidir en cualquier momento cuál de los muchos programas en ejecución debe asignarse al procesador o procesadores.

La memoria de acceso aleatorio (RAM) se utiliza para almacenar tanto las instrucciones como los datos del programa. [a] Por lo general, ambos deben estar presentes en la memoria para que se ejecute un programa. A menudo, varios programas querrán acceder a la memoria, lo que exigirá más memoria de la que tiene disponible la computadora. El kernel es responsable de decidir qué memoria puede usar cada proceso y determinar qué hacer cuando no hay suficiente memoria disponible.


Un núcleo conecta el software de la aplicación al hardware de una computadora .
Diagrama de un núcleo monolítico
En el enfoque de microkernel , el kernel en sí solo proporciona la funcionalidad básica que permite la ejecución de servidores , programas separados que asumen funciones anteriores del kernel, como controladores de dispositivos, servidores GUI, etc.
El enfoque de kernel híbrido combina la velocidad y el diseño más simple de un kernel monolítico con la modularidad y la seguridad de ejecución de un microkernel.
Un diagrama de la relación familiar predecesor/sucesor para sistemas similares a Unix