MINIX

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda
MINIX
Parte de la familia Unix
MINIX screenshot.png
MINIX 3.1.2a
Desarrollador
Andrew S. Tanenbaum
www.minix3.org
Información general
Modelo de desarrollo Software libre
Última versión estable 3.2.1
21 de febrero de 2013
Núcleo MINIX
Tipo de núcleo Micronúcleo
Licencia Licencia BSD
Estado actual En desarrollo
En español ?

MINIX es un clon del sistema operativo Unix distribuido junto con su código fuente y desarrollado por el profesor Andrew S. Tanenbaum en 1987.

Fue creado para enseñar a sus alumnos el diseño de sistemas operativos en la Vrije Universiteit de Ámsterdam. La razón de su desarrollo fue porque Unix estaba bajo restricciones de licencia de AT&T, era demasiado complicado y corría sobre máquinas complejas; algo completamente antipedagógico.

Gracias a su reducido tamaño, diseño basado en el paradigma del micronúcleo, y su amplia documentación, resulta bastante apropiado para personas que desean instalar un sistema operativo compatible con Unix en su máquina personal así como aprender sobre su funcionamiento interno.

Minix fue desarrollado para correr sobre IBM PC con microprocesador Intel 8088 o superior, aunque se han creado conversiones para otros sistemas.

Debido al enfoque puramente educacional de MINIX, Tanenbaum no permitía que este fuera modificado demasiado ya que esto complicaría el sistema y no permitiría que sus estudiantes lo entendieran en un semestre. Por estos motivos, Linus Torvalds decidió escribir su propio núcleo de sistema operativo (Linux) compatible con Unix. En simbiosis con las herramientas de GNU surgió GNU/Linux, que ha ganado protagonismo en el campo de los Unix para ordenadores compatibles con el IBM PC, principalmente debido a que su licencia (GPL) permite la modificación del mismo. Actualmente Minix se distribuye con una licencia similar a la licencia BSD, lo que permite su modificación.

Para una persona poco familiarizada con los elementos internos de un sistema operativo, MINIX es una buena opción que le permite entender casi todos los elementos del sistema con solo algunos meses de uso y estudio.

Historia[editar]

Andrew S.Tanenbaum creó MINIX en la Universidad Libre de Ámsterdam para ejemplificar los principios recogidos en su libro de texto Operating Systems: Design and Implementation (1987). Una parte del código en C del núcleo, el controlador de memoria y el sistema de ficheros de MINIX 1.0 se recogen en este libro.

Junto con el libro también había disponible un disquete con el código fuente de MINIX y los binarios, junto con un manual de referencia del sistema.

Tanenbaum creó originalmente MINIX para que fuera compatible con las arquitecturas IBM PC e IBM PC/AT, que eran las comunes en esa época.

MINIX 1.5, publicado en 1991, incluía soporte para MicroChannel IBM PS/2 y también fue adaptado para las arquitecturas Motorola 68000 y SPARC, soportando Atari ST, Commodore Amiga, Apple Macintosh y plataformas Sun SPARCstation.

También existió una adaptación no oficial a las arquitecturas compatibles con Intel 80386 (en modo de 32 bits protegido), National Semiconductor NS32532, ARM y procesadores INMOS transputer. Meiko Scientific utilizó una primera versión de MINIX como base de su sistema operativo MeikOS. También existió una versión de MINIX que se ejecutaba como un proceso de usuario en el sistema operativo SunOS.

Al decrementarse la demanda de las computadoras de arquitectura de 68k, MINIX 2.0, publicado en 1997, sólo era compatible con las arquitecturas x86 y SPARC. Fue el tema para la segunda edición del libro de Tanenbaum, en esta ocasión co-escrito junto con Albert Woodhull, y fue distribuido en un CD-ROM incluido en el libro. MINIX 2.0 añadía compatibilidad con POSIX1, soporte para arquitecturas Intel 80386 y superiores de 32 bits y reemplazó los protocolos de red Amoeba incluidos en MINIX 1.5 por TCP/IP. También aparecieron adaptaciones no oficiales de MINIX 2.0 para las arquitecturas basadas en el 68020 ISICAD Prisma 7000 y las basadas en Hitachi SH3.

Minix-vmd es una variante de MINIX 2.0 para procesadores compatibles con Intel IA-32, que fue creada por dos investigadores de la Vrije Universiteit, la cual añadía memoria virtual y soporte para el sistema gráfico X Window System.

MINIX 3 fue públicamente anunciado el 24 de octubre de 2005 por Andrew Tanenbaum, durante su exposición en la conferencia de ACM en el Symposium on Operating System Principles. Aunque sigue manteniéndose como ejemplo para la nueva edición de su libro, está comprensiblemente rediseñado para ser “utilizado como un sistema serio en computadoras con recursos limitados y para aplicaciones que requieren de gran fiabilidad”.

Actualmente MINIX 3 soporta sólo arquitecturas derivadas de IA-32, y está disponible en LiveCD, lo que permite ser utilizado sin necesidad de instalar el sistema operativo, y en versiones compatibles con sistemas de emulación o virtualización como BOCHS, Qemu, VMware y VirtualPC.

La versión 3.1.5 fue lanzada el 5 de noviembre de 2009, y contiene X11, emacs, vi, cc, gcc, perl, python, ash, bash, zsh, ftp, ssh, telnet, pine y cerca de 650 aplicaciones más, comunes a los sistemas Unix. Con la incorporación de X11, esta versión marca el punto de transición entre el modo texto y gráfico en este sistema operativo. Otra característica de esta versión, que será mejorada en un futuro, es la habilidad del sistema para mantenerse cuando el driver de algún componente deja de funcionar, y en algunos casos éstos son reemplazados automáticamente sin afectar a los procesos que se estén ejecutando. Siguiendo este camino, MINIX es self-healing, lo que lo hace ideal para sistemas que requieren alta fiabilidad.

Estructura de Minix[editar]

Para comprender mejor la estructura microkernel de MINIX se detallan a continuación las diferentes capas.

EstructuraMINIX.jpeg

Capa 1

Esta es la capa que interactúa directamente con el hardware. Es la encargada de atrapar todas las interrupciones y trampas, de planificar y ofrecer a las capas superiores un modelo de procesos independientes y secuenciales para comunicarse mediante el uso de mensajes. En resumen cuenta con dos partes bien definidas: la primera trata todo lo referente a la programación de bajo nivel para brindar la abstracción de procesos a las capas superiores. La segunda parte gestiona los aspectos más mecánicos de los mensajes, como los buffers de envío y recepción de mensajes que se alojan en la memoria física, las verificaciones de destinos y todo lo referente al manejo físico de memoria en lo que respecta a los mensajes. Esta primera capa está está escrita en lenguaje ensamblador, el resto están escritas en lenguaje C.

Capa 2

Contiene todo lo concerniente a los procesos de E/S, uno por cada tipo de dispositivos (tareas). Como se ilustra en el gráfico, tenemos tareas para discos, impresoras, relojes, interfaces de red y tareas de sistema, que si bien no son dispositivos de sistema sí tienen por finalidad el servicio de copiado entre diferentes regiones de memoria para procesos que no cuentan con los privilegios para realizarlos ellos mismos. Todas las tareas de la capa 2 y el código de la capa 1 se combinan para formar un solo programa binario llamado kernel, aunque a pesar de que son compilados juntos cuando el kernel y los manejadores de interrupciones se están ejecutando estos tienen mayores privilegios que las tareas. De este modo se logra que el kernel pueda ejecutar todo tipo de instrucciones usando datos de cualquier parte del sistema, a fin de poder acceder a cualquier parte de la memoria y cualquier registro de procesador. Sin embargo, las tareas a pesar de no contar con los privilegios a nivel de kernel sí pueden acceder a cualquier región de memoria que pertenezca a un proceso menos privilegiado con el objetivo de realizar E/S para ellos.

Capa 3

Aglutina los procesos conocidos como procesos servidores. Se ejecutan en un nivel menos privilegiado que el kernel o las tareas, y no acceden directamente a los puertos de entrada y sálida. Tampoco pueden acceder a otra región de memoria que no sea la que le fue asignada. Para ello se vale de las llamadas al sistema (FORK, EXEC y BRK) las cuales son proporcionadas por el administrador de memoria (MM). El sistema de archivos (FS) realiza las llamadas al sistema para los archivos (READ, MOUNT y CHDIR). Cabe destacar que el sistema de archivos de MINIX está diseñado como “servidor de archivos” por lo que se podría mover a una máquina remota casi sin cambios. Otros servidores de esta capa son el servidor de reencarnación (RS), que permite reiniciar los drivers que se cierren por fallos u otras causas.

Capa 4

Finalmente aquí se alojan todos los procesos de usuario tales como shells, editores, compiladores, programas, etc.

Véase también[editar]

Enlaces externos[editar]