¿Qué es el Kernel en el sistema operativo y cuáles son los distintos tipos de Kernel?

¿Qué es el Kernel en el Sistema Operativo y cuáles son los diferentes tipos de Kernel?

Un Kernel es un programa informático que es el corazón y el núcleo de un Sistema Operativo. Como el Sistema Operativo tiene el control sobre el sistema así, el Kernel también tiene el control sobre todo lo que hay en el sistema. Es la parte más importante de un sistema operativo. Cada vez que se inicia un sistema, el Kernel es el primer programa que se carga después del gestor de arranque porque el Kernel tiene que manejar el resto de cosas del sistema para el Sistema Operativo. El Kernel permanece en la memoria hasta que el Sistema Operativo se apaga.

El Kernel es responsable de las tareas de bajo nivel como la gestión del disco, la gestión de la memoria, la gestión de tareas, etc. Proporciona una interfaz entre el usuario y los componentes de hardware del sistema. Cuando un proceso hace una petición al Kernel, entonces se llama Llamada al Sistema.

Un Kernel está provisto de un Espacio del Kernel protegido que es un área de memoria separada y esta área no es accesible por otros programas de aplicación. Así, el código del Kernel se carga en este espacio protegido del Kernel. Aparte de esto, la memoria utilizada por otras aplicaciones se llama Espacio de Usuario. Como se trata de dos espacios diferentes en la memoria, la comunicación entre ellos es un poco más lenta.

Funciones de un Kernel

Las siguientes son las funciones de un Kernel:

  • Acceder a los recursos del ordenador: Un Kernel puede acceder a varios recursos del ordenador como la CPU, los dispositivos de E/S y otros recursos. Actúa como un puente entre el usuario y los recursos del sistema.
  • Gestión de recursos: Es el deber de un Kernel para compartir los recursos entre varios procesos de tal manera que hay un acceso uniforme a los recursos por cada proceso.
  • Gestión de la memoria: Cada proceso necesita un espacio de memoria. Por lo tanto, la memoria debe ser asignada y desasignada para su ejecución. Toda esta gestión de la memoria la realiza un Kernel.
  • Gestión de dispositivos: Los dispositivos periféricos conectados en el sistema son utilizados por los procesos. Así, la asignación de estos dispositivos es gestionada por el Kernel.

Modo Kernel y Modo Usuario

Hay ciertas instrucciones que deben ser ejecutadas únicamente por el Kernel. Así, la CPU ejecuta estas instrucciones sólo en el Modo Kernel. Por ejemplo, la gestión de la memoria debe hacerse sólo en el Modo Kernel. Mientras que en el Modo Usuario, la CPU ejecuta los procesos que son dados por el usuario en el Espacio de Usuario.

Tipos de Kernel

En general, hay cinco tipos de Kernel. Son:

1. Kernels monolíticos

Los Kernels monolíticos son aquellos Kernels en los que los servicios de usuario y los servicios del kernel se implementan en el mismo espacio de memoria, es decir, en este caso no se utiliza memoria diferente para los servicios de usuario y los servicios del kernel. Al hacerlo, el tamaño del Kernel se incrementa y esto, a su vez, aumenta el tamaño del Sistema Operativo. Como no hay espacio de usuario y espacio de kernel separados, por lo que la ejecución del proceso será más rápida en los Kernels Monolíticos.

Ventajas:

  • Proporciona la programación de la CPU, la programación de la memoria, la gestión de archivos a través de llamadas al Sistema solamente.
  • La ejecución del proceso es rápida porque no hay espacio de memoria separado para el usuario y el kernel.

Desventajas:

  • Si algún servicio falla, entonces conduce a un fallo del sistema.
  • Si se van a añadir nuevos servicios, entonces hay que modificar todo el Sistema Operativo.
  • 2. Microkernel

    Un Microkernel es diferente de un kernel monolítico porque en un Microkernel, los servicios de usuario y los servicios del kernel se implementan en espacios diferentes, es decir, utilizamos el Espacio de Usuario y el Espacio del Kernel en el caso de los Microkernels. Como usamos el espacio de usuario y el espacio del kernel por separado, se reduce el tamaño del kernel y esto, a su vez, reduce el tamaño del sistema operativo.

    Como usamos espacios diferentes para los servicios de usuario y el servicio del kernel, la comunicación entre la aplicación y los servicios se realiza con la ayuda del análisis de mensajes y esto, a su vez, reduce la velocidad de ejecución.

    Inventajas:

    • Si hay que añadir nuevos servicios, entonces se pueden añadir fácilmente.

    Desventajas:

    • Dado que estamos utilizando el espacio de usuario y el espacio del núcleo por separado, por lo que la comunicación entre estos puede reducir el tiempo de ejecución global.

    3. Kernel Híbrido

    Un Kernel Híbrido es una combinación de Kernel Monolítico y Microkernel. Hace uso de la velocidad del Kernel Monolítico y de la modularidad del Microkernel.

    Los kernels híbridos son micro kernels que tienen algo de código «no esencial» en el espacio del kernel para que el código se ejecute más rápidamente de lo que lo haría en el espacio de usuario. Así, algunos servicios como la pila de red o el sistema de archivos se ejecutan en el espacio del kernel para reducir la sobrecarga de rendimiento, pero aun así, ejecuta el código del kernel como servidores en el espacio de usuario.

    4. Nanokernel

    En un Nanokrnel, como su nombre indica, todo el código del kernel es muy pequeño, es decir, el código que se ejecuta en el modo privilegiado del hardware es muy pequeño. El término nanonúcleo se utiliza para describir un núcleo que soporta una resolución de reloj de nanosegundos.

    5. Exokernel

    El Exokernel es un kernel de sistema operativo que es desarrollado por el grupo de sistemas operativos paralelos y distribuidos del MIT. Aquí, en este tipo de kernel, se separa la protección de los recursos de la gestión y esto, a su vez, resulta en permitirnos realizar una personalización específica de la aplicación.

    En el Exokernel, la idea no es implementar todas las abstracciones. Pero la idea es imponer el menor número de abstracciones posible y al hacerlo la abstracción debe ser utilizada sólo cuando sea necesario. Por lo tanto, no habrá ninguna abstracción forzada en el Exokernel y esta es la característica que lo diferencia de un Kernel Monolítico y un Microkernel. Pero la desventaja de esto es el diseño complejo. El diseño del Exokernel es muy complejo.

    Eso es todo para este blog. Espero que hayas disfrutado de este blog.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *