La persona que sentenció de esta forma tan contundente el futuro de Linux no es ningún aficionado del montón. Andrew S. Tanenbaum, el creador de Minix, eligió esas palabras para titular el artículo que publicó en el grupo de discusión comp.os.minix de Usenet solo unos meses después del lanzamiento de la primera versión del sistema operativo ideado originalmente por Linus Torvalds. Su crítica, como era de esperar, no cayó en saco roto.
Al día siguiente Torvalds publicó en el mismo foro una respuesta que pretendía desmontar las críticas de Tanenbaum. La razón por la que el principal instigador de Linux se tomó tan en serio esa crítica en particular al núcleo de su sistema operativo era que su propia creación estaba clara y profundamente influenciada por Minix, que, a su vez, estaba basado en Unix. Aquel primer intercambio de opiniones dio lugar a un interesantísimo debate que se ha prolongado durante años, y que ha llegado hasta nuestros días como «el debate Tanenbaum-Torvalds».
Unas pinceladas acerca de Tanenbaum y su sistema operativo
Andrew S. Tanenbaum no es tan popular como Linus Torvalds, por lo que merece la pena que nos detengamos un momento para repasar brevemente por qué es tan influyente. Aunque se graduó en Física en el prestigioso Instituto Tecnológico de Massachusetts (MIT), y se doctoró en astrofísica en Berkeley, Tanenbaum no tardó en apasionarse por la informática en general, y por el diseño de sistemas operativos en particular.

Nació en Nueva York, y pasó su infancia en White Plains, una localidad muy cercana a la urbe de los rascacielos de la que, curiosamente, también procede Mark Zuckerberg, el creador de Facebook. Sin embargo, la mayor parte de su carrera profesional ha discurrido en la Universidad Libre de Ámsterdam, en la que durante décadas ha dado clase de informática. Su trabajo como docente propició que publicase varios libros de texto dedicados a los sistemas operativos, los sistemas distribuidos y las redes. Y, además, también le llevó a escribir con un propósito educativo el código fuente de Minix.
Los libros de Tanenbaum están considerados unánimemente auténticas obras de referencia, y se utilizan en las facultades de informática de todo el mundo para explicar la arquitectura y el diseño de los sistemas operativos. De hecho, al menos uno de ellos, el titulado ‘Sistemas operativos: diseño e implementación’, contiene un apéndice con el código fuente completo de una de las primeras versiones del núcleo de Minix para que pueda ser consultado por los estudiantes de informática interesados en el diseño de sistemas operativos.
Los libros de Tanenbaum están considerados obras de referencia, y se utilizan en las facultades de informática de todo el mundo para explicar la arquitectura de los sistemas operativos

Linus Torvalds nunca ha ocultado lo mucho que le inspiraron tanto el libro de Tanenbaum que acabo de mencionar como Minix. En ‘Just for Fun: The Story of an Accidental Revolutionary’, la autobiografía que publicó en 2001, lo reconoce con la claridad que requiere algo que es evidente. Sin embargo, aunque la influencia de Minix en Linux es muy profunda, Torvalds no respetó a pies juntillas la arquitectura propuesta por Tanenbaum.
En vez de limitarse a crear un clon de Minix optó por desviarse en algunos apartados esenciales, y una de estas decisiones, precisamente, propició el conflicto que nació cuando a principios de 1992 Tanenbaum publicó su famosa crítica en el grupo de discusión comp.os.minix de Usenet.
Micronúcleo o núcleo monolítico, esa es la cuestión
Aquel primer artículo crítico de Tanenbaum fue respondido inmediatamente con otro de similar contundencia por Torvalds, lo que inició una discusión estrictamente técnica en la que ambos diseñadores abordaron múltiples discrepancias acerca de cuál era la forma más eficiente de implementar algunos de los componentes del núcleo de un sistema operativo. No obstante, la característica del núcleo de Linux más criticada por Tanenbaum fue su concepción como núcleo monolítico.
El creador de Minix defendía, y nada parece invitarnos a pensar que haya cambiado de opinión, que los micronúcleos son superiores, entre otras razones, debido a su mayor portabilidad, entendida como la capacidad de ser adaptados a una arquitectura diferente a la de aquella CPU para la que fueron inicialmente diseñados. Torvalds, sin embargo, defendió su decisión argumentando que aunque el diseño monolítico de Linux podía hacerlo menos adaptable a otras arquitecturas que Minix, la interfaz de programación de aplicaciones que había puesto a punto compensaba esa desventaja y, en la práctica, hacía a Linux más portable que Minix.
Andrew S. Tanenbaum defiende que los micronúcleos son superiores a los núcleos monolíticos, entre otras razones, debido a su mayor portabilidad
El tono de los artículos con los que se respondían Torvalds y Tanenbaum fue respetuoso, pero poco a poco sus respuestas fueron incrementando su complejidad para desmenuzar las peculiaridades técnicas a las que cada uno de ellos recurrió para reforzar sus argumentos. Curiosamente, otros usuarios de Usenet, sobre todo los que estaban involucrados en el desarrollo del núcleo de Linux, se sumaron a la discusión para arrimar su hombro al de Torvalds.

Explicar las diferencias que existen entre un sistema operativo con núcleo monolítico, como Linux, y otro con una estructura de micronúcleo, como Minix, requeriría que dedicásemos a este tema un artículo completo. Y sería complejo. No obstante, podemos intuir muy a grandes rasgos qué propone cada una de estas arquitecturas dejando a un lado los conceptos más complicados. Esta es la forma en la que Tanenbaum explica en uno de sus artículos publicados en Usenet las diferencias existentes entre estos núcleos.
«La mayor parte de los sistemas operativos antiguos es monolítica, por lo que el sistema operativo al completo es un único archivo que se ejecuta en modo supervisor (también conocido como modo kernel). Este fichero binario contiene el gestor de procesos, el administrador de memoria, el sistema de ficheros y todo lo demás. Unix, MS-DOS, VMS, MVS, OS/360, Multics y muchos otros sistemas operativos utilizan esta arquitectura», explica Tanenbaum.
«La mayor parte de los sistemas operativos antiguos es monolítica, por lo que el sistema operativo al completo es un único archivo que se ejecuta en modo supervisor», explica Tanenbaum
«La alternativa es un sistema basado en micronúcleos, de manera que la mayor parte del sistema operativo se ejecuta como procesos independientes, muchos de ellos fuera del núcleo. Estos procesos se comunican mediante mensajes. La función del núcleo es administrar este intercambio de mensajes, gestionar las interrupciones, supervisar los procesos de bajo nivel y la entrada/salida. Algunos ejemplos de este diseño son los sistemas operativos RC4000, Amoeba, Chorus, Mach o Windows NT». Este último sistema operativo de Microsoft aún no había sido lanzado en el momento en el que Tanenbaum escribió el artículo al que pertenece este texto.
Torvalds y Tanenbaum han asegurado en muchas ocasiones que su relación es amistosa, y que sus diferencias acerca de la forma en que debe ser implementado un sistema operativo solo se apoyan en aspectos técnicos. En ningún caso deben ser contempladas como una disputa personal. Es evidente que debe ser así.
Casi tres décadas después de aquel primer artículo crítico de Tanenbaum Linux mantiene un estado de forma fantástico, lo que demuestra que Torvalds y sus colaboradores no lo han hecho en absoluto mal. Curiosamente, de vez en cuando alguna declaración inesperada de cualquiera de los dos reaviva una discusión que posiblemente seguirá coleando mientras a ambos les queden ganas de debatir. Sin duda, es una oportunidad perfecta para que las personas interesadas en los sistemas operativos sigamos aprendiendo de ellos.
Imágenes: Jantangring | Krd | Mattia Gentilini
Ver 77 comentarios
77 comentarios
Trocotronic
“ Explicar las diferencias que existen entre un sistema operativo con núcleo monolítico, como Linux, y otro con una estructura de micronúcleo, como Minix, requeriría que dedicásemos a este tema un artículo completo.”
Estoy impaciente por leerlo.
pablo_
Con dos eminencias debatiendo, es muy difícil elegir bando. He disfrutado de la creación de Torvalds y, como todo hijo de vecino, he leído a Tanenbaum.
En cualquier caso, creo que la "batalla" microkernel vs. kernel monolítico no está del todo resuelta. El uso de microkernel puede llegar a provocar cierta sobrecarga en la llamada entre módulos, como se menciona de pasada en el artículo, pero es más portable.
Si no estoy demasiado desactualizado, creo que el camino que hoy en día impera es kernel monolítico con cierta modularidad, cosa que creo que implementa Linux. ¿Alguien más puesto en esto me confirma o desmiente?
robertgarcia2
Windows evoluciono hacia un núcleo hibrido, gracias a NT. Supongo que Linux, ira evolucionando en la misma dirección.
sanamarcar
Yo creo que uno puede tener su opinión, luego están las pruebas según el uso que hagas, y ahí es donde Linux menos mal que han tocado el código Google y Valve para darle vidilla para las masas... porque Ubuntu iba a hacia atrás casi siempre. Para todo lo demás Linux te da una tranquilidad, que Windows creo que no puede.
keridito
Desde el punto de vista de la seguridad, los kernel monolíticos son un coladero. Son demasiado grandes lo que hace mucho más difícil evitar que un error de cualquier naturaleza (diseño, implementación...), comprometa el sistema entero.
En ese sentido los micro-kernels son mucho más seguros. Harmony es un micro-kernel, SEL4 es un micro-kernel. Según para qué entornos es mucho mejor usar este tipo de sistemas en lugar de un monolítico tradicional. Además, el reducido tamaño de los micro-kernel permite aplicar técnicas de verificación del código para comprobar que la implementación es correcta respecto a su especificación.
jose.gon1
Y los SO de los Mac, ¿cuál de los dos núcleos llevan?
¿Y en sus nuevos procesadores RISC M1?
Creo que no se ha comentado por aquí.
darkyevon
Cada sistema operativo y ecosistema tiene sus fuertes, difícilmente te quedarás con uno sólo:
Linux: Para servidores, desarrollo y pequeños dispositivos no tiene rival. Para el usuario normal de pc está obsoleto y es complejo. Soporte de juegos reducido, y faltan muchas aplicaciones disponibles en otros sistemas operativos. Su consumo de recursos puede ser extremadamente bajo, y sus funciones en seguridad hablan por si solas.
Windows 11: Para juegos no tiene rival, y su integración con linux para WSL lo ha convertido en un sistema operativo muy polivalente. Si tienes windows sabes que podrás hacer todo sin salir de ahí. Peca de ser un ecosistema con estandarización muy baja (Tienda de apps con muy poco uso, apps antiguas mezcladas con nuevas). Posibilidad para servidores, aunque no es su fuerte.
MacOS: Para multimedia y movilidad no tiene rival, bajos recursos, silenciosos y alta duración de batería. Mucha estandarización, cuando hacen un cambio grande lo hacen rápido en todas sus apps oficiales y en dispositivos asociados. No sirve para jugar a juegos modernos, nunca se ha orientado a juegos ni en software ni en el hardware que sacan. Opción inexistente para servidores, o posibilidad de virtualizarlo por medidas artificiales de apple para impedirlo.
oso_togari
No tengo ni idea de diseño de s.o. Pero si hago mucho scripting y me asaltan las mismas dudas... aunque no tendra 100% de equivalencia
Monoliticos vs modulos y casi nunca logro saber cual es mejor siempre hay pros y contras
Gody
Obsoleto...
¿Para que?
¿Para quien?
Esa es la cuestion..
robertgarcia2
Los libros de Tanenbaum están considerados unánimemente auténticas obras de referencia, y se utilizan en las facultades de informática de todo el mundo para explicar la arquitectura y el diseño de los sistemas operativos. De hecho, al menos uno de ellos, el titulado ‘Sistemas operativos: diseño e implementación’,
Yo estudie eso en la universidad. Vaya que creo que si es algo conocido
cuentamemas
Bueno con sus falencias y todo Linux es a día de hoy el kernel mas versátil de todos, lo puedes encontrar en una cámara o en el mayor supercomputador del mundo y soporta una gran cantidad de arquitecturas, no se si alguno con microkernel lo supere en esos aspectos.
x_x_x
Sí, Linux mantiene un estado de forma fantástico. Un fantástico 2% según netmarketshare. Alguno me dirá que no, que hoy en día todas las lavadoras y los microondas funcionan con Linux. No merece la pena ni responder a eso por razones obvias.
sanamarcar
El movimiento se demuestra andando, y Linux si no está bien acompañado no sirve de nada para el sector domestico. Y creo que Google es la que mas ha hecho por Linux con diferencia, lo ha metido en miles de millones de aparatos. Pero como lo ha metido, lo puede quitar. En sobremesa, a día de hoy me da la sensación que hemos ido hacia atrás, o por lo menos en un estado estático que asusta. Y portatiles, salvo los Chromebooks hay demasiados sacrificios respecto al SO como servicio que es W10.
Y este debate, sería muy demostrable con números... es decir que hubiera un fork de Linux basado en microkernels y otro el actual, y ver como van evolucionando. Todo lo demás es paja.
juanlinux
windows no es difícil, windows simplemente aparte de malo, es un coñazo, y no digo que sea malo nada más instalarlo, si no que con el tiempo parece que se degrada, instalas, y desistalas y se va haciendo más pesado, bueno no en realidad es windows el culpable es el puñetero registro llamado regedit, que va dejando restos de software ya desistalado, además de llevar spyware o agujero de seguridad ( a propósito o no, pero los lleva) ¿ quien vigila el software privativo? una empresa y, ojo como publique alguien por el bien de la comunidad un error , un bug o un problema de seguridad, te denucian, y, ¿ quien vigila al software libre? una empresa, o varias, o gente altruista o tu mismo siempre que sepas de programación, ¿y linux tiene la capacidad de de degradación? o no la tiene o tan apenas, osea puedes comprarte o montarte tu ordenador con tu distribución preferida, incluso crear otra basada en una anterior, por decir algo en el 2013 y seguir funcionando = de bien en el 2020 y actualizándose, ¿el windows que instalaste en el 2013 tiene actualizaciones? no, por eso no existe sistema mas seguro que el GNU/linux , bueno tal vez con BSD también, por eso mi utilización de windows se reduce al 0.05% del tiempo que empleo de informática.