domingo, 31 de octubre de 2010

El sistema operativo Minix

Minix
Si eres lector habitual de blogs sobre GNU/Linux o software libre seguramente habrás leído alguna vez que GNU/Linux es más que Ubuntu. Sin embargo, también se puede decir que Unix es más que solo GNU/Linux. Hay varios sistemas operativos con la filosofía Unix además de GNU/Linux, si bien es cierto no tan extendidos como este último, por mencionar algunos los de la familia BSD (NetBSD, FreeBSD, OpenBSD, ...), el en continuo estado de desarrollo GNU/Hurd (del que Arch tiene una versión con este núcleo, Arch Hurd), Illumos y Solaris, otros menos conocidos como DragonFly y sobre el que trata esta entrada, Minix.

Como muy posiblemente ya conocerás Minix es el sistema desarrollado por Andrew Tanenbaum (y colaboradores) con el objetivo inicialmente de ser un sistema operativo con el que sus alumnos pudiesen aprender de forma práctica los principios teóricos sobre los que se basan los sistemas operativos. Con la versión 3 también tiene como objetivo ser un sistema usable según la propia página del proyecto.

Las diferencias entre los sistemas operativos Unix son varias que van desde la licencia que usan hasta la arquitectura interna. GNU/Linux utiliza una arquitectura monolítica en la que el kernel se compila como un único programa ejecutable y en el que los drivers se ejecutan en modo kernel. Esta arquitectura tiene la ventaja de que el kernel es más rápido pero a costa de que un fallo en un driver pueda tumbar el sistema. Para evitar este último problema surgen los sistemas operativos basados en un microkernel en el que el kernel propiamente es muy pequeño, de tan solo unas 6000 líneas de código, proporcionando las funciones básicas como un entorno en el que se puedan ejecutar varios programas concurrentemente sin que se interfieran entre ellos. El resto de funcionalidades son proporcionadas por los controladores de dispositivos (p. e. el controlador del disco duro) y unas entidades llamadas servidores usadas por los procesos (p. ej. los servidores de sistemas de archivos) que se ejecutan en modo usuario sin que puedan afectar al kernel.

Los debates entre si es mejor una arquitectura monolítica o una basada en microkernel ha originado alguna que otra discusión entre el propio Linus Torvalds y Andrew Tanenbaum (I, II y III) cada uno defendiendo las ventajas de cada implementación según los objetivos de cada sistema operativo.

Si has llegado hasta esta linea quizá te interese conocer un poco más como funcionan los sistemas operativos y Minix es un buen sistema operativo para ello. Un buen libro publicado por Tanenbaum es «Sistemas operativos. Diseño e implementación». La versión 2 de este libro está disponible en castellano y la versión 3 esta disponible en Amazon y otras tiendas en inglés.

Referencia:
Minix
Guía instalación Minix
Guía post instalación Minix
Lista de discusión de Minix
Código fuente Minix (Git)
http://www.osnews.com/story/15960/Introduction-to-MINIX-3
http://eprints.ucm.es/9519/1/Minix@ARM.pdf
http://wiki.minix3.org/en/MinixResources
http://www.freesoftwaremagazine.com/articles/minix
http://wiki.minix3.org/en/MinixFaq
http://wiki.minix3.org/en/Publications
http://sopa.dis.ulpgc.es/ii-dso/lecminix/lecminix.htm