domingo, 13 de febrero de 2011

MINIX 3 S.O

Minix 3, como su propio nombre indica, es la tercera versión del sistema operativo desarrollado inicialmente por Andrew S. Tanenbaum en 1987, tras la decisión de AT&T de prohibir la libre distribución del código fuente de UNIX. Sin embargo, poco o nada tiene que ver esta tercera versión con las dos anteriores. En 2005, Tanenbaum formó un nuevo equipo de programadores para reescribir completamente Minix como un sistema altamente confiable, por lo que, a pesar del parentesco, Minix 3 es en realidad un sistema nuevo.

Originalmente, Minix fue diseñado con fines educativos, pensado como complemento para los cursos de sistemas operativos que Tanenbaum impartía en la universidad. Actualmente, el objetivo principal de Minix 3 es su uso en dispositivos empotrados, aunque se ha mantenido la faceta educativa del mismo. La idea motora que Tanenbaum quiso darle al proyecto fue desarrollar un sistema tolerante a fallos, mediante la detección y reparación de los errores durante la ejecución y sin intervención del usuario. Esta característica, junto con su reducido consumo de recursos y su modularidad son los motivos que esgrime la comunidad Minix para apoyar la inclusión del sistema en el mundo de los dispositivos empotrados.

Fueron las primeras versiones de Minix las que comenzó a estudiar Linus Torvalds y favorecieron el desarrollo del kernel Linux que se usa en la actualidad. Pese a que Linus tenía profundos conocimientos de Minix, no copió ninguna sección de su código, como desmintió el mismo Tanenbaum. A pesar de que Linus comenzó el desarrollo de su kernel con Minix en mente, las decisiones de diseño que tomó alejaron ambos sistemas: mientras Minix 3 se ha mantenido con un microkernel sencillo y de pequeño tamaño. GNU/Linux se desarrolló como un kernel monolítico. A día de hoy, el núcleo de Minix está compuesto de menos de 5.000 líneas de código, mientras que a principios de 2009, se estima que el kernel de Linux contiene unos 10 millones de líneas de código. Las primeras versiones de Minix tenían soporte para varias arquitecturas, entre ellas ARM, Macintosh, Amiga, SPARC... La nueva versión, sin embargo, actualmente sólo es compatible con la arquitectura IA-32 de Intel, aunque existe un port para PowerPC (PPC) desarrollado por Ingmar Alting como su proyecto de tesis de máster, dirigida por Tanenbaum, y el soporte a esta arquitectura Es bastante completo. Asimismo, existe un proyecto de dar soporte a XSCALE que se encuentra en fases muy tempranas de desarrollo. Las características de Minix 3 hacen del mismo un sistema operativo muy adecuado a los dispositivos empotrados, para lo cual es necesario que disponga de soporte para arquitecturas ARM, ya que los procesadores de esta arquitectura están presentes en la gran mayoría de los sistemas empotrados. 

Todas las versiones de Minix están publicadas bajo la licencia BSD y pueden descargarse de manera gratuita de su web.



DISEÑO Y ARQUITECTURA






El sistema operativo Minix implementa una arquitectura microkernel separada en capas como se muestra en la Figura 2.1. En la teoría de sistemas operativos, tal como se menciona en el libro de Tanenbaum [2] al respecto, existen al menos cinco maneras diferentes en las que se pueden estructurar los sistemas operativos: monolítico, por capas, máquina virtual, exokernel y cliente/servidor. Minix 3 combina dos de estas estructuras: la basada en capas y la arquitectura cliente/servidor. La arquitectura basada en capas divide el sistema en una serie de niveles que implementan funciones específicas. En dicha configuración, es habitual que las capas más altas dependan de los servicios ofrecidos por otras capas de nivel inferior. Minix 3 tiene cuatro capas, cada una con una función específica y bien definida. En una estructura microkernel la mayoría de las funcionalidades clave del sistema operativo se implementan como servidores que se ejecutan separadamente del kernel. Este diseño hace que el sistema operativo sea modular y extensible, puesto que es posible desarrollar nuevos servicios con relativamente pocos cambios en el kernel. Los servicios fundamentales que provee un microkernel son la gestión del espacio de direcciones, gestión de hilos, comunicación entre procesos y gestión de los temporizadores.


Puedes encontar mas informacion con el siguiente documento.
URL: eprints.ucm.es/9519/1/Minix@ARM.pdf