Kernel de Linux versus kernel de Windows Vista

Autor: Armonth | El lunes 23 de abril del 2007 @ 03:38.

Tux chupando un tetrabik de 'Windows'Me han pasado por correo electrónico el enlace a Kernel Comparison: Linux (2.6.20) versus Windows (Vista) un completo texto comparativo entre el núcleo de Linux (concretamente en su versión 2.6.20) y el kernel de Windows (el artículo se ha actualizado y ahora el kernel corresponde al de Vista).

Actualización (2012): ahora la comparación es entre la versión 2.6.28 del kernel linux y la de Windows Vista SP1.

No es un paper en el sentido de que no explica de pe a pa cada parte. Se limita a revisar opciones de cada núcleo y compararlas. En verde tenemos las opciones que son mejores o más flexibles en un núcleo frente al otro, en rojo las que son peores y en negro las que son neutrales o tienen cierta controversia detrás.

En las discusiones típicas de "Windows vs Linux" suelo ver como algo habitual que se limiten a facilidad de uso, programas de terceras compañías (software, juegos, etcétera) y algo de FUD por en medio pero nunca se comenta cosas como el núcleo. Algo que suele ser muy importante e ignorado: está ahí y de él depende un % muy grande del buen funcionamiento del sistema operativo pero se le ignora salvo "por cuatro frikis".

Quizá no se comenta porque nadie duda de la superioridad técnica del núcleo Linux frente al de Windows. O directamente porque la mayoría de las mismas son poco técnicas y más un "me gusta por..." o "no me gusta por..." y claro el núcleo puede ser mejor o peor pero de ahí a gustarte. Aunque seguro que un "kernel vanilla" debe estar sabroso :P

Algunos datos que me llaman la atención son por ejemplo las llamadas del sistema (system calls), mientras Linux tiene 320 Windows tiene más de 1000. A simple vista no se puede sólo por el dato comparar si esto es mejor para uno u otro. Pero el hecho de que los desarrolladores no se suelan quejar de las llamadas del sistema en Linux me hace pensar que "tienen lo que necesitan". Si estoy en lo cierto, el número abultado de llamadas en el kernel de Windows debe ser por mantener la (arcaica) compatibilidad hacía atrás lo cual como ya he dicho en anteriores veces vuelve el diseño muy complejo y propenso a errores.

Otro dato interesante es el tiempo de desarrollo, cada "versión menor" (en el caso de linux los 2.6.x) dura 3 meses en linux y 31 en Windows. En las versiones mayores la cosa ya se balancea menos: Linux tarda 35 meses y Windows 38. Aquí se puede observar lo que decía Linus Torvalds (si no me falla la memoria): lanza versiones rápidamente, continuamente.

El tamaño en líneas de código en Windows aumenta en cada versión (actualmente 10 millones de líneas) de forma exagerada aunque Linux en cada versión mete soporte para mucho hardware sin que aumente el número tanto (4 millones actualmente) osea que no sé que pensar. El número anterior es sin drivers, si incluimos los drivers los números se disparan y la diferencia también (Windows 25 millones, Linux 8).

El tamaño resultante del kernel (sin drivers/módulos) también es notablemente diferente:Linux ocupa 1.3MB frente a los 4.6MB de Windows.

Seguimos con más datos, a destacar el número de arquitecturas soportadas donde Windows literalmente es machado: Windows soporta x86 ("los ordenadores de toda la vida"), AMD64 y IA-64. Linux soporta ésas y además otras 14 arquitecturas sin contar consolas.

En tema de limitaciones para mucho hardware de golpe también gana el kernel linux por goleada: soporta 1024 CPUs de 32 o 64 bits frente a las 4-32 y 4-64 respectivamente de Windows. También soporta en temas de memoria 64GB de RAM de 32 bits PAE o 1024GB - 8.589.934.592GB de RAM de 64 bits frente a Windows que se queda con 1GB/<4GB y hasta 128GB (según versiones) respectivamente.

Que por cierto, el que tenga 8.192 petabytes de memoria RAM de 64 bits para llegar al máximo permitido en el kernel linux que avise que ya sé a quién tengo que atracar.

Y eso solo es un entrecot. Hay muchos más datos que digerir y comparar pero muchos de ellos para saber qué son hay que saber de sistemas operativos o ser un friki de cuidado... o ambas. Por lo que lo vamos a dejar aquí: os recomiendo leer toda la comparativa.

Comentarios