A nivel de kernel, ¿cuáles son las diferencias fundamentales entre Windows y Linux?

Similitudes y diferencias de los kernels de Linux y Windows

¿Qué es el kernel?

El kernel es una parte fundamental de cualquier sistema operativo. El profano promedio ignora felizmente su existencia. Millones de personas utilizan un ordenador cada día sin entender cómo funciona realmente. Por lo general, sólo un programador se ocupa directamente del núcleo. La instalación de un software de controlador de dispositivo o la configuración de un protocolo de red es probablemente lo más cerca que la mayoría de la gente estará del Kernel. El Kernel es el núcleo del sistema operativo en el nivel más bajo y básico. Su función es vital para prácticamente todas las operaciones. El Kernel es para un sistema operativo lo que el motor es para un coche. Sin el Kernel, poco o nada podríamos hacer con nuestro ordenador.

Similitudes
Tanto el Kernel de Linux como el de Windows controlan el software de bajo nivel del sistema y las interacciones con el hardware del ordenador a través de la capa de abstracción de hardware (HAL). De esta manera, el Kernel mantiene el resto del sistema operativo independiente del hardware, lo que a su vez permite una mayor portabilidad. El Kernel del sistema operativo está escrito en un lenguaje de alto nivel conocido como C. El lenguaje C fue elegido porque C ha sido portado a prácticamente todas las plataformas de hardware existentes. La portabilidad es importante para los programadores y las empresas de software porque significa menos trabajo, menos tiempo y menos gastos. Ambos Kernels manejan cosas como los controladores de dispositivos, el almacenamiento en caché, la memoria virtual, los protocolos de red, los sistemas de archivos, la creación y terminación de procesos y las llamadas al sistema. El objetivo de un Kernel es similar de un sistema a otro, pero el enfoque puede ser muy diferente entre los sistemas operativos.

El Kernel en Linux

El Kernel de Linux se refiere a todo lo que se ejecuta en modo Kernel y se compone de varias capas distintas. En la capa más baja, el Kernel interactúa con el hardware a través de la HAL. En el nivel medio, el Kernel UNIX se divide en 4 áreas distintas. La primera de las cuatro áreas se encarga de los dispositivos de caracteres, de los TTY crudos y cocinados y del manejo de los terminales. La segunda área maneja los controladores de dispositivos de red, los protocolos de enrutamiento y los sockets. La tercera área se ocupa de los controladores de dispositivos de disco, las cachés de páginas y búferes, el sistema de archivos, la memoria virtual y la asignación de nombres de archivos. La cuarta y última área se encarga del envío de procesos, la programación, la creación y la terminación, así como del manejo de señales. Por encima de todo esto tenemos la capa superior del Kernel, que incluye las llamadas al sistema, las interrupciones y las trampas. Este nivel sirve de interfaz para cada una de las funciones de nivel inferior. Un programador utiliza las diversas llamadas al sistema y las interrupciones para interactuar con las características del sistema operativo.

El Kernel y el "Modo Kernel" en Windows

El Kernel dentro del sistema operativo Windows es algo diferente al de LINIX porque Microsoft ha adoptado un enfoque algo diferente en el diseño del Kernel. El término "modo Kernel" se refiere no sólo al Kernel en sí, sino también a la HAL y a varios servicios del sistema. Esto incluiría la HAL (hal.dll) en la capa inferior, seguida por el Kernel en la segunda capa. La tercera capa es el Kernel. Por encima (cuarto nivel) tenemos varios gestores de objetos, procesos, memoria, seguridad, caché, Plug in Play (PnP), energía, configuración y E/S. El sistema de archivos y Win32 GDI también se encuentran en este nivel. Muchos de los elementos de este cuarto nivel se denominan colectivamente Ejecutivo de Windows (ntoskrnl.exe). En la parte superior y quinta capa del modo Kernel están los servicios del sistema.

Resumen

Como puede ver, tanto los sistemas operativos Linux como Windows tienen un Kernel que realiza funciones similares. Sin embargo, ambos Kernels están diseñados de forma muy diferente. En el mundo de la informática; hay muchas formas de conseguir los mismos objetivos.