MINIX
MINIX | ||
---|---|---|
Parte deUnix | ||
MINIX 3.1.2a | ||
Información general | ||
Tipo de programa | sistema operativo tipo Unix | |
Desarrollador | Andrew S. Tanenbaum | |
Modelo de desarrollo | Software libre | |
Lanzamiento inicial | 1987 | |
Licencia | Licencia BSD | |
Estado actual | Descontinuado | |
Idiomas | inglés | |
Información técnica | ||
Programado en | C | |
Núcleo | MINIX | |
Tipo de núcleo | Micronúcleo | |
Plataformas admitidas | ||
Versiones | ||
Última versión estable | 3.4.0rc6( 09 de mayo de 2017 (7 años, 5 meses y 24 días)) | |
Enlaces | ||
MINIXes un clon delsistema operativoUnixdistribuido junto con sucódigo fuentey desarrollado por el profesorAndrew S. Tanenbaumen 1987.
En 1975 losLaboratorios Bellde laAT&T,publicaron el sistema operativoUnix V6,para 1977John Lionspublicó unas notas con el código fuente que se usaba en los cursos de sistemas operativos. Cuando losLaboratorios BellpublicaronUnix V7en 1979, prohibieron su uso para la enseñanza. Por lo que en 1984Andrew S. Tanenbaumcomenzó a escribir un clon deUnixpara lasIBM-PCconIntel 8086de ese tiempo, con el fin de usarlo en su clase en lugar del entonces prohibidoUnix.Terminado en 1987 pudo usarlo para enseñar a sus alumnos el diseño de sistemas operativos en laVrije UniversiteitdeÁmsterdam.
Su libro fue ampliamente adoptado, porque además de queUnixestaba bajo restricciones de licencia deAT&T,era demasiado complicado y corría sobre máquinas complejas; algo completamente antipedagógico, mientras que Minix fue escrito con fines pedagógicos y para una máquina muy accesible. En 1997 publicó Minix 2 y en el 2004, gracias al financiamiento de laUnion Europea,Minix 3 que es compatible conNetBSDy a prueba de fallas.
Gracias a su reducido tamaño, diseño basado en elparadigmadelmicronúcleo,y su amplia documentación, resulta bastante apropiado para personas que desean instalar unsistema operativocompatible con Unix en su máquina personal, así como aprender sobre su funcionamiento interno.
El primer Minix fue desarrollado para ser ejecutado en unIBM PCconmicroprocesadorIntel 8088o superior, aunque se han creado conversiones para otros sistemas y Minix 3, también corre en procesadores ARM.
Debido al enfoque puramenteeducacionalde 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 Torvaldsdecidió escribir su propionúcleode sistema operativo (Linux) compatible con Unix. En simbiosis con las herramientas deGNUsurgió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, lalicencia BSD,que es menos restrictiva que la de GNU, porque en palabras de Tenembaum, "está permitido todo excepto demandarlo".
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 laUniversidad Libre de Ámsterdampara ejemplificar los principios recogidos en su libro de textoOperating Systems: Design and Implementation(1987). Una parte del código enCdelnúcleo,elcontrolador de memoriay el sistema de ficheros de MINIX 1.0 se recogen en este libro.
Junto con el libro también había disponible undisquetecon el código fuente de MINIX y losbinarios,junto con un manual de referencia delsistema.
Tanenbaum creó originalmente MINIX para que fuera compatible con las arquitecturasIBMPCeIBMPC/AT,que eran las comunes en esa época.
MINIX 1.5, publicado en 1991, incluía soporte para MicroChannelIBMPS/2y también fue adaptado para las arquitecturasMotorola 68000ySPARC,soportandoAtari ST,Commodore Amiga,Apple Macintoshy plataformasSun SPARCstation.
También existió una adaptación no oficial a las arquitecturas compatibles conIntel 80386(en modo de32 bitsprotegido), National Semiconductor NS32532,ARMy 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 elsistema operativoSunOS.
Al decrementarse la demanda de las computadoras de arquitectura de68k,MINIX 2.0, publicado en 1997, sólo era compatible con las arquitecturasx86ySPARC.Fue el tema para la segunda edición del libro de Tanenbaum, en esta ocasión coescrito junto con Albert Woodhull, y fue distribuido en unCD-ROMincluido en el libro. MINIX 2.0 añadía compatibilidad conPOSIX1,soporte para arquitecturasIntel 80386y superiores de32 bitsy reemplazó los protocolos de red Amoeba incluidos en MINIX 1.5 porTCP/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 conIntelIA-32,que fue creada por dos investigadores de la Vrije Universiteit, la cual añadíamemoria virtualy soporte para el sistema gráficoX 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 deIA-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 comoBOCHS,Qemu,VMwareyVirtualPC.
La versión 3.1.5 fue lanzada el 5 de noviembre de 2009, y contieneX11,emacs,vi,cc,gcc,perl,python,ash,bash,zsh,ftp,ssh,telnet,piney cerca de 650 aplicaciones más, comunes a los sistemasUnix.Con la incorporación deX11,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 puede auto-reponer su salud, lo que él llamaself-healing,por lo que es ideal para sistemas que requieren alta fiabilidad.
Estructura de MINIX
[editar]Para comprender mejor la estructuramicrokernelde MINIX se detallan a continuación las diferentes capas.
- 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á escrita enlenguaje ensamblador,el resto están escritas enlenguaje 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 núcleo, aunque a pesar de que son compilados juntos cuando el núcleo y los manejadores de interrupciones se están ejecutando estos tienen mayores privilegios que las tareas. De este modo se logra que el núcleo 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 núcleo 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 elkernelo las tareas, y no acceden directamente a los puertos de entrada y salida. 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]- Página web oficialde Minix 3.0(en inglés)
- Página web no oficial,sitio del desarrollo de la versión 2.0.4(en inglés)
- Lecciones de Minix(en español)