Cómo es el Kernel de Windows y cuales son sus diferencias con el de Linux

Cómo es el Kernel de Windows y cuales son sus diferencias con el de Linux

80 comentarios Facebook Twitter Flipboard E-mail
Cómo es el Kernel de Windows y cuales son sus diferencias con el de Linux

El Kernel o Núcleo es un componente fundamental de cualquier sistema operativo. Es el encargado de que el software y el hardware de cualquier ordenador puedan trabajar juntos en un mismo sistema, para lo cual administra la memoria de los programas y procesos ejecutados, el tiempo de procesador que utilizan los programas, o se encarga de permitir el acceso y el correcto funcionamiento de periféricos y otros elementos físicos del equipo.

Los usuarios de GNU/Linux estamos acostumbrados a hablar y oír hablar sobre su Kernel, el cual puede actualizarse y manipularse en cualquier distribución. Sin embargo, en un sistema operativo tan centrado en el usuario y la sencillez como Windows, su kernel es un gran desconocido. Por eso hoy vamos a hablar sobre él para contaros cómo se desarrolla y cuales son las diferencias fundamentales con respecto al de Linux.

Y vamos a intentar hacerlo de una manera que todo el mundo pueda entender. Tratando de no perdernos demasiado en tecnicismos para que cualquier usuario sin demasiados conocimientos pueda saber por dónde van los tiros.

Un vistazo a…
TOP APPS WINDOWS 2020 GRATIS Los 17 MEJORES PROGRAMAS para tu PC

Windows NT, un Kernel para más de dos década

Windows Nt By Gpolydoros D7k5mry

En la década de los noventa Microsoft estaba basando sus sistemas operativos en los kernel Windows 9x, donde el código básico tenía muchas similitudes con MS-DOS. De hecho necesitaba recurrir a él para poder operar. Paralelamente, Microsoft también estaba desarrollando otra versión de su sistema dirigido a los servidores llamada Windows NT, que nació el 26 de julio de 1993.

Ambas versiones de Windows fueron desarrollándose por separado. Windows NT era más bien una jugada a largo plazo, una tecnología que ir desarrollando para los Windows del mañana, y en el año 2000 dieron un nuevo paso en esa dirección. A la versión 5.0 de NT la llamaron Windows 2000, y se convirtió en un interesante participante en el sector empresarial.

Tras ver la buena acogida que tuvo, Microsoft decidió llevar NT al resto de usuarios para que ambas ramificaciones convergieran. Lo hicieron en octubre del 2001 con la versión 5.1 de Windows NT, que llegó al mercado con el nombre de Windows XP. Por lo tanto, esta versión marcó un antes y un después no sólo por su gran impacto en el mercado, sino porque era el principio de la aventura del Kernel Windows NT en el mundo de los usuarios de a pie.

Desde ese día, todas las versiones de Windows han estado basadas en este Kernel con más de 20 añós de edad. La versión 5.1.2600 fue Windows XP, la 6.0.6002 fue Windows Vista, y la 6.1.7601 Windows 7. Antes hubo otros Windows Server 2008 y 2003, y después llegaron las versiones de NT 6.2.9200 llamada Windows 8, la 6.3.9600 o Windows 8, y finalmente la NT 10.0, también conocida como Windows 10.

Ic535109

La principal característica del Kernel de Windows NT es que es bastante modular, y está basada en dos capas principales, la de usuario y la de kernel. El sistema utiliza cada una para diferentes tipos de programa. Por ejemplo, las aplicaciones se ejecutan en el modo usuario, y los componentes principales del sistema operativo en el modo kernel. Mientras, la mayoría de los drivers suelen usar el modo kernel, aunque con excepciones.

Es por eso que se refieren a él como Kernel híbrido, pero sobre todo también porque permite tener subsistemas en el espacio del usuario que se comunicaban con el kernel a través de un mecanismo de IPC.

Cuando ejecutas una aplicación, esta accede al modo usuario, donde Windows crea un proceso específico para la aplicación. Cada aplicación tiene su dirección virtual privada, ninguna puede alterar los datos que pertenecen a otra y tampoco acceder al espacio virtual del propio sistema operativo. Es por lo tanto el modo que menos privilegios otorga, incluso el acceso al hardware está limitado, y para pedir los servicios del sistema las aplicaciones tienen que recurrir a la API de Windows.

El modo núcleo en cambio es ese en el que el código que se ejecuta en él tiene acceso directo a todo el hardware y toda la memoria del equipo. Aquí todo el código comparte un mismo espacio virtual, y puede incluso acceder a los espacios de dirección de todos los procesos del modo usuario. Esto es peligroso, ya que si un driver en el modo kernel toca lo que no debe podría afectar al funcionamiento de todo el sistema operativo.

Este modo núcleo está formado por servicios executive, como el controlador de caché, el gestor de comunicación, gestor de E/S, las llamadas de procedimientos locales, o los gestores de energía y memoria entre otros. Estos a su vez están formados por varios módulos que realizan tareas específicas, controladores de núcleo, un núcleo y una Capa de Abstracción del Hardware o HAL

Diferencias entre los Kernel de Linux y Windows

Control

La principal diferencia entre el Kernel de los sistemas operativos Windows y el de Linux está en su filosofía. El desarrollado por el equipo de Linus Torvalds es de código abierto y cualquiera puede cogerlo y modificarlo, algo que le sirve para estar presente en múltiples sistemas operativos o distros GNU/Linux. El de Microsoft en cambio es bastante más cerrado, y está hecho por y para el sistema operativo Windows.

En esencia, en Linux cogieron los principios de modularidad de Unix y decidieron abrir el código y las discusiones técnicas. Gracias a ello, Linux ha creado una comunidad meritocrática de desarrolladores, una en la que todos pueden colaborar y en la que cada cambio que se sugiere se debate con dureza para desechar las peores ideas y quedarse con las mejores. También se halaga a quienes consiguen mejorar las funcionalidades más veteranas.

Mientras, en Windows la cosa no funciona así. Tal y como explicaba en un artículo un antiguo colaborador del Kernel, los responsables del Kernel no ven con buenos ojos que se hagan propuestas que se desvíen del plan de trabajo, y asegura que hay pocos incentivos para mejorar las funcionalidades existentes que no sean prioritarias.

Esto hace, a ojos de ese antiguo desarrollador, que al dársele mayor importancia a cumplir planes que a aceptar cambios que mejoren la calidad del producto, o al no tener tantos programadores sin experiencia, el Kernel de Windows NT siempre esté un paso por detrás en estabilidad y funcionalidades.

Microsoft tiene menos problemas con controladores como los de las tarjetas gráficas.

Sin embargo, al ser Microsoft una empresa y su sistema operativo el que domina el escritorio, le cuesta menos que se asocien para trabajar con ellos implementando controladores. Eso hace, por ejemplo, que en temas de compatibilidad de hardware Windows vaya siempre un poco por delante, por lo menos en aspectos clave como el de los drivers de las tarjetas gráficas.

A nivel técnico existen similitudes entre ambos. Los dos núcleos controlan el software del sistema de bajo nivel y las interacciones con el hardware del ordenador a través de la capa de abstracción de hardware (HAL). El HAL es un elemento del sistema que funciona como interfaz entre software y hardware, y como las API, permite que las aplicaciones sean independientes del hardware.

Los dos están escritos principalmente en C, y son capaces de manejar el almacenamiento en caché, los controladores de dispositivos, la memoria virtual, los sistemas de archivos, los protocolos de red y las llamadas de sistema. Vamos, que en esencia sus funcionalidades son las mismas, aunque la manera de llevarlas a cabo es diferente.

Así como el Kernel de Windows tiene dos modos,y por lo tanto se le considera híbrido, la gran diferencia es que el de Linux sólo tiene una capa, o sea que es un núcleo monolítico. Eso sí, pese a ser más sencillo en este aspecto, para funcionar correctamente tiene su núcleo dividido en tres subcapas diferentes.

Ambos gestionan los problemas de memoria de forma parecida. Tienen sistemas de "swapping" para mover un proceso o parte de él temporalmente de la memoria principal a una secundaria de almacenamiento en el caso de que en la principal haya poco espacio. Windows lo hace en los ficheros pagefile.sys y swapfile.sys, mientras que Linux lo suele hacer en una partición, aunque también lo puede hacer en uno o varios ficheros o deshabilitarlo. Vamos que tiene más opciones.

El kernel de Linux no tiene capa de usuario. Sólo tiene una, la del propio kernel, por lo que se le considera monolítico.

En cuanto a qué tipo de estructura es mejor, aquí siempre hay debate. Los defensores del kernel monolítico siempre apuntan que son muchos más sencillos para depurar errores. Quizá por eso, muchos consideran que el de Windows NT está tendiendo cada vez más a uno monolítico, ya que herramientas como Windows Nano Server no tienen en absoluto el administrador de ventanas, todo se hace mediante consola, y es una de las variedades de WinServer 2016.

En cualquier caso, otros consideran esta última afirmación muy atrevida, y de hecho consideran que el Kernel Híbrido es una de las grandes ventajas de Windows. Ante la falta de rendimiento de los microkernels y la de seguridad frente a fallos internos de los monolíticos, Windows sabe aprovechar los aspectos buenos de cada uno de ellos para compensar los malos del otro.

Para que todo el mundo lo pueda entender hemos intentado no profundizar demasiado en el aspecto técnico. Por eso, si buscas más detalles técnicos de los núcleos de diferentes sistemas operativos, en esta gráfica puedes encontrarlos absolutamente todos, tanto los de Windows NT y Linux como los de Amiga, FreeBSD o GNU.

Por lo tanto, podemos decir que la principal diferencia entre ambos es la manera que se desarrolla cada uno. Además, el Kernel de Linux es mucho más sencillo, lo cual es bueno para los desarrolladores. Mientras, el de Windows intenta poner una capa de protección en su modo usuario para que los usuarios con menos conocimientos tengan menos posibilidades de dañar el sistema, y su estructura lo hace más estable frente, por ejemplo a fallos del driver gráfico.

Imágenes | Technozed, gpolydoros y hupstream
En Xataka | ¿Cómo ha logrado Microsoft que la consola Linux funcione en Windows 10?

Comentarios cerrados
Inicio