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 mientas 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