Kernel (sistema operativo)


En un sistema operativo con una arquitectura en capas , el kernel es el nivel más bajo, tiene un control completo del hardware y siempre está en la memoria. [1] En algunos sistemas es un solo bloque de memoria, mientras que otros sistemas tienen mecanismos, por ejemplo, módulos de kernel cargables , que pueden extender el kernel. [2] El kernel 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, p. Ej., Uso de CPU y caché, sistemas de archivos y sockets de red. En la mayoría de los sistemas, el kernel es uno de los primeros programas que se cargan eninicio (después del cargador de arranque ). Maneja el resto del inicio, así como la memoria, los periféricos y las solicitudes de entrada / salida (E / S) del software , y las traduce 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 contra el acceso por software de 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 navegadores, procesadores de texto o reproductores de audio o video, utilizan un área de memoria separada, el espacio de usuario . Esta separación evita que los datos del usuario y los datos del kernel interfieran entre sí y provoquen inestabilidad y lentitud, [1]además de evitar que las aplicaciones que funcionan mal afecten a otras aplicaciones o bloqueen todo el sistema operativo. Incluso en sistemas donde el kernel está incluido en los espacios de direcciones de las aplicaciones , la protección de la memoria se usa para evitar que aplicaciones no autorizadas modifiquen el kernel.

La interfaz del kernel 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 .

Existen diferentes diseños de arquitectura de 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 microkernels ejecutan la mayoría, pero no todos, de sus servicios en el espacio de usuario, [3] como lo hacen los procesos de usuario, principalmente por motivos de resiliencia y modularidad . [4] MINIX 3 es un ejemplo notable de diseño de microkernel. En cambio, el kernel de Linux es monolítico, aunque también es modular, ya que puede insertar y eliminar módulos cargables del kernel 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 del programa como los datos. [nota 1] Normalmente, ambos deben estar presentes en la memoria para que se ejecute un programa. A menudo, varios programas querrán tener acceso a la memoria y, con frecuencia, demandarán más memoria de la que tiene disponible la computadora. El kernel es responsable de decidir qué memoria puede usar cada proceso y de determinar qué hacer cuando no hay suficiente memoria disponible.


Un kernel conecta el software de la aplicación al hardware de una computadora
Diagrama de un núcleo monolítico
En el enfoque del microkernel , el kernel en sí solo proporciona una 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 seguridad de ejecución de un microkernel
Un diagrama de la relación de la familia predecesora / sucesora para sistemas similares a Unix