💾 Archived View for texto-plano.xyz › peron › articulos › bardo_minix.gmi captured on 2024-07-09 at 00:18:59. Gemini links have been rewritten to link to archived content

View Raw

More Information

-=-=-=-=-=-=-

Bardo en la USENET

Con el correr del tiempo, las listas de correo electrónico de la USENET se hicieron conocidas por sus "Guerras de Llamaradas", o FLAMEWARS. Este cuasi-pasatiempo tóxico nunca dejó de desaparecer, por la impersonalidad que permitía el pseudoanonimato en las redes.

Una típica FLAMEWAR se inició cuando el creador de MINIX, Andrew Tenembaun, profesor emérito en el desarrollo, tiró un piedrazo el enero de 1992, sacándole el cuero a LINUX como sistema operativo superado por las elecciones técnicas realizadas durante su desarrollo.

"LINUX es Obsoleto"

Estuve en los EE. UU. durante un par de semanas, así que no he comentado mucho sobre LINUX (no es que hubiera dicho mucho si hubiera estado presente), pero si vale la pena, tengo un par de comentarios ahora.

Como la mayoría de ustedes sabrán, para mí MINIX es un pasatiempo, algo que hago por la noche cuando me aburro de escribir libros y no hay grandes guerras, revoluciones ni sesiones del Senado televisadas en vivo por CNN. Mi verdadero trabajo es el de profesor e investigador en el área de sistemas operativos. Como resultado de esta ocupación, creo saber un poco sobre hacia dónde apuntará la industria más o menos durante la próxima década.

Destacan dos aspectos:

1. MICROKERNEL VS SISTEMA MONOLÍTICO

La mayoría de los sistemas operativos más antiguos son monolíticos, es decir, todo el sistema operativo va embutido en un solo archivo a.out que corre en 'modo kernel'. Este binario contiene la gestión de procesos, de memoria, el sistema de archivos y el resto. Ejemplos de tales sistemas son UNIX, MS-DOS, VMS, MVS, OS/360, MULTICS y muchos otros mas.

La alternativa está dada por los sistemas basado en microkernel, donde la mayor parte del sistema operativo se ejecuta como procesos separados, en su mayoría fuera del kernel. Se comunican por tráfico de mensajes. El trabajo del kernel es manejar el paso de mensajes, el manejo de interrupciones, la gestión de procesos de bajo nivel y posiblemente la E/S. Ejemplos de este diseño son el RC4000, Amoeba, Chorus, Mach y el Windows/NT aún no lanzado.

Si bien podría exponer aquí una larga historia sobre los méritos relativos de ambos diseños, basta con decir que entre las personas que verdaderamente diseñan sistemas operativos, el debate ya está cerrado (salvo por los gritos). Los microkernels han ganado. El único argumento real de los sistemas monolíticos era el rendimiento, pero ahora existen evidencia suficiente que demuestra que los sistemas de microkernel pueden ser tan veloces como los sistemas monolíticos.

MINIX es un sistema basado en microkernel. Su sistema de archivos y la gestión de la memoria son procesos independientes que se ejecutan fuera del núcleo. Los controladores de E/S también resultan procesos separados (corren en el núcleo, pero unicamente debido la naturaleza descerebrada de las CPU Intel que hace que sea difícil hacerlo de otra manera). LINUX es un sistema de estilo monolítico. Este es un gran retroceso hacia la década de 1970. Es como tomar un programa existente escrito en C y funcionando, y reescribirlo en BASIC. Para mí, escribir un sistema monolítico así en 1991 representa una idea verdaderamente paupérrima.

2. PORTABILIDAD

Había una vez una CPU 4004. Creció y se convirtió en un 8008. Luego se sometió a una cirugía plástica y se convirtió en el 8080. Engendró al 8086, que engendró al 8088, que engendró al 80286, que engendró al 80386, que engendró al 80486, y así hasta el N-ésima generación. Mientras tanto, aparecieron los chips RISC y algunos de ellos funcionan a más de 100 MIPS. Es probable que en los próximos años estos alcancen velocidades de 200 MIPS y más. Estos no van a desaparecer de repente. Lo que va a pasar es que poco a poco tomarán el relevo de la línea 80x86. Podrán correr programas antiguos de MS-DOS emulando al 80386 por software. (Incluso he escrito mi propio simulador de IBM PC en C, que pueden descargar por FTP desde ftp.cs.vu.nl = 192.31.231.42 en el directorio minix/simulator).

Creo que es un gran error diseñar un sistema operativo para cualquier arquitectura específica, ya que no durará mucho tiempo.

MINIX fue diseñado para ser razonablemente portátil y ha sido portado desde la línea Intel a la 680x0 (Atari, Amiga, Macintosh), SPARC y NS32016. LINUX está bastante ligado al 80x86. No es el camino a seguir.

No me malinterpreten, no estoy descontento con LINUX. Me quitará de encima a todas las personas que quieren convertir MINIX en BSD UNIX. Pero con toda honestidad, sugeriría que aquellos que desean un sistema operativo **MODERNO** "libre" se decanten por un sistema operativo portátil basado en microkernel, como quizás GNU o algo así.

Andy Tanenbaum (a...@cs.vu.nl)

PD: Aparte de este, Amoeba tiene un emulador de UNIX (que se ejecuta en el espacio del usuario), pero está lejos de estar completo. Si hay alguna persona a la que le gustaría trabajar en él, por favor hágamelo saber. Para ejecutar Amoeba, necesita algunos 386, uno de los cuales necesita 16M y todos necesitan la tarjeta WD Ethernet.

=====

Desde Finlandia respondió Linus Benedict Torvalds:

Bueno, con un tema como este, me temo que tendré que responder. Disculpas a los usuarios de minix que han escuchado suficiente sobre Linux de todos modos. Me gustaría poder simplemente "ignorar el anzuelo", pero... ¡Es hora de una fiesta de fuego seria!

Sobre programar como hobby:

¿Esta es tu escusa por las limitaciones de MINIX? Lo siento, perdiste: tengo más excusas que tú, y linux le rompe el culo a MINIX en casi todas las áreas. Por no mencionar el hecho de que la mayor parte del buen código fuente de MINIX para PC parece haber sido escrito por Bruce Evans.

Re 1: que estás haciendo MINIX como un pasatiempo... mirá quién gana dinero con MINIX y quién da Linux gratis, y después hablá sobre hobbies. Cuando MINIX esté disponible libremente, desaparecerá una de mis quejas principales. Linux ha sido en en la mayor parte un pasatiempo para mí (pero uno serio: de los mejores): no gano dinero con él, y ni siquiera es parte de ninguno de mis estudios en la universidad. Lo he hecho todo en mi propio tiempo y en mi propia máquina.

Re 2: tu trabajo como profesor e investigador... Qué gran excusa para los daños cerebrales de MINIX. Solo puedo esperar (y asumir) que Amoeba no apesta como lo hace MINIX.

1. MICROKERNEL VS SISTEMA MONOLÍTICO

Cierto, Linux es monolítico y estoy de acuerdo en que los microkernel son mejores. Si hubiese sido menos peleador, probablemente hubiese estado de acuerdo con la mayor parte de lo expuesto. Desde un punto de vista teórico - y estético - Linux pierde. Si el kernel GNU hubiera estado listo la primavera pasada, ni siquiera me hubiera molestado en comenzar mi proyecto; el hecho es que no lo estaba y de hecho aún no lo está. Linux gana muchos puntos por existir.

MINIX es un sistema basado en microkernel. [borrado, pero no para que se pierda el punto] LINUX es un sistema de estilo monolítico.

Si este fuera el único criterio para definir lo "bueno" de un kernel, tendrías razón. Lo que no mencionás es que MINIX hace tan bien lo del micro-kernel que tiene problemas con la multitarea real (en el kernel). Si hubiera creado un sistema operativo que tuviera problemas con un sistema de archivos multiproceso, no sería tan rápido para condenar a los demás: de hecho, habría hecho todo lo posible para que los demás olvidaran tal fiasco.

[sí, sé que hay hacks de subprocesos múltiples para MINIX, pero son hacks, y Bruce Evans me dice que hay muchas condiciones de carrera]

2. PORTABILIDAD

"La portabilidad es para las personas que no pueden escribir nuevos programas"

-yo, ahora mismo (con ironía)

El hecho es que Linux es más portátil que Minix. ¿Qué? te escucho decir...

Es cierto, pero no en el sentido en que significa: hice que Linux se ajustara a los estándares como se me ocurrió (sin tener ningún estándar POSIX a mi lado). Portar cosas a Linux es generalmente /mucho/ más fácil que portarlas a MINIX. Estoy de acuerdo en que la portabilidad es algo bueno: pero solo cuando ello tiene alguna importancia. No tiene sentido intentar de hacer que un sistema operativo sea portátil: es suficiente con adherirse a una API portable.

La /idea/ misma de un sistema operativo es emplear las funcionalidades del hardware escondiéndolas tras una capa de llamadas de alto nivel. Es exactamente lo que hace Linux: directamente utiliza un subconjunto de funcionalidades del procesador 386 mayor de lo aparentemente utilizan otros kernels. Por supuesto, esto no sólo hace que el núcleo sea portable, sino que también implica un diseño /mucho/ más simple. Una compensación aceptable, que hizo posible Linux, en primer lugar.

Estoy de acuerdo en que Linux lleva la no portabilidad al extremo: obtuve mi 386 en enero pasado, y Linux fue en parte un proyecto para enseñarme a mi mismo sobre este microprocesador. Podría haber hecho muchas cosas de forma más portable, si hubiera contado desde el incio con el hardware real. Sin embargo, no estoy poniendo demasiadas excusas al respecto: fue una decisión de diseño, y realmente en abril pasado, cuando lo comencé, ni pensé que alguien más querría utilizarlo..

Me complace informar que me equivoqué, y como mi código fuente está disponible libremente, cualquiera puede intentar portarlo, aunque no será fácil.

Linus PD. Me disculpo por sonar demasiado duro a veces: MINIX es suficientemente bueno... si no tienes otra cosa. Amoeba podría ser bueno si tienes 5-10 386 para usar, pero yo ciertamente no los tengo. Normalmente no acudo a guerras de llamas, pero soy susceptible cuando se trata de Linux :)