Básicamente podemos definir que un Kernel es el componente principal de la mayoría de los sistemas operativos de la computadora. Proporciona una interfaz entre las aplicaciones y el procesamiento de datos real a nivel de hardware.
Kernel es considerado como el corazón de un sistema operativo. Kernel proporciona la capa de abstracción de nivel más bajo para los recursos (especialmente procesadores y dispositivos de E / S) que el software de la aplicación debe controlar para realizar su función. Hace que estas instalaciones estén disponibles para los procesos de aplicación a través del mecanismo de comunicación entre procesos (IPC) y la llamada al sistema.
FUNCIÓN BÁSICA DE KERNEL:
- ¿Qué quiere decir Donald Knuth cuando dice "obtienes más prestigio haciendo buena ciencia que haciendo ciencia popular"?
- ¿Cuál fue la respuesta inicial a la publicación de la criptografía de clave pública?
- Sistemas distribuidos: ¿Cuáles son algunas diferencias clave entre el modelo de actores y el paralelo síncrono masivo?
- ¿Cuál es el concepto de desrandomización en el contexto de la computación?
- ¿Es la Ley de Moore el resultado de los términos de licencia del Departamento de Defensa?
Como hemos visto anteriormente, el núcleo es el motor de cualquier sistema operativo, por lo que todas las funciones vitales deben ser controladas y gestionadas por el núcleo mismo. Hay varias tareas y funciones de un núcleo, pero algunas de las importantes se dan a continuación:
1. Asignación de recursos: la función principal del núcleo es administrar los recursos de la computadora y permitir que otros programas se ejecuten y usen estos recursos. Estos recursos son: CPU, memoria y dispositivos de E / S.
2. Gestión de procesos: un proceso define a qué porciones de memoria puede acceder la aplicación. La tarea principal de un núcleo es permitir la ejecución de aplicaciones y apoyarlas con características como la abstracción de hardware.
Para ejecutar una aplicación, un núcleo primero configura un espacio de direcciones para la aplicación, luego carga el archivo que contiene el código de la aplicación en la memoria, luego configura una pila para el programa y se ramifica en una ubicación dada dentro del programa, y finalmente comienza su ejecución.
3. Administración de memoria: el núcleo tiene acceso completo a la memoria del sistema. Permite que los procesos accedan de manera segura a esta memoria según lo requieran. El direccionamiento virtual ayuda al kernel a crear particiones virtuales de memoria en dos áreas desarticuladas, una está reservada para el kernel (espacio de kernael) y la otra para las aplicaciones (espacio de usuario).
4. Administración de dispositivos de E / S: para realizar funciones útiles, los procesos necesitan acceso a los periféricos conectados a la computadora, que son controlados por el núcleo a través de los Controladores de dispositivos. Un controlador de dispositivo es un programa informático que permite que el sistema operativo interactúe con un dispositivo de hardware. Proporciona al sistema operativo información sobre cómo controlar y comunicarse con una determinada pieza de hardware.
Un kernel mantiene una lista de dispositivos disponibles. Un administrador de dispositivos primero realiza un escaneo en diferentes buses de hardware, como la Interconexión de componentes periféricos (PCI) o el Bus serie universal (USB), para detectar los dispositivos instalados, luego busca los controladores apropiados. El núcleo proporciona la E / S para permitir que los controladores accedan físicamente a sus dispositivos a través de algún puerto o ubicación de memoria.
5. Comunicación entre procesos: Kernel proporciona métodos para la sincronización y comunicación entre procesos llamados comunicación entre procesos (IPC). Hay varios enfoques de IPC, por ejemplo, semáforo, memoria compartida, cola de mensajes, canalización (o con el nombre de fifo), etc.
6. Programación: en un sistema multitarea, el núcleo le dará a cada programa una porción de tiempo y cambiará de un proceso a otro tan rápidamente que al usuario le parecerá que estos procesos se están ejecutando simultáneamente. El kernel utiliza algoritmos de programación para determinar qué proceso se ejecuta a continuación y cuánto tiempo se le dará. El algoritmo establece prioridad entre los procesos.
7. Llamadas del sistema y manejo de interrupciones: una llamada al sistema es un mecanismo que utiliza el programa de aplicación para solicitar un servicio del sistema operativo. Las llamadas al sistema incluyen cerrar, abrir, leer, esperar y escribir. Para acceder a los servicios proporcionados por el núcleo, debemos invocar las funciones relacionadas del núcleo. La mayoría de los núcleos proporcionan una Biblioteca C o una API, que a su vez invoca las funciones relacionadas del núcleo.
Existen pocos métodos por los cuales se puede invocar la función del kernel respectivo, usando la interrupción simulada por software, o usando una llamada de puerta, o usando una instrucción especial de llamada del sistema y usando una cola basada en memoria.
8. Gestión de seguridad o protección: Kernel también brinda protección contra fallas (control de errores) y contra comportamientos maliciosos (seguridad). Un enfoque para esto puede ser el sistema de protección basado en el lenguaje, en el que el núcleo solo permitirá que se ejecute el código producido por un compilador de idiomas confiable.
Para sumar más, puede consultar los tutoriales del MIT.