Así como otras veces he definido a Google como el Gran Intermediario, a Microsoft le calzaría bien el título de Gran Copión. ¿No entró Bill Gates en la Historia al vender a IBM como propio un sistema DOS que en realidad había comprado a otro programador? después vendría su sistema Windows o el navegador IExplorer, a remolque de productos de la competencia.
Como sabemos, Microsoft ha sido tradicionalmente partidario del núcleo monolítico, frente a la concepción modular. En realidad, el kernel monolítico ha sido el modelo dominante en una larga primera etapa de los sistemas operativos, de Unix (y por lo mismo, Linux y Mac) a Microsoft. Pero esta idea ha cambiado, de tal forma que se ha evolucionado hacia un núcleo modular como son desde hace unos años los de Linux y Mac.
Windows ha solucionado el crecimiento de su núcleo, imprevisto y excesivo como en los otros casos, a base de parches: los famosos Services Pack. Paralelamente, mantenía en reserva el proyecto MinWin desde 2003: como dice la palabra, un Windows minimalista. O sea, un kernel modular o por capas. Puede usarse en la versión Core de Windows Server 2008 que reduce drásticamente muchos componentes de escritorio y la interfaz gráfica de usuario. Sin embargo no pasa de ser un componente (presente ya en el kernel de Vista por ejemplo) de Windows, un sistema operativo que no se decide a romper con el pasado y sigue jugando con la mercadotecnia: si te pones a buscar en Internet, apenas encontrarás declaraciones explícitas de directivos de Microsoft aclarando si MinWin es el nuevo núcleo de Windows 7 o no. Si Windows 7 será más seguro porque corre sobre un kernel modular o no. O por qué ya se está desarrollando el primer Service Pack.
Vía Ars technica

Hombre… yo creo que Windows fue modular desde sus inicios: los famosos drivers están ahí desde siempre y ya estaban en DOS, en parte porque al ser propietario, el sistema sería inviable sin ellos; son equivalentes a los módulos del núcleo de Linux que se introdujeron mucho después (aún me acuerdo cuando para cualquier cambio chorras había que recompilar todo el Kernel en Linux).
En todo caso Mac es el único que realmente es modular al utilizar la arquitectura Mach… los otros dos son de arquitectura híbrida: un gran kernel y pequeños módulos-drivers para interactuar con hardware.
Comentario por Santi — 22 de Noviembre de 2009 @ 11:31 pm
Uff, me acuerdo de aquellas recompilaciones del kernel que podían durar media hora o más.
En cuanto al kernel de Windows, está considerado monolítico por algunos:
http://alice1954.blogspot.com/2009/10/kernel-monolitico.html
Aunque el mismo Microsoft lo define como híbrido:
http://technet.microsoft.com/es-ar/library/dd574270.aspx
Y algunos windwoseros aclaran: “El kernel de Windows no ha sido siempre monolítico, sólo lo es en las versiones que han derivado de Windows NT: 2000, XP”
(http://casimiro-vista.blogspot.com/2008/01/microkernel-vs-kernel-monoltico.html)
De acuerdo con lo que dices de Mac, el más modular. y Linux debería ir hacia esto, cambiando en todo caso a otros núcleos como Hurd. Entonces ya no sería Linux sino GNU/Hurd
Comentario por emiligene — 23 de Noviembre de 2009 @ 12:16 am
emiligene: He leído los artículos que enlazas y -no es por ofender pero- la mayoría de ellos están plagados de inexactitudes e incorrecciones y se contradicen a ellos mismos.
Por ejemplo: la razón de que Windows 95 y 98 se colgaran más no es el tipo de kernel que usaban, sino el tipo de gestión de memoria y la protección que se ejercía sobre ella (esto se puede hacer mejor o peor independientemente del tipo de kernel): si mal no recuerdo el problema concreto era que estos sistemas usaban un único espacio de direcciones, con todos los problemas que ello suponía.
Por otro lado, Mac es modular, sí, pero está basado en BSD, que es un Unix, así que decir que Unix es monolítico es otra incorrección… hay versiones de Unix que lo son y versiones que no.
No se, por ejemplo: un microkernel es efectivamente más dificil de depurar y crear, sino que se lo digan los de GNU que están con el Hurd que es la historia de no acabar… peeeeero: una vez completado: un micronucleo es muchisimo más robusto que un monolítico: de hecho es practicamente incolgable: si una parte se cuelga, automaticamente es relanzada. De hecho los OS de tiempo real suelen basarse en micronucleos…
Podría seguir…
En todo caso, de lo que dices estoy de acuerdo con casi todo salvo que los OS de microsoft, desde la versión 3 de MSDOS son kernels híbridos, al igual que los es Linux ahora. La razón: tan sencilla como que tienen un sistema de drivers. Los drivers son extensiones del kernel, al igual que los módulos de Linux.
Comentario por Santi — 23 de Noviembre de 2009 @ 3:20 pm
Santi, creo que tu comentario ayuda a centrar la discusión:
1. Mac es modular ahora, en su inicio era monolítico.
2. Linux evoluciona desde un modelo monolítico (Torvalds mismo lo critica por demasiado pesado) a otro híbrido
3. Windows sigue (¿seguía?) un modelo híbrido
4. Drivers (en Win) = módulos (en Linux)
Pero el origen de mi post era el oscurantismo de Microsoft. He leído un montón de posts y no hay forma de aclararse: ¿WinMin es el núcleo de Windows 7?
De ahí el título del post:
Windows (no) sigue a Linux y Mac
No hay forma de saberlo.
Según este post (http://u.nu/6izx3) WinMin es un kernel experimental, pero también el de W 7 pero no el de Core: un lío.
Saludos!!
Comentario por emiligene — 23 de Noviembre de 2009 @ 6:07 pm
Muy interesantes los comentarios.
Sobre lo de los kernels, creo que a partir de Windows-NT encargaron la programación del núcleo a Dave Cuttler (el creador del S.O. de los VAX) que hizo un buen kernel, parece ser que monolítico, y la razón de los problemas posteriores parecen estar más bien en los
agujeros introducidos por el resto de Microsoft (aunque, como bien decís, dado el oscurantismo que practican, esto son especulaciones).
En mi modesta opinión, ese kernel es lo único
bueno que ha salido de Microsoft, aunque como
digo luego lo estropeasen. Respecto a “sistemas” anteriores (Win 3.11, W95, W98…)
efectivamente, usan un modelo de “gestión”
de la memoria con un sólo espacio de direcciones, que es como decir que no hay modelo de gestión, y por tanto llamarlos “kernel”, en el sentido clásico de la teoría de S.S.O.O no tiene mucho sentido (aunque sí, vale,
es el programa que arranca, chequea el hardware y lanza los procesos…).
Sobre el nuevo núcleo MinWin, estaría bien,
sería el segundo ataque de racionalidad, después
del encargo a Dave Cuttler, pero me temo que
aunque así fuese ya se encargaría el resto de
la empresa de convertirlo en un queso gruyere,
como el de NT/XP. (Por cierto: ¿alguien sabe
si el kernel de Vista es el mismo que el de XP?)
Sobre kernels realmente modulares (microkernels mínimos en el anillo 0 con los drivers
corriendo en el anillo 3) están QNX, Mach, L4,
y algunos otros, que se usan en aplicaciones
muy concretas, sobre todo sistemas de tiempo
real. Un estupendo intento de kernel híbrido
es MINIX-3, el nuevo sistema de Tanenbaum, que
no termina de despegar (hace muchísimo tiempo
que no sacan nueva versión…)
Comentario por Juan — 3 de Diciembre de 2009 @ 1:42 pm